首页/云/云网络与负载均衡速查/会话保持不生效的排查
负载均衡54 条

会话保持不生效的排查

会话保持异常的典型形态是同一用户请求落到不同后端,或个别后端连接堆积。排查时先确认保持开关与超时,再核对客户端是否携带 Cookie、源地址是否被上游改写,最后检查多层代理的干扰。

会话保持为什么不生效

会话保持异常有两种典型形态:同一用户的请求被分发到不同后端(表现为登录状态丢失、购物车为空),或者个别后端连接堆积(表现为流量严重不均)。排查思路是先确认保持开关与超时设置,再核对客户端是否携带 Cookie、源地址是否被上游改写,最后检查多层代理的干扰。顺序很重要——从最靠近负载均衡的配置往上游推,比一上来就去抓包高效。

基本信息

先确认保持开关是否开启、保持超时是否小于业务会话时长
七层抓包或日志确认请求是否带 Cookie、响应是否下发 Set-Cookie
四层确认客户端源 IP 是否被上游 NAT 或代理改写
多层链路负载均衡前还有 CDN 或 WAF 时,源 IP 与 Cookie 会在各层变化

典型使用场景

  • 用户登录后跳回未登录状态,排查七层会话保持的 Cookie 是否生效
  • 购物车或表单分步提交丢数据,确认同一会话是否落在一台后端
  • 个别后端 CPU 明显偏高,检查四层保持把大量长连接固定到同一台
  • 接入 CDN 后发现保持失效,核对源地址是否已被改写

带 Cookie 复现请求

带 Cookie 复现请求
curl -sv -H 'Host: a.example.com' -H 'Cookie: SERVERID=xxx' \
  http://<LB地址>/ 2>&1 | grep -i -E 'cookie|x-forwarded'
# 对比多次请求的响应头,确认是否持续落到同一后端

常见失效原因

现象可能原因
请求不带 Cookie客户端禁用或未保存 Cookie
Cookie 存在但转发乱跳保持超时已过期
四层保持失效源地址被上游 NAT 改写
接入新代理后失效中间层改变了源 IP 或 Cookie
在链路里新加代理层之后要重新评估会话保持:每层都可能改变源 IP 与 Cookie。

四层与七层的差异

四层会话保持基于源地址,七层基于 Cookie,机制选错就会出现「配置明明打开了却不生效」。七层保持更精确,因为同一出口地址下的不同用户也能被区分开;四层保持更简单,但在大量用户共用一个出口(企业专线、运营商 NAT)时,会把许多互不相关的用户固定到同一台后端,反而造成严重不均。因此能插入 Cookie 的场景优先用七层保持,四层保持留给无法携带 Cookie 的协议。

易错点

  • 只检查负载均衡配置,忽略上游 CDN 或 WAF 对源地址的改写
  • 保持超时与后端会话超时不匹配,中途失效
  • 把保持超时设得极长,单台后端长期承接大量连接导致不均
  • 应用自行下发与负载均衡同名的 Cookie,两套机制互相覆盖

数据来源与参考

  • 阿里云 CLB 会话保持排查文档
  • 腾讯云 CLB 会话保持常见问题
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌