Este post se destina à como configurar um balanceamento de carga em servidores Jboss AS 7 Standalone.
A figura abaixo ilustra como pode ser aplicado em um ambiente de produção:
1) Ambiente:
192.168.100.102 – blog-01 – Apache com Mod JK
192.168.100.103 – blog-02 – Jboss – Instância 1
192.168.100.104 – blog-03 – Jboss – Instância 2
2) Requisitos :
Instalação dos pacotes necessários:
yum install httpd httpd-devel
Download e instalação da Engine do Tomcat :
wget -v http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.37-src.tar.gz tar -xvf tomcat-connectors-1.2.37-src.tar.gz cd tomcat-connectors-1.2.37-src/native/ ./configure --with-apxs=yes make make install
3) Instalação e configuração do MOD Jk no servidores blog-01:
Crie o include no final do arquivo httpd.conf
# Include mod_jk's specific configuration file Include conf/mod-jk.conf
Configure o arquivo mod-jk.conf dentro de /etc/httpd/conf :
LoadModule jk_module modules/mod_jk.so JkWorkersFile conf/workers.properties JkLogFile logs/mod_jk.log JkLogLevel debug JkLogStampFormat "[%a %b %d %H:%M:%S %Y]" JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories JkRequestLogFormat "%w %V %T" JkMount /application/* loadbalancer JkMountFile conf/uriworkermap.properties JkShmFile logs/jk.shm <Location /jkstatus/> JkMount status Order deny,allow Deny from all Allow from all </Location>
Configure o arquivo workers.properties dentro de /etc/httpd/conf :
# Define instance01 worker.instance01.port=8009 worker.instance01.host=192.168.100.103 worker.instance01.type=ajp13 worker.instance01.ping_mode=A worker.instance01.lbfactor=1 # Define instance02 worker.instance02.port=8009 worker.instance02.host=192.168.100.104 worker.instance02.type=ajp13 worker.instance02.ping_mode=A worker.instance02.lbfactor=1 # Load-balancing behaviour worker.loadbalancer.type=lb worker.loadbalancer.balance_workers=instance01,instance02 worker.loadbalancer.sticky_session=False worker.list=loadbalancer
Para maior informação de cada configuração podemos ver no link abaixo:
https://tomcat.apache.org/tomcat-3.3-doc/Tomcat-Workers-HowTo.html
Por último a criação do uriworker.properties mapeando a aplicação desejada:
/jboss-as-helloworld=loadbalancer /jboss-as-helloworld/*=loadbalancer
4) Configuração do protocolo AJP e definição das instâncias no arquivo standalone.xml:
Dentro do diretório /opt/jboss-as-7.1.1.Final/standalone/configuration configure as entradas standalone.xml
<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" instance-id="blog-02" native="false"> <connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp"/>
Caso não exista a configuração da porta AJP adicione as entradas :
<socket-binding name="ajp" port="8009"/>;
OBS: Caso tenha dúvidas sobre a configuração a configuração do standalone.xml se encontra no link abaixo:
https://github.com/fabioabreureis/fajlinux/tree/master/blog/Jboss/MOD%20JK%20-%20LOAD%20BALANCE
5) Deploy da aplicação de teste:
Faça download do arquivo .jar na URL abaixo e faça deploys nas duas instâncias em standalone.
https://github.com/fabioabreureis/fajlinux/tree/master/blog/Jboss/MOD%20JK%20-%20LOAD%20BALANCE
6) Inicie as instâncias:
Instancia 1 em blog-02 :
./opt/jboss-as-7.1.1.Final/bin/standalone.sh -b 192.168.100.103 -bmanagement 192.168.100.103
Instancia 2 em blog-03 :
./opt/jboss-as-7.1.1.Final/bin/standalone.sh -b 192.168.100.104 -bmanagement 192.168.100.104
7) Prova de conceito :
Chame no navegador o ip do servidor Apache blog-01 :
http://192.168.100.102/jboss-as-helloworld/
Dentro do log do mod_jk podemos ver as seguintes mensagens :