我们有带有入口控制器的 k8s-cluster(nginx 版本:nginx/1.17.8,入口:rke2-ingress-nginx:1.36.301) - 4 个副本(每个工作人员一个)
为了提高性能并能够重用多个副本之间的会话,我尝试激活 ssl_session_cache 和票证。
ingress-configmap 具有以下数据块:
ssl-session-cache-size: 100m
ssl-session-tickets: "true"
ssl-session-timeout: 1440m
ssl-protocols: "TLSv1.2"
ssl-session-ticket-key: "RESULT OF openssl rand 80 | openssl enc -A -base64"
当我将副本数减少到 1 时,我得到了正确的握手,并且我可以在没有握手的情况下在进一步的请求中重用票证。
当我将副本数增加到> 1,并在第二个(第三个,第四个......)请求(循环)中发送会话票证时,我每次都会从服务器获得一张新票证,包括。充分握手。所以会话恢复不起作用。
Configmap 自动更新正在工作,每个副本具有相同的 nginx.conf 并且所有副本具有相同的 /etc/nginx/tickets.key
Ingress-controller-pod 日志在更新 configmap 时没有问题:
I0929 13:56:50.165135 8 controller.go:137] 检测到配置更改,需要重新加载后端。
I0929 13:56:50.267572 8 controller.go:153] 后端成功重新加载。
更新 configmap 后重新启动所有 ingress-pods 也无济于事。
nginx.conf 中 configmap 的结果:
ssl_protocols TLSv1.2;
ssl_early_data off;
# turn on session caching to drastically improve performance
ssl_session_cache builtin:1000 shared:SSL:100m;
ssl_session_timeout 1440m;
# allow configuring ssl session tickets
ssl_session_tickets on;
ssl_session_ticket_key /etc/nginx/tickets.key;
谢谢!