Usamos a configuração atual (ligeiramente ofuscada) para balancear 2 servidores da web contra 4 servidores de aplicativo (Tomcat), usando JSESSIONID; cada servidor web tem exatamente esta mesma configuração para 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>
Estamos vendo que, se um servidor de aplicativos estiver totalmente inacessível, seja por meio da remoção de NIC no VMWare ou do servidor, alguns servidores da Web ainda serão roteados para ele, mesmo após os 60 segundos de Nova tentativa. Isso, obviamente, causa problemas para os usuários que foram roteados para o servidor de aplicativos que agora está inativo.
No entanto, se simplesmente desligarmos o Tomcat nos servidores de aplicativos, o mod_proxy os removerá do pool dentro de 60 segundos e deslocará corretamente o tráfego para um servidor ativo. É claro que, se removê-lo manualmente por meio do balancer-manager, ele interromperá imediatamente o roteamento, mas a intervenção manual não será aceitável.
Eu tenho procurado na documentação, mas não vejo nenhum parâmetro que não tenha sido configurado para causar isso. Eu não posso imaginar que mod_proxy é tão estúpido que este é o comportamento padrão. O que poderíamos estar faltando nessa configuração específica?
Espero que esta não seja uma má e óbvia configuração incorreta, então qualquer ajuda é muito apreciada.
Tags load-balancing mod-proxy