Назад | Перейти на главную страницу

Как предотвратить неэффективное распределение нагрузки HAProxy с использованием алгоритма roundrobin?

Мы запускаем веб-серверы за балансировщиком нагрузки 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 запись на каждом балансировщике.