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

mod_proxy_balancer не удаляет мертвые серверы

Мы используем текущую конфигурацию (слегка запутанную) для балансировки двух веб-серверов и четырех серверов приложений (Tomcat) с использованием JSESSIONID; каждый веб-сервер имеет такую ​​же конфигурацию для mod_proxy

<Proxy balancer://mycluster>
BalancerMember ajp://192.168.0.1:8009 route=app0
BalancerMember ajp://192.168.0.2:8009 route=app1
BalancerMember ajp://192.168.0.3:8009 route=app2
BalancerMember ajp://192.168.0.4:8009 route=app3

ProxySet stickysession=JSESSIONID
ProxySet lbmethod=byrequests
</Proxy>

Мы видим, что если сервер приложений полностью недоступен, либо из-за удаления сетевого адаптера в VMWare, либо из-за выключения сервера, некоторые веб-серверы все равно будут перенаправляться на него даже после 60 секунд повторной попытки. Это, конечно, вызывает проблемы у пользователей, которые были перенаправлены на этот теперь мертвый сервер приложений.

Однако, если мы просто отключим Tomcat на серверах приложений, mod_proxy удалит их из пула в течение 60 секунд и правильно переместит трафик на рабочий сервер. Конечно, если мы удалим его вручную через диспетчер-балансировщик, он сразу же прекратит маршрутизацию, но ручное вмешательство неприемлемо.

Я просматривал документацию, но не вижу никаких параметров, которые не были установлены, которые могли бы вызвать это. Я не могу представить, что mod_proxy настолько глуп, что это поведение по умолчанию. Чего нам может не хватать в этой конкретной конфигурации?

Я надеюсь, что это не совсем очевидная и вопиющая неправильная конфигурация, поэтому мы будем благодарны за любую помощь.