Может ли балансировщик нагрузки Apache определить, не работает ли один из его членов?

Мне нужно знать, может ли Apache разумно и автоматически определить, не работает ли один из его balanerMembers, и, следовательно, освободить его от обслуживания запросов?

PS Внутренние серверы не будут генерировать пульс.

Спасибо

Комментарии: я использую mod_proxy в apache 2.4.7. Моя конфигурация для примера сайта похожа на приведенную ниже. Моя проблема заключается в том, что один из внутренних серверов перестает отвечать на запросы, Мой балансировщик нагрузки по-прежнему отправляет запросы на неработающий внутренний сервер и клиенты жалуются. Что не так с приведенным ниже конфигом:

<Proxy balancer://X_Balancer>
    BalancerMember http://firsthost.sth/ status=-SE
    BalancerMember http://anotherhost.sth/ status=-SE
    ProxySet lbmethod=bybusyness
</Proxy>
<VirtualHost IPofloadbalancer:80>
    ServerName domainname
    SSLProxyEngine On
    Include /*/modsecurity.conf
    <location />
        ProxyPass balancer://X_Balancer/
        ProxyPassReverse balancer://X_Balancer/
    </location>
</VirtualHost>

2 ответа

Решение

Если вы используете mod_proxy в Apache 2.2, у вас ограниченные параметры конфигурации, но Apache будет обнаруживать не отвечающие на балансировщика и отправлять запросы всем оставшимся балансировщикам.

В Apache 2.4 уже есть несколько дополнительных опций, но для более сложных опций вам, как правило, лучше использовать более специализированное программное обеспечение для балансировки нагрузки.

После ваших комментариев: Это зависит от того, как BalmrMember перестает отвечать. Если соединение все еще может быть установлено, но нет кода ошибки и ответа нет, вы можете воспользоваться настройкой timeout а также failontimeout опции.

<Proxy balancer://X_Balancer>
    BalancerMember http://firsthost.sth/ status=-SE timeout=5 retry=60
    BalancerMember http://anotherhost.sth/ status=-SE timeout=5 retry=60
    ProxySet lbmethod=bybusyness failontimeout=on
</Proxy>

timeout=5 Тайм-аут соединения в секундах. Число секунд, в течение которых Apache httpd ожидает данные, отправленные с / на серверную часть.
failontimeout=on Если установлено, тайм-аут чтения ввода-вывода после отправки запроса к бэкэнду вынудит работника в состояние ошибки. Восстановление работника ведет себя так же, как и другие ошибки работника.

BalancerMember http://firsthost.sth/ connectiontimeout = 5 retry = 5 ping = 2
BalancerMember http://anotherhost.sth/ connectiontimeout = 5 retry = 5 ping = 2

Попробуйте в вышеуказанном направлении! Просмотрите изменения в протоколах ajp.

Другие вопросы по тегам