Есть задача от архитектора по балансированию нагрузки между двумя нодами.
MAIN_URL=http://main:port/
AUX_URL=http://aux:port/
Сам балансер запущен на main на том же порту (тот же инстанс апача, это обязательное требование). Идея архитектора была в том, чтобы все запросы шли в нормальном режиме на main, а в случае нагрузки перебрасывались на aux.
Прокси конфиг, выданный архитектором:
<Proxy balancer://mybalancer>
BalancerMember $MAIN_URL keepalive=On connectiontimeout=5 retry=180
BalancerMember $AUX_URL keepalive=On connectiontimeout=5 retry=180
# byrequests для целей тестирования.
ProxySet lbmethod=byrequests stickysession=ROUTEID
</Proxy>
<IfDefine IS_AUX>
ProxyPass /myapp balancer://mybalancer/myapp
ProxyPassReverse /myapp balancer://mybalancer/myapp
</IfDefine>
Вроде бы сделано всё по мануалам (я специально гуглил, чтобы понять, что здесь происходит).
Теперь мне надо это заставить работать. Оба апача на обоих хостах стартуют нормально, все сервисы отзываются и работают. Но балансировка работает как-то странно.
Тестирую с помощью ab. Если запросы посылать на MAIN_URL/myapp, они выполняются только на main, загрузка не распределяется на вторую ноду. Если запросы посылать на AUX_URL/myapp, он перенаправляет все запросы на main. Я так понимаю, это из-за секции IfDefine IS_AUX, т.е. поведение ожидаемое, но при этом тоже не распределяет равномерно между нодами.
У меня есть подозрение, что апач не может держать балансер и мембер на одном и том же хосте+порте, и здесь нужно использовать какой-нибудь отдельный VirtualHost (?) для main ноды. Но я апач и его конфиги вижу второй раз в жизни, поэтому не могу авторитетно возразить архитектору.
Что здесь вообще можно проверить? Как посмотреть, почему апач не распределяет загрузку через балансер? Или действительно на одном хосте нельзя держать балансер и ноду? Я не смог нагуглить подтверждение.