Мы запускаем веб-серверы за балансировщиком нагрузки EC2, и, в свою очередь, эти серверы запускают HAProxy и распределяют нагрузку между рабочими серверами.
Предполагая равные веса серверов, похоже, что следующий сценарий будет разыгрываться, если EC2 эффективно использует алгоритм балансировки нагрузки roundrobin:
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 случайный первый сервер в своем алгоритме раундробина?
По моему опыту, haproxy всегда запускается с первого сервера (не случайного). Если то, что вы описываете, действительно происходит, просто поверните список серверов на 1 запись на каждом балансировщике.