LoadBalance do Glassfish Enterprise cluster, com Apache usando mod_jk loadbalancer   Leave a comment

Configuração do  Apache 2.2.11, e configurando loadbalance, plugin da Sun, para Balanceamento de carga com Glassfish Enterprise V2.

Assumindo que a máquina já tem o Java Virtual Machine instalado e todos as dependências como por exemplo compilador gcc, que o mod_jk já foi compilado corretamente também, seguiremos a diante. Primeiramente como forma de organização, vamos criar o diretório binários dentro de /root, para colocarmos ali os binários que serão utilizados na configuração, execute o comando:

  • mkdir /root/binarios

Copie o arquivo apache httpd-2.2.11.tar.gz, para o diretório binários, execute o comando abaixo para dar permissão de execução do arquivo, e em seguida o comando para descompactar o tar.gz:

  • chmod 755 /root –R             ( o –R, significa que o comando será executado recursivamente, pra todos os diretórios existentes dentro do /root )
  • tar –zxvf httpd-2.2.11.tar.gz             ( Comando para descompactar e criar o diretório http 2.2.11

este comando descompactará o apache dentro de /root/binarios criando o diretório httpd-2.2.11, agora iniciaremos a compilação do Webserver Apache.

Para compilar o apache é necessário, habilitar alguns módulos, como por exemplo, execução de ftp, proxy, ssl, etc, execute dentro do http 2.2.11, o seguinte comando:

  • ./configure –prefix=/usr/local/apache –enable-proxy –enable-proxy-connect –enable-proxy-ftp –enable-proxy-http –enable-proxy-ajp –enable-proxy-balancer –enable-ssl –enable-info –enable-suexec –enable-cgi –enable-so –with-ssl

Este comando inicia a compilação do apache, finalizando, iremos para o próximo passo, que é executar o comando make, para iniciar a instalação e compilação, execute o seguinte comando:

  • ./make

Agora que foi executada a compilação é necessário conferir se todos os binários e dependências foram instalados com sucesso sem nenhum erro ou necessidade da instalação de mais alguma dependência. Assumindo que tudo está correto, agora vamos finalizar a instalação e compilação do Apache, execute o seguinte comando:

  • ./make install

Pronto, agora que temos instalado e compilado do Apache, execute dentro do diretório http 2.2.11, o seguinte comando que irá limpar a instalação, depois remova o diretório, pois não será mais usado, execute os seguintes comandos:

  • ./make clean

e depois,

  • rm –Rf http 2.2.11

Vá até o diretório onde está instalado o Apache /usr/local/apache, dentro do apache, suba mais um diretório, cd /bin, execute o comando para iniciar e verificar se está no ar:

  • ./apachectl start

Verifique no browser ex ( http://localhost/ ), tem que abrir a página do Apache, e para verificar se o processo está rodando no Linux, execute o comando:

  • ps aux

Agora vamos aos arquivos de configuração do Apache, edite o comando /usr/local/apache/conf/extra/httpd-vhosts.conf, neste arquivo faremos a configuração dos hosts, que serão visualizados através do Apache, edite as seguintes linhas:

<VirtualHost *>
ServerAdmin sysadmin@com.com.br
DocumentRoot "/usr/local/apache/htdocs/exemplo/"
ServerName exemplo.com.com.br
ErrorLog /usr/ apache/logs/exemplo-error.log
CustomLog /usr/ apache/logs/exemplo-access.log common
Alias /exemploestatico/ /usr/local/apache/htdocs/exemplo/estatico/
<Directory /usr/local/apache/htdocs/exemplo/estatico/>
#Options Indexes MultiViews
Options MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
JkMount /exemplo/*                   loadbalancer
JkMount /exemplo                     loadbalancer
JkUnmount /exemploestatico/*         loadbalancer
</VirtualHost>
  • A linha DocumentRoot /usr/local/apache/htdocs/exemplo/ é o diretório onde se encontra os arquivos estáticos da aplicação;
  • ServerName exemplo.com.br, é a URL que será utilizada para acessar a aplicação;
  • JkMount são as configurações que farão o redirecionamento para o servidor Glassfish

Agora iremos editar o arquivo /usr/local/apache/conf/extra/httpd-ajp.conf

LoadModule    jk_module  modules/mod_jk.so
AddModule     mod_jk.c
JkWorkersFile /usr/local/apache/conf/extra/workers.properties
JkLogFile     /usr/local/apache/logs/mod_jk.log
JkLogLevel    info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

Agora iremos editar o arquivo /usr/local/apache/conf/extra/worker.properties

######################
# mod_jk.properties
######################
# worker definition
worker.list=loadbalancer,status
# appserver01-local definition
worker.appserverinstance01.port=8009
worker.appserverinstance01.host=appserver01
worker.appserverinstance01.type=ajp13
worker.appserverinstance01.socket_keepalive=1
worker.appserverinstance01.socket_timeout=120
# appserver02 definition
worker.appserverinstance02.port=8010
worker.appserverinstance02.host=appserver02
worker.appserverinstance02.type=ajp13
worker.appserverinstance02.socket_keepalive=1
worker.appserverinstance02.socket_timeout=120
# status definition
worker.status.type=status
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=appserverinstance01,appserverinstance02,status
worker.loadbalancer.sticky_session=true

Neste arquivo estamos fazendo a configuração para o loadbalance, hora a requisição será enviada para a instance 1, que está no appserver01, hora para a instancia 2, que está no appserver02, assumindo que o apache já foi compilado com o mod_jk, e aqui tem um post de como configurar o cluster do Glassfish http://viniciusmarcos.wordpress.com/category/configuracao-cluster-glassfish-enterprise/

Para funcionar o balanceamento entre o Apache e o Glassfish, é preciso habilitar as aplicações que estão no Glassish, e configuradas no Apache, a fazer o balanceamento de carga, siga os seguintes comando no Glassfish Enterprise:

Depois de criados os NodeAgents, e as Instances, e criado o cluster, é necessário habilitar o serviço de balanceamento de carga cluster configurado nesse servidor, no DAS execute o comando para habilitar o serviço:

./asadmin enable-http-lb-server appservercluster01      ( appservercluster01, é o cluster configurado )

Depois é necessário habilitar a aplicação a utilizar o serviço de loadBalance, execute o comando:

./asadmin enable-http-lb-application –name application_name appservercluster01     ( * Este commando deve ser executado para habilitar todas as aplicações que farão parte do balanceamento de carga, no cluster )

Habilitar o protocolo AJP, para a instancia no appserver01:

./asadmin create-jvm-options –target appservercluster01 “-DjvmRoute=\${AJP_INSTANCE_NAME}”

./asadmin create-jvm-options –target appservercluster01 “-Dcom.sun.enterprise.web.connector.enableJK=\${AJP_PORT}”

./asadmin create-system-properties –target appserverinstance01 AJP_INSTANCE_NAME=appserverinstance01

./asadmin create-system-properties –target appserverinstance01 AJP_PORT=8009

Habilitar o protocolo AJP, para a instancia 02, no DAS:

./asadmin create-jvm-options –target appservercluster02 “-DjvmRoute=\${AJP_INSTANCE_NAME}”

./asadmin create-jvm-options –target appservercluster02 “-Dcom.sun.enterprise.web.connector.enableJK=\${AJP_PORT}”

./asadmin create-system-properties –target appserverinstance02 AJP_INSTANCE_NAME=appserverinstance02

./asadmin create-system-properties –target appserverinstance02 AJP_PORT=8010

Basicamente é isso, espero ter ajudado, depois de ler vários posts, e tutoriais da Sun, está um resumo de como configurar o Apache2.2, para fazer o balanceamento de Carga com o Glassfish, proporcionando, alta-disponibilidade, escalabilidade e performance, até próximo.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.