Apache – Mod JK em ambiente JBOSS

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:

 

image26

 

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

 

 

Captura de Tela 2014-09-16 às 15.59.55

 

 

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/

 

Captura de Tela 2014-09-16 às 16.46.04

 

Dentro do log do mod_jk podemos ver as seguintes mensagens :

Captura de Tela 2014-09-16 às 16.54.42