问题描述
使用阿里云负载均衡SLB时,会话保持的功能不生效。
问题原因
可能的问题原因如下:
负载均衡SLB的监听配置中未开启会话保持功能。
会话保持时间设置过小。
使用HTTP/HTTPS监听,当后端服务器返回4XX的HTTP状态码时,报文中无法插入会话保持所需的Cookie,导致会话保持失效。
使用HTTP/HTTPS监听,当后端服务器返回302重定向的HTTP状态码时,会话保持中的
SERVERID
字串将被改变,导致会话保持失效。
解决方案
如何检查负载均衡会话保持不生效问题:
登录阿里云管理控制台,进入负载均衡SLB的实例管理页面,确认监听选项卡中会话保持状态为已开启。如果状态为关闭,请参见添加TCP监听,开启会话保持功能。
检查是否调整过会话保持的超时时间。如果超时时间设置过小,可能会导致会话保持失败。可以尝试使用默认超时时间或者适当增加超时时间,同时观察会话保持状态。关于如何观察会话保持状态,请参见如何使用curl命令测试CLB会话保持的有效性。
在浏览器端捕抓请求与响应的回复信息,或使用抓包软件分析是否存在如下报文。如果存在如下报文,则建议改用TCP监听。因为TCP监听是通过源客户端的IP地址进行会话保持的。您还可以在后端Web程序中插入Cookie,并对其进行判断,以确保会话保持的有效性。
302重定向的报文:负载均衡植入Cookie时,如果后端ECS实例返回302重定向的报文,将改变会话保持中的
SERVERID
字串,导致会话保持失效。4XX响应码的报文:负载均衡无法在4XX响应码的报文中插入会话保持所需的Cookie。
相关文档
适用于
负载均衡SLB