问题
应用在单节点部署完成后,在生产环境一般会启用至少2个Pod来运行,保证可不间断提供服务。
但是启用多节点( >=2个Pod)后会,使用时会发现应用在不同Pod间跳来跳去、登录状态不能保持的现象。
解决
本TKE集群访问链路:客户端 ==>> Ingress(CLB)==>> Service(主机端口)==>> 工作负载
- Ingress是七层的,基于Cookie插入的会话保持
- Service是四层的,基于源IP做会话保持
打开应用会话保持,需要把七层和四层的会话保持都打开。
设置步骤:
1)开启CLB的会话保持
控制台 - CLB ID - 监听器管理 - 在应用的域名的规则右侧点击修改 - 打开会话保持,设置保持时间。(注意:http和https两个监听器都要打开!!)
2)开启Service的会话保持
控制台 - 容器服务 - 容器ID - 服务于路由 - Service,找到对应的Service,最右侧操作栏点击 更新配置 - 显示高级配置 - 在Session Affinity方式选择 ClientIP,并设置会话保持时间。(注意:这里的会话保持时间可以与步骤1)的Cookie会话保持时间一样,也可以不一样,根据应用需求来设置)
Tips:
Service是四层的,Ingress是七层的,四层是基于源IP做会话保持的,七层是基于Cookie 插入的会话保持,相关说明可参考
负载均衡 会话保持 - 操作指南 - 文档中心 - 腾讯云