如何检查负载均衡器会话保持是否生效
负载均衡器(LB)支持的会话保持类型
负载均衡器(Load Balancer,简称 LB)支持源 IP 地址、负载均衡器 Cookie 、植入 Cookie 前缀、重写 Cookie 、后端 Cookie 实现会话保持,详细信息见LB会话保持。
顺带一提,长连接和会话保持没有必然联系。长连接是指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。会话保持是指弹性负载均衡将属于同一个会话的请求都转发到同一个服务器进行处理。
如何测试会话保持是否生效?
准备工作
在后端云服务器中创建测试页面,测试页面的名称需要一致,分别写入不同的内容,以此区分每个后端
curl 命令测试
四层监听:
四层监听基于源 IP 算法作为负载方式来实现会话保持。
多次访问测试页面,查看返回结果是否一致,若返回结果一致说明会话保持已生效,反之则说明会话保持无效
curl http://1.1.1.1/check.html
七层监听:
如果会话保持默认模式是植入 Cookie ,而 curl 命令默认不保存和发送 Cookie。需要预先保存相应的 Cookie,再进行测试。否则,curl 测试结果将是随机的,影响测试结果的准确性。
1)访问测试页面,保存 Cookie 值
curl -D test.cookie http://1.1.1.1/check.html
2)使用保存的 Cookie 多次访问,查看返回结果
curl -b test.cookie http://1.1.1.1/check.html
如果多次访问返回结果一致,说明会话保持已生效,反之则说明会话保持无效
如何排查弹性负载均衡会话保持不生效问题?
- 查看后端服务器组上是否开启了会话保持。
- 查看后端云服务器的健康检查状态是否正常,如果异常,流量会切换到其他后端云服务器,导致会话保持失效。
- 如果选择的是源 IP 算法,需要注意请求到达弹性负载均衡之前 IP 是否发生变化。
- 如果是 HTTP 或 HTTPS 监听器,配置了会话保持,需要注意发送的请求是否带有 Cookie ,如果带有 Cookie ,则观察该 Cookie 值是否发生了变化(因为七层会话保持基于 Cookie )。