Estou usando apache2 mod_proxy
e mod_proxy_balancer
para equilibrar a carga em 4 instâncias separadas tomcat8 em servidores diferentes. Estou usando portas AJP diferentes para cada instância do tomcat e usando a diretiva jvmRoute no tomcat server.xml
, desta forma:
Primeira instância:
<Connector port="[port1]" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
Segunda instância:
<Connector port="[port2]" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
E assim por diante.
Na configuração do apache2, defino um cluster, assim:
<Proxy balancer://myCluster>
BalancerMember ajp://[ip1]:[port1] route=tomcat1 loadfactor=1
BalancerMember ajp://[ip2]:[port2] route=tomcat2 loadfactor=1
BalancerMember ajp://[ip3]:[port3] route=tomcat3 loadfactor=1
BalancerMember ajp://[ip4]:[port4] route=tomcat4 loadfactor=1
ProxySet lbmethod=bybusyness
ProxySet stickysession=JSESSIONID
Order Deny,Allow
Deny from none
Allow from all
</Proxy>
E as diretivas proxypass:
ProxyPass / balancer://myCluster/
ProxyPassReverse / balancer://myCluster/
...
Funciona como esperado, faz o balanceamento de carga como deveria e, se uma instância do Tomcat estiver desativada, o load blaancer não redireciona para essa instância. Tudo está funcionando bem até este ponto.
Mas o problema é que, quando eu acionar a implantação nas instâncias do tomcat, eu as paro uma por uma, carrego o novo artefato e reinicio a instância. Mas o balanceador de carga redireciona a instância do tomcat mesmo antes de os artefatos do aplicativo da web serem implementados, inicializados e preparados. Assim, o usuário enfrenta a tela em branco se fizer uma solicitação para uma URL que ainda não está pronta.
Como posso lidar com essa situação para evitar o redirecionamento até que o aplicativo da Web esteja completamente pronto? Como posso verificar o status deles?
Qualquer ajuda é muito apreciada.