Alta disponibilidade do aplicativo da web Tomcat

1

Eu configurei o clustering apache-tomcat (Ubuntu Servers) e usei a técnica de clustering suportada pelo tomcat com o mod_jk seguindo o link que é claro e fácil de seguir.

Eu fiz isso na minha LAN com three computers 1 as LB and other two as tomcat web servers e pensei em implementar isso para produção assim que eu estiver completamente satisfeito com a configuração.

Eu segui muitos links e o link que colei é o deles e eu o configurei em diferentes máquinas físicas. A configuração é successful e senti que é muito fácil configurá-lo. Eu chequei parando um servidor web tomcat e imediatamente começou a enviar pedido para o outro servidor. Tanto quanto sei, estou claro que esta configuração suporta tanto HA & LB.

Abaixo estão os detalhes do agrupamento do apache tomcat:

1 Load Balancer(192.168.1.100)
2 web Servers(192.168.1.101, 192.168.1.102)

On all the three servers, I installed apache2 & tomcat6 and configured tomcat to run on port 80 with mod_jk on all the servers.

Load Balancer:

Configured apache2 and tomcat with mod_jk setup(both are running on port 80)
As per the link I setup workers.properties with same default ports(as I'm using different machines)


Web Servers:

Let Actual site: www.mydomain.com which is pointing to LB
Configured apache2 and tomcat with mod_jk setup(both are running on port 80)

I can access web application by pointing the browser to following:
http://192.168.1.101/myapp
http://192.168.1.102/myapp

In either of the web servers I configured tomcat virtual hosting with actual site name(www.mydomain.com) as Host Name

Eu tenho um problema com o aplicativo jact do tomcat. Em qualquer servidor da Web, se o diretório myapp for removido de aplicativos da Web, o balanceador de carga ainda redirecionará para esse servidor da Web e o usuário terá que enfrentar a página de erro 404 , que nem o apache nem o tomcat identificam e redirecionam para outros servidores da Web disponíveis. / p>

Alguém tem alguma técnica para que as solicitações do cliente sejam redirecionadas para outros servidores da web no cluster quando o aplicativo solicitado (myapps) em webapps não estiver disponível em um servidor da web?

Obrigado!

Atualizar : 1

Tentando a diretiva abaixo de trabalhador no workers.properties de load balancer . Agora, a página de erro 404 não é exibida quando myapp em webapps é removido, mas mostra 503 de erro (isso geralmente é mostrado quando o tomcat é interrompido). Mas ainda não poderia redirecionar para outro servidor disponível quando myapps é removido.

worker.<worker-name-here>.fail_on_status=-404,-500,503
    
por user53864 04.08.2011 / 15:44

1 resposta

1

Eu sugiro strongmente usar uma ferramenta projetada para fins de balanceamento de carga, como o haproxy. Você pode definir verificações de back-end e, assim, evitar o envio de solicitações para aplicativos indisponíveis com muita flexibilidade.

Sua solução também não é HA, já que o balanceador de carga é um SPOF (ponto único de falha). Você pode querer adicionar outra máquina e usar keepalived para failover.

O haproxy pode ser executado em qualquer porta que você desejar, você pode equilibrar diferentes tipos de tráfego, não apenas http e ao mesmo tempo configurar frontends (pontos de entrada de balanceamento de serviço) e back-ends (contêiner para instâncias de serviço e comportamento de balanceamento) . Você pode ver um exemplo aqui: link

Para a parte de failover, eu usaria keepalived. Ele verifica se o balanceador de carga ativo está disponível e faz o failover para a máquina secundária, se não estiver, flutuando seus endereços IP virtuais.

Você pode verificar este link para um exemplo: link

    
por 09.08.2011 / 10:56