介绍负载均衡请求不均衡的可能原因和排查方法。
可能原因
负载均衡请求不均衡可能有以下几种原因:
- ECS实例请求连接数较少。
- 不同ECS实例的性能不同导致请求不均衡。
说明 ECS实例内存使用情况不能准确的判断请求转发是否均衡。
- 开启了会话保持功能 。
配置了会话保持,当访问负载均衡实例的客户端又很少时,容易导致不均衡,尤其在使用少量客户端对负载均衡进行测试的时候。例如TCP监听,开启了会话保持(四层是基于来源地址做会话保持),使用一台客户端对负载均衡实例进行压测,就会导致不均衡。
- ECS健康检查异常 。
后端服务器ECS的健康建状态异常会导致不均衡,尤其在压测的时候容易忽略后端服务器ECS的健康检查状态,如果有后端服务器ECS健康检查失败或者健康检查状态经常跳跃(好到坏,又从坏到好,反复变化)必然会导致不均衡。
- TCP Keepalive保持长连接 。
后端服务器ECS有些开启了TCP Keepalive保持长连接,而有些又没有开启,则连接会在保持长连接的后端服务器上堆积,造成不均衡。
排查和解决方法
- 查看后端各台ECS的权重是否相同。
- 在相关时间段内是否有健康检查失败或波动现象,查找波动的原因;或者健康检查没有配置正确的响应码2xx和3xx,导致了健康检查显示正常,但后端服务有异常。
- 是否同时使用了加权最小连接数(WLC)调度方式和会话保持,如果是,尝试改为加权轮询(WRR)算法和会话保持。