Cluster Standalone EAP 6/JBoss AS 7: MacBook e Ubuntu


A Red Hat veio com tudo com o novo JBoss AS 7, e dessa vez a nova versão do servidor de aplicações de código aberto mais conhecido do mundo tem suporte completo à especificação JEE 6 e sobe em pouco mais de dois segundos.

Depois de baixar e fazer os primeiros testes, resolvi criar um tutorial que ensina a criar um cluster standalone em duas máquinas. Este é o tipo mais simples de cluster, pois é executado em duas máquinas diferentes. Como cada JBoss está sendo executado em uma máquina dedicada, podemos definir o cluster como Horizontal.

Antes de iniciarmos, precisamos saber os IPs dos nós envolvidos:

  1. IP do MacBook: 192.168.11.50
  2. IP do Ubuntu:  192.168.11.70

Pra descobrir o IP de cada máquina digite no Terminal:

ifconfig | grep inet

Dica para habilitar o SSH no MacBook:
  • Systems Preferences –> Sharing –> Marque a opção Remote Login.

Para verificar se a operação teve sucesso tente acessar o MacBook da máquina Ubuntu digitando: ssh usuarioDoMacBook@ipDoMacBook, no meu caso:

ssh sergiofantin@192.168.11.50

Digite login/senha para o usuário do MacBook.

Instalando o JBoss AS 7

Cada máquina irá precisar de uma instalação do JBoss. Para isso baixe o JBoss 7 aqui: http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.tar.gz

  • Descompacte o JBoss 7 no diretório raíz do usuário de cada máquina, ou em outro diretório de sua escolha:

tar -vzxf jboss-as-7.1.1.Final.tar.gz

Subindo a JBoss 7 no Ubuntu

  • Aponte o terminal para o diretório bin do JBoss:

cd ~/jboss-as-7.1.1.Final/bin

  • Execute o seguinte comando:

./standalone.sh -c standalone-ha.xml -b 192.168.11.70 -u 230.0.0.4 -Djboss.server.base.dir=../standalone -Djboss.node.name=nodeUbuntu

Importante:

Para que o cluster funcione corretamente, tenha certeza que:

  • Os dois servidores devem ter o mesmo endereço de multicast: -u 230.0.0.4
  • Os dois servidores devem ter nomes diferentes: O nó Ubuntu foi chamado de nodeUbuntu e o nó MacBook de nodeMacBook
  • Os dois servidores devem ser executados nos respectivos endereços IPs de suas máquinas: O nó Ubuntu -b 192.168.11.70 e o nó MacBook -b 192.168.11.50

Saída no terminal:


16:40:15,166 INFO  [stdout] (pool-14-thread-1) ——————————————————————-
16:40:15,170 INFO  [stdout] (pool-14-thread-1) GMS: address=nodeUbuntu/web, cluster=web, physical address=192.168.11.70:55200
16:40:15,175 INFO  [stdout] (pool-14-thread-1) ——————————————————————-

16:40:16,567 INFO  [org.jboss.as] (MSC service thread 1-4) JBAS015951: Admin console listening on http://127.0.0.1:9990
16:40:16,573 INFO  [org.jboss.as] (MSC service thread 1-4) JBAS015874: JBoss AS 7.1.1.Final “Brontes” started in 9824ms – Started 175 of 305 services (129 services are passive or on-demand)

Subindo o JBoss 7 no MacBook

  • Aponte o terminal para o diretório bin do JBoss:

cd ~/jboss-as-7.1.1.Final/bin

  • Execute o seguinte comando:

./standalone.sh -c standalone-ha.xml -b 192.168.11.50 -u 230.0.0.4 -Djboss.server.base.dir=../standalone -Djboss.node.name=nodeMacBook

Saída no terminal:
16:46:27,109 INFO  [stdout] (pool-13-thread-1) ——————————————————————-
16:46:27,109 INFO  [stdout] (pool-13-thread-1) GMS: address=nodeMacBook/web, cluster=web, physical address=192.168.11.50:55201
16:46:27,110 INFO  [stdout] (pool-13-thread-1) ——————————————————————-

16:20:31,777 INFO  [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (pool-15-thread-1) ISPN000078: Starting JGroups Channel
16:20:31,781 INFO  [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (pool-15-thread-1) ISPN000094: Received new cluster view: [nodeUbuntu/web|1] [nodeUbuntu/web, nodeMacBook/web]
16:20:31,782 INFO  [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (pool-15-thread-1) ISPN000079: Cache local address is nodeMacBook/web, physical addresses are [192.168.11.50:55201]

Assim que a instância do MacBook subir, no terminal do Ubuntu aparecerá a seguinte mensagem:

16:43:05,575 INFO  [org.jboss.as.clustering.impl.CoreGroupCommunicationService.lifecycle.web] (Incoming-6,null) JBAS010247: New cluster view for partition web (id: 6, delta: -1, merge: false) : [nodeUbuntu/web]
16:43:05,590 INFO  [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (Incoming-6,null) ISPN000094: Received new cluster view: [nodeUbuntu/web|6] [nodeUbuntu/web]
16:46:27,143 INFO  [org.jboss.as.clustering.impl.CoreGroupCommunicationService.lifecycle.web] (Incoming-7,null) JBAS010247: New cluster view for partition web (id: 7, delta: 1, merge: false) : [nodeUbuntu/web, nodeMacBook/web]
16:46:27,162 INFO  [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (Incoming-7,null) ISPN000094: Received new cluster view: [nodeUbuntu/web|7] [nodeUbuntu/web, nodeMacBook/web]

O cluster está concluído. Agora só falta jogar um pacote (WAR, EAR…) dentro do diretório standalone/deployments de cada instância e verificar o deploy no terminal!

O arquivo web.xml da aplicação deverá ter a tag que diz ao JBoss 7 que ela pode ser distribuída em cluster:

</distributable>

Se desejar testar o cluster com uma aplicação simples, baixe aqui um HelloJBoss.war.

Assim que o pacote for copiado para a pasta deployments, o deploy acontecerá automaticamente:

19:35:03,649 INFO  [org.jboss.web] (MSC service thread 1-3) JBAS018210: Registering web context: /HelloJBoss
19:35:03,694 INFO  [org.jboss.as.server] (DeploymentScanner-threads – 2) JBAS018559: Deployed “HelloJBoss.war”



Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s