Vamos utilizar esta solução para que as requisições web sejam respondidas pelo Apache e não pelo JBoss EAP. Esta solução tambem será muito útil para a criação de um cluster.
Como mostrado nas postagens anteriores, configuramos um Domain Controller e um Host Controller com um servidor apenas configurado. No nosso server-one realizamos um Deploy de uma simples aplicação "example.war".
Para acessar a nossa aplicação de exemplo, foi necessário utilizar o endereço IP do Host Controller 01 e a porta onde se ecnontra o server-one, vamos agora configurar o Apache para receber as requisições HTTP e repassar para o JBoss usando o protocolo AJP, dessa forma utilizaremos um único IP para acessar as nossas aplicações do JBoss sem a necessidade de informar a porta.
Para isso, utilizaremos o Apache nativo do CentOS com o mod cluster. Para tornar as configurações mais próximas de um ambiente de produção, iremos primeiro, configurar um IP virtual na máquina do Domain Controller e associar este IP ao Apache.
Se você não souber como configurar um IP virtual no Linux, siga os passos deste Link.
Eu configurei o IP virtual na máquina do Domain Controller com o IP: 192.168.56.200
Configurações do Apache
1- Vamos fazer algumas alterações no arquivo de configuração do Apache:1.1- Edite o arquivo de configuração através do comando abaixo:
[root@domain]# vim /etc/httpd/conf/httpd.conf
1.2- Localize a linha abaixo e altere para que ela fique comentada, inserindo o ítem marcado em vermelho.
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
1.3- Localize a linha abaixo e insira o IP virtual (marcado em vermelho) criado para que somente ele fique disponível para acessar o Apache.
Listen 192.168.56.200:80
1.4- Salve o arquivo.
2- Vamos agora criar um arquivo de configuração específico para o nosso caso. Com o comando abaixo, crie um arquivo:
[root@domain]# vim /etc/httpd/conf.d/mod_cluster.conf
2.1- Coloque o conteúdo abaixo no arquivo e salve-o.
LoadModule slotmem_module modules/mod_slotmem.so
LoadModule manager_module modules/mod_manager.so
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule advertise_module modules/mod_advertise.so
Listen 192.168.56.200:6666
<VirtualHost 192.168.56.200:6666>
<Location />
Order deny,allow
Allow from all
</Location>
ManagerBalancerName mycluster
ServerAdvertise on
EnableMCPMReceive On
<Location /mod_cluster-manager>
SetHandler mod_cluster-manager
Order deny,allow
Allow from all
</Location>
</VirtualHost>
3- No ítem acima, carregamos no inicio do arquivo algumas bibliotecas que não são nativas do sistema operacional. Para incluí-las, será necessário realizar o download do arquivo Modules.zip e descompactá-los dentro do diretório ("/etc/httpd/modules").
3.1- Após realizar o download e copiá-lo para o diretório "/tmp" da máquina do Domain Controller, execute o comando abaixo para extrair o seu conteúdo:
[root@domain]# unzip /tmp/modules.zip -d /etc/httpd/modules
4- Vamos agora configurar o apache para que ele inicie junto com o sistema operacional, para isso, execute o comando abaixo:
[root@domain]# chkconfig httpd on
5- Agora vamos iniciar o Apache com o comando abaixo:
[root@domain]# service httpd start
6- Para testar o seu funcionamento, acesse o endereço: http://192.168.56.200 e verifique se a tela abaixo foi exibida.
7- Para testar o funcionamento do mod_cluster, acesse o endereço: http://192.168.56.200:6666/mod_cluster-manager e verifique se a tela abaixo será exibida:
Pronto, já temos o Apache devidamente configurado, precisamos agora realizar as configurações necessárias no JBoss para que ele receba corretamente as requisições que irão chegar no Apache.
Configurando o JBoss para receber requisições do Apache
Para realizar esta configuração, utilizaremos o subsystem modcluster.Ele irá nos auxiliar a receber as requisições Web que chegarem no Apache e
distribuir entre os Host Controllers configurados no JBoss.
1- Edite o arquivo "/opt/jboss/domain/configuration/domain.xml" e localize o subsytem modcluster, conforme mostrado abaixo:
<subsystem xmlns="urn:jboss:domain:modcluster:1.1">
<mod-cluster-config advertise-socket="modcluster" connector="ajp">
<dynamic-load-provider>
<load-metric type="busyness"/>
</dynamic-load-provider>
</mod-cluster-config>
</subsystem>
2- Insira os ítens marcados em vermelho conforme mostrado abaixo:
<subsystem xmlns="urn:jboss:domain:modcluster:1.1">
<mod-cluster-config advertise-socket="modcluster" connector="ajp"
proxy-list="192.168.56.200:6666" load-balancing-group="${modcluster.lbgroup}">
<dynamic-load-provider>
<load-metric type="busyness"/>
</dynamic-load-provider>
</mod-cluster-config>
</subsystem>
.....
<subsystem xmlns="urn:jboss:domain:web:1.5" default-virtual-server="default-host" native="false" instance-id="${jboss.node.name}">
...
3- Localize o server-group no arquivo e insira os ítens marcados em vermelho, conforme mostrado abaixo:
<server-groups>
<server-group name="server-group-01" profile="full-ha">
<jvm name="default">
<heap size="1303m" max-size="1303m"/>
<permgen max-size="256m"/>
</jvm>
<socket-binding-group ref="full-ha-sockets"/>
<system-properties>
<property name="modcluster.lbgroup" value="group-01"/>
</system-properties>
<deployments>
<deployment name="example.war" runtime-name="example.war"/>
</deployments>
</server-group>
</server-groups>
4- Salve o arquivo e reinicie o JBoss.
Agora o JBoss já está configurado para receber requisições do Apache utilizando o protocolo AJP.
Para testar, acesse o endereço do Apache + domínio da nossa aplicação de exemplo:
http://192.168.56.200/example
Verifique se a aplicação será exibida corretamente.
Para visualizar as aplicações disponíveis, basta acessar a interface de gerenciamento do mod_cluster e verificar os contextos publicados.
http://192.168.56.200:6666/mod_cluster-manager
Até a próxima.
Nenhum comentário :
Postar um comentário