Muito disso depende de você estar fazendo algum gerenciamento de sessão / estado nos Tomcats. Se a sessão de um usuário for destruída pela reinicialização, a rolagem não impedirá o impacto do usuário (isso pode impedi-lo de ver um 500, mas não de ter que iniciar sua sessão novamente). Se você não estiver usando sessões persistentes, provavelmente não precisa se preocupar com isso.
O HAproxy e outros balanceadores de carga têm maneiras de tentar determinar rapidamente se o servidor por trás dele está ativo ou não e redirecionar o tráfego com base nisso (a "verificação de integridade" no HAProxy). É impossível para eles fazer isso perfeitamente, no entanto. Com o Tomcat, não há apenas "up" e "down"; há "para cima, como em responder na porta, mas as coisas ainda não estão prontas". Portanto, você não deve confiar no LB para impedir completamente o impacto do usuário - mesmo com uma boa verificação de integridade, haverá um intervalo em que você está recebendo tráfego para um nó ruim.
O que fazemos com uma implementação contínua é tirar o servidor do balanceador de carga, mexer / reiniciar o nó, esperar até que ele passe por um teste / monitor automatizado, depois colocá-lo de volta e, em seguida, passar para o próximo servidor. Isso é mais fácil com um balanceador de carga que tem uma API que você pode chamar remotamente (como em um script) para desabilitar um servidor - nosso antigo Netscaler fez isso, mas o HAProxy não. Com HAProxy você tem que editar a configuração e reiniciar (triste) ou você pode alterar a verificação de saúde para onde você pode manipulá-lo - como, talvez, ele verifica um arquivo mágico que você renomeia quando você quer omitir esse nó. Você tem que esperar a verificação de saúde disparar e o nó sair do cluster, mas você deve estar bem.
Eu encontrei esta postagem que tem uma solução relacionada ao iptables para essa postagem problema ...