Время ожидания mod_proxy (502) и аварийное переключение - PullRequest
4 голосов
/ 14 мая 2009

, поэтому мы запускаем кластер из 2+ внутренних серверов (если не считать серверов JBoss), которые сбалансированы нагрузкой с помощью Apache 2.2. Время от времени может случиться, что внутренние серверы перестанут отвечать на запросы (то есть они будут ждать целую вечность, чтобы ответить на запрос, но не будут немедленно закрывать соединение). Это, естественно, приведет к ошибке 502 «Bad gateway». Я понимаю балансировщик нагрузки, который заключается в том, что он должен переключаться при сбое и перенаправлять запросы на остальные экземпляры.

Я видел, что узел балансировщика может перейти в состояние ошибки, но никогда не мог принудительно полностью отправить его в это состояние (т.е. сделать это после того, как первые 502 были обнаружены). Я что-то упускаю или это просто особенность, которую я желаю? Ох, и вот мой конфиг:

<Proxy balancer://s>
    Order deny,allow
    Allow from all

    BalancerMember http://host1:8080/ route=h1 timeout=20 retry=40
    BalancerMember http://host2:8080/ route=h2 timeout=20 retry=40
</Proxy>

# Distribute by Round Robin, use Sticky Sessions
ProxyPass / balancer://s/ stickysession=JSESSIONID lbmethod=byrequests nofailover=On
ProxyPassReverse /  http://host1:8080/
ProxyPassReverse /  http://host2:8080/

Лучший, Себастьян

1 Ответ

4 голосов
/ 16 мая 2009

Вы указали nofailover = On, что означает, что оно не будет переключаться при сбое, следовательно, 502 ошибки. Если вы хотите, чтобы он был переключен при сбое, он должен быть nofailover = Off, что означает, что он должен переключаться при сбое.

...