INTRODUÇÃO
Num artigo anterior (http://www.josepojr.com/2013/04/criando-cluster-de-jboss-as-7-com-load.html)
explicamos detalhadamente a instalação do Apache Web Service (conhecido como "httpd") com o JBoss Mod Cluster já instalado. Nesse artigo, vamos explicar a configuração para o Apache Web Service "limpo", isto é, o httpd instalado no CentOS sem nenhum módulo adicional, em outras palavras, com a configuração padrão do httpd para o CentOS.
DESENVOLVIMENTO
Instalando e configurando o Apache Web Service (httpd).
Instalar os seguintes pacotes no CentOS 6.5 64 bits.
yum install httpd httpd-devel apr-devel openssl-devel mod_ssl -y
Depois disso, iniciar serviço do httpd com o comando:
service httpd start
Ou na interface gráfica dentro do CentOS, No menu "Sistema" > "Administração" > "Serviços", conforme mostra a figura a seguir:
Depois de iniciar o servidor httpd, o resultado no endereço http://127.0.0.1 (local) ou outro endereço que está configurado na interface de rede do CentOS, deve ser a página inicial do servidor httpd, conforme mostra a figura a seguir:
Depois de testar o servidor httpd, agora baixe (desligue) o httpd que vamos inserir módulos do projeto JBoss ModCluster para poder configurar o loadbalance (Balanceador de carga, isto é, de requisições HTTP).
Para isso, entre nesse site: http://mod-cluster.jboss.org/
faça o download da versão 1.2.6.Final para o sistema operacional linux-x86_64
ou pode usar o seguinte link: http://downloads.jboss.org/mod_cluster//1.2.6.Final/linux-x86_64/mod_cluster-1.2.6.Final-linux2-x64-so.tar.gz.
Observação: Não baixe as versões que venha com o httpd incluído, pois estaremos usando o httpd fornecido dentro dos repositórios de pacotes .rpm do CentOS 6.5. Dá para notar que o tamanho do arquivo com o httpd é da ordem de megabytes, enquanto o arquivo só com os módulos é da ordem de kilobytes.
Ao baixar o arquivo, descompacte o arquivo *.tar.gz com o seguinte comando:
tar xvfz mod_cluster-1.2.6.Final-linux2-x64-so.tar.gz
Dentro do arquivo compactado, teremos 4 arquivos binários com a extensão *.so que são:
mod_advertise.so
mod_manager.so
mod_proxy_cluster.so
mod_slotmem.so
Esses são os 4 módulos que vão ser inseridos na pasta /etc/httpd/modules, então, deve-se copiar esses arquivos para esse diretório, tomando cuidado para que o dono e grupo dos arquivos sejam sempre root.
Caso contrário, ao iniciar o httpd, o mesmo reportará erros de permissão nos módulos e não conseguirá ser iniciado.
Agora vamos para o diretório /etc/httpd/conf e edite o arquivo httpd.conf com os seguintes dados:
Comente a linha do módulo proxy_balancer_module para não entrar em conflito com o modulo de proxy do JBoss Cluster (mod_proxy_cluster) que estaremos incluindo:
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
Insira as seguintes linhas depois das outras linhas com o nome "LoadModule":
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
Inserir a seguinte linha depois da linha com o comando "Include conf.d/*.conf"
MemManagerFile /var/cache/mod_cluster
Por último, inserir o comando "IfModule" para o módulo "manager_module" conforme mostra código a seguir:
<IfModule manager_module>
Listen 0.0.0.0:6666
ManagerBalancerName mycluster
<VirtualHost *:6666>
<Location />
Order deny,allow
Deny from all
Allow from all
KeepAliveTimeout 300
MaxKeepAliveRequests 0
ServerAdvertise Off
EnableMCPMReceiver Off
<Location /mod_cluster_manager>
SetHandler mod_cluster-manager
Order deny,allow
Deny from all
Allow from all
</Location>
</VirtualHost>
</IfModule>
Depois disso, iniciar o servidor com o comando:
service httpd start
Observação: Nesse momento, é importante iniciar o servidor dessa maneira para que o mesmo possa imprimir no console os erros que possam ocorrer. Se iniciar pela interface gráfica e se tiver erros no arquivo httpd.conf, o servidor não iniciará e ficar com um alerta dizendo que está morto, ou a interface gráfica ficará travada. Também podemos olhar os logs no diretório /etc/httpd/logs mas o trabalho para chegar até ai e usar os velhos comandos como tail -f error.log seria muito demorado. Quando ocorre erros, o erro já foi reportado no próprio console, depois de executar o comando service httpd start.
Configurando o JBoss AS 7 para funcionar com o httpd + mod_cluster
Próximo passo é configurar o JBoss AS 7 para se conectar no httpd com o mod_cluster instalado. Para isso, altere o arquivo de configuração standalone-full-ha.xml da pasta $JBOSS_HOME/standalone/configuration conforme as configurações abaixo:
<subsystem xmlns="urn:jboss:domain:modcluster:1.1">
<mod-cluster-config advertise-socket="modcluster" proxy-list="127.0.0.1:6666" connector="ajp">
<dynamic-load-provider history="10" decay="2">
<load-metric type="cpu" weight="2" capacity="1" />
<load-metric type="sessions" capacity="512" />
</dynamic-load-provider>
</mod-cluster-config>
</subsystem>
<subsytem xmlns="urn:jboss.domain:web:1.2" default-virtual-server="default-host" instance-id="%{jboss.node.name}" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http" />
<connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp" />
<virtual-server name="default-host" enable-welcome-root="true" >
<alias name="localhost" />
</virtual-server>
</subsystem>
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}" >
<socket-binding name="ajp" port="8009" />
<socket-binding name="http" port="8080" />
</socket-binding-group>
Depois disso, abrir navegador no endereço http://127.0.0.1, conforme mostra a figura seguir:
Note que a página inicial do httpd "sumiu", isto é, ficou no lugar da página inicial do JBoss AS 7. Isso mostra que o balanceador de carga (mod_cluster) + httpd (servidor web) estão funcionando juntos e corretamente!
CONCLUSÃO
Mostramos nesse artigo como configurar, instalar o JBoss ModCluster dentro do Apache Web Service e assim, funcionando junto com o servidor JBoss AS 7. Lembrando que podemos instanciar N servidores jboss para trabalhar com o mesmo servidor httpd, desta maneira, se um servidor jboss cair (for derrubado), o httpd com o mod_cluster instalado, detectará que uma instância do cluster de JBoss AS 7 caiu e não enviará mais requisições a essa instância.
Para realizar o acesso externo no CentOS, veja mais informações nesse link: http://tidahora.com.br/index.html/doku.php?id=instalando_o_mantis_no_centos_6. Esse artigo cita a instalação de um outro programa web como o Mantis (https://www.mantisbt.org/), mas cita a desativação do serviço SELINUX com a edição do arquivo /etc/selinux/config e pede para mudar a seguinte linha:
SELINUX = disabled
Para desabilitar o SELINUX. Depois, no menu "Sistema" > "Administração" > "Firewall" e configure o par porta/protocolo para o Firewall deixar fazer o acesso. Lembrando de clicar em "Aplicar" para as configurações possam estar valendo no sistema.
Por último, configurar o Iptables no linux para deixar realizar o acesso pelas portas necessárias. A configuração disso está fora do escopo desse artigo, podendo ser realizada pelo link http://www.guiafoca.org/cgs/guia/avancado/ch-fw-iptables.html.
Ou como solução paliativa e para fins de desenvolvimento e testes, pode se desativar o serviço de Iptables no menu "Sistema" > "Administração" > "Serviços".
REFERÊNCIAS
http://jbossdivers.wordpress.com/2014/03/23/configurando-um-ambiente-wildfly-8-profissional/