Configurando Ambiente de Produção no JBoss AS 7.1.3 (JBoss EAP 6.0.1) – Parte 3
Olá amigos,
Hoje vamos continuar a configuração do ambiente criado nos posts anteriores:
- Configurando Ambiente de Produção no JBoss AS 7.1.3 (JBoss EAP 6.0.1) – Parte 1
- Configurando Ambiente de Produção no JBoss AS 7.1.3 (JBoss EAP 6.0.1) – Parte 2
No post anterior nós terminamos a configuração do balanceamento de carga. Hoje vamos aprender como adicionar recurso de cluster ao nosso ambiente. Portanto se sua intenção não é a de utilizar recursos clusterizados aguarde a próxima parte e pule essa etapa.
A arquitetura do JBoss AS 7 foi totalmente redesenhada para que seus recursos possam ser iniciados de modo concorrente ou sob demanda. Anteriormente nós definimos que o profile utilizado seria o ha (high availability) que possui tecnologias (subsystems) para utilização de cluster. Nesse perfil podemos encontrar o JGroups que é a tecnologia utilizada no JBoss para fazer a comunicação entre os nós do cluster e replicar o estado dos mesmos (entre muitas outras coisas). No post anterior deployamos uma aplicação web que não estava preparada para cluster portanto tais recursos não foram ativados. Utilizando a tag <distributable/> no web.xml estamos “basicamente” habilitando clusterização para nossa aplicação.
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <distributable/> </web-app>
Mais informações podem ser encontradas na documentação: https://docs.jboss.org/author/display/AS71/AS7+Cluster+Howto
Então ao deployarmos uma aplicação <distributable/> os recursos de cluster serão carregados automaticamente. É claro que existem outras configurações a serem feitas mas podem variar conforme o ambiente de cada administrador. Por exemplo, por padrão é utilizado UDP para comunicação entre os “nós do cluster”, então é necessário que o ambiente esteja preparada para multicast.
Para testes, basta adicionar uma nova rota:
route add -net 224.0.0.0 netmask 224.0.0.0 dev ethXYZ
Na inicialização basta fazer o binding com a opção -b IP ou -Djboss.bind.address=IP.
Para realização dos testes eu criei uma simples aplicação Web com um contador utilizando um Bean @Stateful.
@Stateful @SessionScoped @Clustered @Named public class CounterBean implements Serializable{ private static final long serialVersionUID = -6708383025283195006L; private int count; public int getCount() { return count; } public void setCount(int count) { this.count = count; } public void increment() { count++; } }
Vou deixar o projeto e a aplicação para que vocês possam realizar os testes. Vamos utilizar a estrutura criada no Configurando Ambiente de Produção no JBoss AS 7.1.3 (JBoss EAP 6.0.1) – Parte 2.
Inicei o Domain Controller (master):
./usr/local/jboss/7.1.3/jboss-eap-6.0/bin/domain.sh -Djboss.domain.base.dir=/usr/local/jboss/7.1.3/jboss-eap-6.0/master -Djboss.host.default.config=host-master.xml -Djboss.bind.address=192.168.0.128 -Djboss.bind.address.management=192.168.0.128
Vamos conectar o primeiro Host Controller 01 (slave01) ao Master:
./usr/local/jboss/7.1.3/jboss-eap-6.0/bin/domain.sh -Djboss.domain.base.dir=/usr/local/jboss/7.1.3/jboss-eap-6.0/slave01 -Djboss.host.default.config=host-slave.xml -Djboss.domain.master.address=192.168.0.128 -Djboss.bind.address.management=192.168.0.140 -Djboss.bind.address=192.168.0.140 -Djboss.server.name=server-one
Observe os logs no Domain Controller e perceba que o Host Controller 01 se conectou do Domain:
JBAS010918: Registered remote slave host "slave01", JBoss EAP 6.0.1.GA (AS 7.1.3.Final-redhat-4)
Agora temos um Domain Controller e um Host Controller com Server ( instância JBoss) chamada server-one. Vamos realizar o deploy da aplicação cluster-example.war que responderá no contexto cluster (http://192.168.0.140/cluster/). Acesse a interface web no endereço http://192.168.0.128:9990/console/ e será solicitado usuário e senha. Podemos utilizar o usuário jboss e a senha 123456 criadas nas etapas anteriores. Para realizar o deploy siga os passos baixo:
1°
Ao realizarmos o assign da aplicação o serviço de cluster é inicializado:
[Server:server-one] 20:48:49,847 INFO [stdout] (ServerService Thread Pool -- 66) [Server:server-one] 20:48:49,847 INFO [stdout] (ServerService Thread Pool -- 66) ------------------------------------------------------------------- [Server:server-one] 20:48:49,848 INFO [stdout] (ServerService Thread Pool -- 66) GMS: address=slave01:server-one/ejb, cluster=ejb, physical address=192.168.0.140:55200 [Server:server-one] 20:48:49,853 INFO [stdout] (ServerService Thread Pool -- 66) ------------------------------------------------------------------- [Server:server-one] 20:48:49,884 INFO [org.jboss.as.osgi] (MSC service thread 1-1) JBAS011907: Register module: Module "deployment.cluster-example.war:main" from Service Module Loader [Server:server-one] 20:48:50,117 INFO [stdout] (ServerService Thread Pool -- 67) [Server:server-one] 20:48:50,122 INFO [stdout] (ServerService Thread Pool -- 67) ------------------------------------------------------------------- [Server:server-one] 20:48:50,122 INFO [stdout] (ServerService Thread Pool -- 67) GMS: address=slave01:server-one/web, cluster=web, physical address=192.168.0.140:55200 [Server:server-one] 20:48:50,123 INFO [stdout] (ServerService Thread Pool -- 67) -------------------------------------------------------------------
Acesse a url http://192.168.0.14o/cluster ( url do balanceador Apache nada tem a ver com a localização da instância JBoss) e perceba que a aplicação iniciará a contagem.
Agora conecte o segundo Host Controller 02 (slave02) ao Master:
./usr/local/jboss/7.1.3/jboss-eap-6.0/bin/domain.sh -Djboss.domain.base.dir=/usr/local/jboss/7.1.3/jboss-eap-6.0/slave02 -Djboss.host.default.config=host-slave.xml -Djboss.domain.master.address=192.168.0.128 -Djboss.bind.address.management=192.168.0.117 -Djboss.bind.address=192.168.0.117 -Djboss.server.name=server-two
Pare a instância instância server-one.
A aplicação passará a reponder no server-two pela mesma url http://192.168.0.14o/cluster e a contagem será continuada da onde havia parado no server-one. Com isso percebemos que o estado da nossa aplicação foi replicado entre os nós.
Por hoje é isso ai galera. Na próxima parte vamos habilitar o SSL para o Mod Cluster e realizar algumas configurações de segurança no JBoss.
Abraços!
25 de março de 2013 às 0:29
show de bola!! estou aguardando os novos posts dessa série!! abraço!!
25 de março de 2013 às 6:59
Vlw Adriano 🙂
Abs
25 de março de 2013 às 9:46
Excelente essa série de artigos Maurício, parabéns!Abs!
25 de março de 2013 às 10:22
Vlw Luciano… um elogio vindo de vc é sempre bom 🙂
Abs
25 de março de 2013 às 13:28
melhor a cada novo post! xD
25 de março de 2013 às 13:47
Vlw Victor 😀
Abs
15 de julho de 2013 às 21:37
[…] https://jbossdivers.wordpress.com/2013/03/24/configurando-ambiente-de-producao-no-jboss-as-7-1-3-jbos… […]