segunda-feira, 23 de junho de 2014

Apache Web Service + JBoss Mod cluster (Loadbalance) + JBoss AS 7 no CentOS 6.5 - 64 bits


INTRODUÇÃO

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

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/






Nenhum comentário:

Postar um comentário