我们在 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 个条目即可。