Como posso implementar um serviço de alta disponibilidade com o JBoss 5?

1

Eu tentei implementar um serviço de alta disponibilidade com o JBoss e o Apache.

A arquitetura é:

  Apache
|         |
|         |
JBoss1 JBoss2 

Existe um balanceador implementado do Apache para o JBoss'es, e está funcionando bem. Às vezes, o pedido é feito pelo JBoss1 e, às vezes, pelo JBoss2, no entanto, se algum Jboss cair, o balanceador ainda envia pedidos para ele, então o aplicativo às vezes funciona e às vezes não.

Como posso implementar um serviço que detecta que, se algum JBoss estiver inoperante, ele redireciona automaticamente o tráfego para o outro nó?

Eu tentei com o hearbeat, mas não consigo resolvê-lo.

    
por Andres 12.07.2012 / 21:05

1 resposta

1

É um recurso interno de mod_proxy + mod_proxy_balancer ou mod_jk.

Eles contam com o protocolo AJP: link

Basta seguir este tutorial.

Aqui um exemplo de configuração HTTP do Apache:

<VirtualHost *:80>

    ServerName web-gui-acceptance.myorg.com
    ServerAlias web-gui-acceptance


    ProxyRequests Off
    ProxyPass /web-gui balancer://jbosscluster/web-gui stickysession=JSESSIONID nofailover=On
    ProxyPassReverse /web-gui http://srvlnx01.myorg.com:8080/web-gui
    ProxyPassReverse /web-gui http://srvlnx02.myorg.com:8080/web-gui

    <Proxy *>
      AuthType Kerberos
      [...]
    </Proxy>

    <Proxy balancer://jbosscluster>
        BalancerMember ajp://srvlnx01.myorg.com:8009 route=SRVLNX01_node1
        BalancerMember ajp://srvlnx01.myorg.com:8009 route=SRVLNX02_node1
        ProxySet lbmethod=byrequests
    </Proxy>

</VirtualHost>

E para cada instância do JBoss:

vi $ JBOSS_HOME / server / default / deploy / jbossweb.sar / server.xml

<Engine name="jboss.web" defaultHost="localhost" jvmRoute="SRVLNX01_node1">
    [...]
</Engine>

Você também pode dar uma olhada em HA Proxy

    
por 30.07.2012 / 12:27