如何防止 HAProxy 使用循环算法无效地分配负载?

如何防止 HAProxy 使用循环算法无效地分配负载?

我们在 EC2 负载均衡器后面运行 Web 服务器,反过来这些服务器运行 HAProxy 并在工作服务器之间分散负载。

假设服务器权重相等,如果 EC2 有效地使用循环负载平衡算法,似乎会出现以下情况:

Server 1 handles request, sends to backend 1
Server 2 handles request, sends to backend 1
Server 3 handles request, sends to backend 1

Server 1 handles request, sends to backend 2
Server 2 handles request, sends to backend 2
Server 3 handles request, sends to backend 2

Server 1 handles request, sends to backend 3
Server 2 handles request, sends to backend 3
Server 3 handles request, sends to backend 3
...

如果会话长度大致相同,则负载无法正确平衡。假设权重相等,HAProxy 是否会在其轮询算法中随机选择第一个服务器?

答案1

根据我的经验,haproxy 总是从第一台服务器(而不是随机的服务器)启动。如果您所描述的情况确实发生,只需在每个平衡器上将服务器列表旋转 1 个条目即可。

相关内容