Balanceamento de carga com Apache e Jboss EAP [RESOLVIDO]

1. Balanceamento de carga com Apache e Jboss EAP [RESOLVIDO]

Victor Lima
victorit

(usa CentOS)

Enviado em 11/08/2016 - 11:44h

Olá pessoal,

Caso exista outro tópico com a minha mesma dúvida, favor responder com o link, por que não encontrei. Obrigado.

Gostaria de fazer um Load Balance e redundância com uma aplicação que roda com Jboss eap 6.3.
E preciso fazer com Apache, mas não consegui achar algo que pudesse me ajudar.

Meu escopo é:

Tenho 1 Servidor com APACHE
Tenho 2 Servidores idênticos rodando minha aplicação Jboss
Tenho 1 Servidor de banco de dados.

Gostaria que todas a requisições a minha aplicação fossem direcionadas ao servidor APACHE, e ele distribuiria as requisições aos 2 servidores com Jboss. Alguém poderia me ajudar?
Desde já agradeço


  


2. Re: Balanceamento de carga com Apache e Jboss EAP [RESOLVIDO]

Remington Santos
remingtonsb

(usa Red Hat)

Enviado em 11/08/2016 - 12:09h

Bom dia Victor,

Responda as seguintes perguntas para que eu possa te ajudar

Qual sua versão de Apache?
Seu JBoss EAP 6.3 está em modo standalone ou domain?






3. Re: Balanceamento de carga com Apache e Jboss EAP

Victor Lima
victorit

(usa CentOS)

Enviado em 11/08/2016 - 14:48h

Remingtonsb,
Segue,

Versão do Apache - Server version: Apache/2.2.15 (Unix)
JBoss EAP em modo Standalone

É possível fazer em Mod_Cluster?

Obrigado!


4. Re: Balanceamento de carga com Apache e Jboss EAP

Remington Santos
remingtonsb

(usa Red Hat)

Enviado em 11/08/2016 - 18:07h

Obrigado Victor, pensei em usarmos o mod_jk, pois tenho dominio de configurar dessa forma, nada impede que tentemos usar o mod_cluster. Você tem alguma restrição com relação ao mod_jk ou algo que o obrigue a usar o mod_cluster?

Caso não tenha problema em usar o mod_jk vamos lá então:

Primeiramente é preciso que configure o seu Apache para funcionar com o mod_jk (https://tomcat.apache.org/tomcat-3.3-doc/mod_jk-howto.html) para essa configuração funcionar siga os seguintes passos:

1- Baixar o módulo mod_jk do seguinte link:
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.31/x86_64/mod_jk-1....

2- copiar arquivo baixado para /etc/httpd/modules do seu servidor onde está o apache

3- renomear o arquivo, que pode ser feito da seguinte forma : #mv /etc/httpd/mod_jk-1.2.31-httpd-2.0.x.so /etc/httpd/mod_jk.so

4- Crie o arquivo de configuração mod_jk.conf dentro do seu diretório /etc/httpd/conf.d/
(Comando)
#vim /etc/httpd/conf.d/mod_jk.conf

(INSIRA AS SEGUINTES CONFIGURACOES)

# Load mod_jk module
# Specify the filename of the mod_jk lib

LoadModule perl_module modules/mod_perl.so
LoadModule jk_module modules/mod_jk.so

# Uncomment for worker mpm
#JkWatchdogInterval 60

# Where to find workers.properties
JkWorkersFile conf/workers.properties

# Where to put jk logs
JkLogFile logs/mod_jk.log

# Set the jk log level [debug/error/info]
JkLogLevel info

# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

# JkOptions indicates to send SSK KEY SIZE
JkOptions +ForwardKeySize +ForwardURICompatUnparsed -ForwardDirectories

# JkRequestLogFormat
JkRequestLogFormat "%w %V %T"

# Mount your applications
#JkMount /application/* node1

# You can use external file for mount points.
# It will be checked for updates every 60 seconds.
# The format of the file is: /url=worker
# /examples/*=loadbalancer
JkMountFile conf/uriworkermap.properties

# Add shared memory.
# This directive is present with 1.2.10 and
# later versions of mod_jk, and is needed for
# for load balancing to work properly
JkShmFile /var/cache/mod_jk/jk.shm

# Add jkstatus for managing runtime data
<Location /jkstatus/>
JkMount status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>

4- Garanta que as configurações do seu apache estejam habilitadas para ler arquivos de configuração dentro do diretório conf.d, em no seu arquivo /etc/httpd/conf/httpd.conf deverá conter a seguinte entrada, caso não exista insira a mesma:
Include conf.d/*.conf

5- Dentro do diretorio /etc/httpd/conf crie os seguintes arquivos com os seus respectivos conteúdos

a. #vim /etc/httpd/uriworkermap.properties

#CONTEXTO PROCURADO NO SEU SERVIDOR DE APLICACAO (JBOSS)
/contexto_applicacao=loadbalancer
/contexto_applicacao/*=loadbalancer

b. #vim /etc/httpd/workers.properties

worker.list=loadbalancer,status,node1,node2

# node1
worker.node1.port=8009
worker.node1.host=nome_ou_ip_server_jboss_1
worker.node1.type=ajp13
worker.node1.ping_mode=A
worker.node1.lbfactor=1
#worker.node1.lbfactor=1

# node2
worker.node2.port=8009
worker.node2.host=nome_ou_ip_server_jboss_2
worker.node2.type=ajp13
worker.node2.ping_mode=A
worker.node2.lbfactor=1

# Balanceamento
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2
worker.loadbalancer.sticky_session=1
#worker.loadbalancer.sticky_session_force=true

# Status worker for managing load balancer
worker.status.type=status

6- Inicie seus servidores de Aplicação (JBOSS) e monitore se a porta 8009 estão em Listen

#netstat -nltp | grep 8009

7- Inicie ou reinicie seus servidores apache
#service httpd start
ou
#service httpd restart

8- Agora valide se acessando seus servidores apache via browser seguigo do contexto da aplicação a mesma deve ser direcionada para o servidor 1 ou servidor 2

http://servidor_apache/contexto_aplicacao.


Após realizar os procedimentos acima me informe se teve sucesso ou não para tratarmos os problemas e depois de tudo estar funcinando temos um pequeno ajuste de jvm_route nos servidores do Jboss para ele trabalhar de forma inteligente o balanceamento.



5. Re: Balanceamento de carga com Apache e Jboss EAP [RESOLVIDO]

Victor Lima
victorit

(usa CentOS)

Enviado em 12/08/2016 - 11:36h

Bom dia,

Fiz conforme descrito, e apresentou o seguinte erro ao tentar iniciar o Apache:

httpd: Syntax error on line 221 of /etc/httpd/conf/httpd.conf: Syntax error on line 4 of /etc/httpd/conf.d/mod_jk.conf: Cannot load /etc/httpd/modules/mod_perl.so into server: /etc/httpd/modules/mod_perl.so: cannot open shared object file: No such file or directory


Erro linha 221 no httpd.conf - Está dizendo que o erro é nesta linha "Include conf.d/*.conf"
Erro linha 4 no mod_jk.conf -

1 #Load mod_jk module
2 # Specify the filename of the mod_jk lib
3
4 LoadModule perl_module modules/mod_perl.so
5 LoadModule jk_module modules/mod_jk.so
6 # Uncomment for worker mpm




6. Re: Balanceamento de carga com Apache e Jboss EAP

Remington Santos
remingtonsb

(usa Red Hat)

Enviado em 12/08/2016 - 12:01h

Verifique se a lib "mod_perl.so" encontra-se no diretório /etc/httpd/modules.

Pode user o comando abaixo:

#ls -lha /etc/httpd/modules/mod_perl.so

Caso não tenha retorno algum, instale o mod_perl via yum

#yum install mod_perl

Após instalação verifique se a lib se encontra lá, se sim teste o start do apache novamente.

Aguardo seu retorno para darmos continuidade.

Att


7. Re: Balanceamento de carga com Apache e Jboss EAP [RESOLVIDO]

Victor Lima
victorit

(usa CentOS)

Enviado em 12/08/2016 - 15:13h

Executado,

Agora segue o erro:

Syntax error on line 202 of /etc/httpd/conf/httpd.conf: API module structure 'jk_module' in file /etc/httpd/modules/mod_jk.so is garbled - expected signature 41503232 but saw 41503230 - perhaps this is not an Apache module DSO, or was compiled for a different Apache version?

Linha 202:
200 LoadModule cgi_module modules/mod_cgi.so
201 LoadModule version_module modules/mod_version.so
202 LoadModule jk_module modules/mod_jk.so
203 #
204 # The following modules are not loaded by default:
205 #
206 #LoadModule asis_module modules/mod_asis.so


8. Re: Balanceamento de carga com Apache e Jboss EAP [RESOLVIDO]

Remington Santos
remingtonsb

(usa Red Hat)

Enviado em 12/08/2016 - 15:47h

OK, acredito que passei a versão errada do mod_jk para vc baixar, a versão correta para sua versão de apache é essa:

remova o mod_jk.so do /etc/httpd/modules/

Baixe o seguinte arquivo:
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.31/x86_64/mod_jk-1....

Copie o mesmo para /etc/httpd/modules/

e renomeie ele para mod_jk.so

#mv /etc/httpd/modules/mod_jk-1.2.31-httpd-2.2.x.so /etc/httpd/modules/mod_jk.so

Obrigado

Aguardo retorno..




9. Re: Balanceamento de carga com Apache e Jboss EAP

Victor Lima
victorit

(usa CentOS)

Enviado em 12/08/2016 - 17:13h

Alterações realizadas..

Segue mensagem ao Iniciar APACHE.:
Iniciando o httpd: [Sat Jul 30 18:27:10 2016] [warn] module jk_module is already loaded, skipping
[Sat Jul 30 18:27:10 2016] [warn] module perl_module is already loaded, skipping
httpd: apr_sockaddr_info_get() failed for SRVV012
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

Minha aplicação funcionou!
Agora ocorre outra coisa:
Consigo realizar login na aplicação, porém ao realizar outras requisições a aplicação volta para tela de Login e fica nesse loop
Creio que seja o que você disse anteriormente sobre a jvm_route.



10. Re: Balanceamento de carga com Apache e Jboss EAP

Remington Santos
remingtonsb

(usa Red Hat)

Enviado em 12/08/2016 - 17:40h

O erro de already load deve ter se dado por conta de ter o LoadModule dos módulos indicados no erro também no arquivo /etc/httpd/conf/httpd.conf, basta remover de lá mantendo apenas no mod_jk.conf que esse erro não aparecerá mais.

Com relação ao jvmRoute.

no arquivo standalone.xml dos seus servidores com JBoss insira o seguinte system properties:

1- No Servidor 1

<system-properties>
<property name="jvmRoute" value="node1"/>
</system-properties>

2- No servidor 2

<system-properties>
<property name="jvmRoute" value="node2"/>
</system-properties>

O System properties pode ser adicionado logo depois da declaração dos extensions

Exemplo:


<?xml version='1.0' encoding='UTF-8'?>

<server xmlns="urn:jboss:domain:1.6">

<extensions>
<extension module="org.jboss.as.clustering.infinispan"/>
<extension module="org.jboss.as.connector"/>
<extension module="org.jboss.as.deployment-scanner"/>
<extension module="org.jboss.as.ee"/>
<extension module="org.jboss.as.ejb3"/>
<extension module="org.jboss.as.jaxrs"/>
<extension module="org.jboss.as.jdr"/>
<extension module="org.jboss.as.jmx"/>
<extension module="org.jboss.as.jpa"/>
<extension module="org.jboss.as.jsf"/>
<extension module="org.jboss.as.logging"/>
<extension module="org.jboss.as.mail"/>
<extension module="org.jboss.as.naming"/>
<extension module="org.jboss.as.pojo"/>
<extension module="org.jboss.as.remoting"/>
<extension module="org.jboss.as.sar"/>
<extension module="org.jboss.as.security"/>
<extension module="org.jboss.as.threads"/>
<extension module="org.jboss.as.transactions"/>
<extension module="org.jboss.as.web"/>
<extension module="org.jboss.as.webservices"/>
<extension module="org.jboss.as.weld"/>
</extensions>

<system-properties>
<property name="jvmRoute" value="node1"/>
</system-properties>


Depois disso reinicie o JBoss e o apache e veja se tem sucesso.


Aguardo um retorno

Att


11. Re: Balanceamento de carga com Apache e Jboss EAP

Victor Lima
victorit

(usa CentOS)

Enviado em 13/08/2016 - 18:46h

Fala ai,
Então, aparentemente o balanceamento está funcionando. Como sei disso? Através de um problema que ocorre!!
Quando acesso o contexto da minha aplicação http://aplicacao.teste.com.br/TesteApp
ele abre até o momento do login. Quando realizo o login, ele retorna para página de login novamente e traz um alerta da minha aplicação dizendo... "Usuário e Senha não cadastrados no sistema". Estranho por que as duas aplicações estão chegando normalmente no banco de dados. Outras vezes ele acessa a aplicação e sempre que realizo alguma requisição ele volta a página de login, como se estivesse perdendo a sessão ou realizando o balanceamento das requisições sem manter a sessão atual. O Log do Jboss e Apache não apresentam nada.


12. Re: Balanceamento de carga com Apache e Jboss EAP [RESOLVIDO]

Remington Santos
remingtonsb

(usa Red Hat)

Enviado em 13/08/2016 - 18:58h

Opa, blz? Obrigado pelo retorno.

Me parece um problema de persistencia, ou nao respeitou o jvmRoute, vc reiniciou os servicos do jboss nos dois servidores? Qual browser vc esta usando?

Estou em um outro compromisso agora, por volta das 21 estarei em casa dai posso dar uma olhada melhor se possivel me mande seus logs do mod_jk /var/log/httpd/mod_jk* e o server.log dos jboss



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts