sexta-feira, 20 de junho de 2008

Configurando cluster com JBoss

Olá amiguinhos,

Tive que fazer uma tarefa aqui no trabalho e não encontrava a solução. Precisava fazer um cluster com o Tomcat, sendo que, se eu desse deploy em um servidor Tomcat, o outro também deveria receber esse deploy. E não estava acontecendo isso e eu estava ficando desesperado já. Resolvi perguntar para meu professor de Protocolos, Cléber, se ele já havia feito cluster com o Tomcat. Ele me deu a dica de usar o JBoss.

O JBoss é um servidor de aplicações J2EE, assim como o Tomcat, mas com recursos bem melhores. Se quiser saber mais sobre o JBoss, clique aqui.

O JBoss já vem pronto para ser cluster. Você não precisa fazer nenhuma configuração se você não quiser, se for algo bem simples é claro. Vou ensinar como fazer um cluster conforme o meu cenário.

Supondo que você instalou o JBoss em /opt/jboss-4.2.2.GA. Eu criei um link simbólico chamado jboss para facilitar. Acesse o diretório /opt/jboss/bin e execute o seguinte comando:

# ./run.sh -c all -b 172.16.5.30


Onde -c é para informar qual configuração você quer, que é all, e -b é o seu IP. Agora acesse o diretório /opt/jboss/server e execute um ls para você ver. Ali fica os diretórios all, default e minimal. Como indicamos que seria o all, vamos trabalhar dentro do diretório all. É um pouco diferente o esquema do JBoss mas logo você acostuma.

Por padrão, o JBoss trabalha a comunicação entre os clusters, usando o protocolo UDP. Fica a seu critério. Se sua rede for um pouco instável, é recomendado você usar o protocolo TCP, pois é orientado a conexão.

Se você quiser usar o TCP, você precisa ter que fazer um trabalho muito árduo. Foi uma das configurações mais complicadas que eu já fiz e sinceramente, espero não precisar fazer mais. Hehehehehe.

Abra o seguinte arquivo:

# vim /opt/jboss/server/all/deploy/cluster-service.xml


Procure a tag <Config> e comente ela da seguinte forma:

<!--<Config>
....
....
</Config>-->


Um pouco mais para baixo, tem outra tag <Config> mas ela já está comentada. É a configuração para TCP. Descomente-a. E dentro da tag <Config> procure a tag <TCPPING> e altere o atributo initial_hosts da seguinte forma:

<TCPPING 
initial_hosts="${jboss.bind.address}[7800],172.16.5.163[7800]"
port_range="3"
timeout="3000"
down_thread="false" up_thread="false"
num_initial_members="3"/>


Onde ${jboss.bind.address}[7800] pega seu IP local e o outro IP seria o outro nó do seu cluster. Você pode indicar quantos você quiser. O TCPPING amarra os principais nós ao seu cluster. Assim ele não fica procurando e já vai direto ao nó.

Dificil, não? É eu sei, dá vontade de formatar o PC e começar tudo de novo de tão complicado hehehehehe.

Farm War Deployment


Bom, se você já deu uma brincada no JBoss para ver como ele funciona, já percebeu que para fazer deploy nele, basta apenas copiar o .war para o diretório /opt/jboss/server/all/deploy. Mas no nosso caso, precisamos replicar a aplicação para todos os nós, assim, você faz 1 deploy e ele se encarrega de mandar para os outros nós automaticamente. Meus olhos enxeram de lágrimas quando eu vi a facilidade de fazer isso. Basta copiar o .war para o diretório /opt/jboss/server/all/farm.

Fique olhando no console, onde você executou o comando run.sh, o que ele fez.

Simples, não? Ah, um detalhe muito importante. Se você configurou 1 nó como TCP, todos os outros precisam ser TCP também. Configure os outros nós conforme a configuração acima e execute o comando run.sh da mesma forma, apenas alterando o IP.

Espero ter ajudado alguém com esse post.

Enjoy...

0 comentários: