Среда: 5 экземпляров apache (balancerX), которые распределяют трафик между 3 серверами приложений (serverX).
При конфигурации mod_balancer по запросу с тем же коэффициентом нагрузки server1 имеет огромную нагрузку, в то время как другие имеют меньшую нагрузку, поэтому конфигурация балансировщика применяется одинаково ко всем серверам независимо от их реальной нагрузки, поэтому всегда первый подключение к балансировщику1,2,3,4 или 5 перенаправляется на server1. Поскольку пользователям назначаются балансировщики случайным образом из-за HW-балансировщика (которым, к сожалению, нельзя управлять), я не могу контролировать, чтобы 3 сервера получали одинаковое количество подключений.
Как я могу настроить одинаковую нагрузку на server1,2 и 3?
Схема:
Balancer1 Balancer2 Balancer3 Balancer4 Balancer5
--------- --------- --------- --------- ---------
Server1 Server1 Server1 Server1 Server1
Server2 Server2 Server2 Server2 Server2
Server3 Server3 Server3 Server3 Server3
Я думаю, что этого будет сложно добиться идеально. Но я бы начал с изменения порядка BalancerMember
директивы на ваших 5 серверах apache, поэтому они различны на каждом сервере. Что-то вроде:
Balancer1 Balancer2 Balancer3 Balancer4 Balancer5
--------- --------- --------- --------- ---------
Server1 Server2 Server3 Server1 Server2
Server2 Server3 Server1 Server3 Server1
Server3 Server1 Server2 Server2 Server3
Вам понадобится 6-й сервер apache, чтобы он работал на 100%.
Обратите внимание, что следующие параметры относятся к Apache v2.4. Если вы используете v2.2, используйте только первое предложение. Я бы также попробовал различные методы балансировки нагрузки, чтобы увидеть, имеет ли это значение. Варианты lbmethod=bybusyness
и lbmethod=bytraffic
(убедитесь, что вы загрузили соответствующие модули). Если ваши базовые серверы также используют Apache, вы также можете попробовать lbmethod=heartbeat