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

我们在EC2负载均衡器后面运行Web服务器,然后这些服务器运行HAProxy并在工作服务器之间传播负载。

假设相同的服务器权重,如果EC2有效地使用roundrobin负载平衡algorithm,看起来好像下面的情况:

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会在其roundrobinalgorithm中select一个随机的第一台服务器吗?

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