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.

Configurando Glassfish Enterprise em Cluster.   Leave a comment

Neste post vamos fazer a configuração de Cluster com o Application Server da Sun o Glassfish Enterprise V2, a plataforma que vamos trabalhar é o Linux, mas pode ser configurado na plataforma Solaris e Windows, no nosso caso vamos utilizar o Enterprise Linux ( Red Hat ). Para a configuração vou detalhar alguns passos necessários para a configuração desde a instalação da Java Virtual Machine a máquina virtual Java ou jdk, vamos abordar a criação de um usuário específico e de um diretório para a instalação do Glassfish.

Execute o seguinte comando:

adduser –d /sun sun

passwd sun ( digitar a senha, e confirmar )

copie o binário jdk versão .bin para dentro do diretório /sun, e para que possa ser executado um binário, precisamos dar permissão, execute o seguinte comando:

chmod 755 /sun –R

chmod (comando para alterar permissões ), 755 ( modo octal de permissões ) , /sun o diretório onde deseja-se alterar as permissões dos arquivos, -R ( R maiúsculo ) para que o comando seja executado recursivamente nos arquivos e subarquivos.

./jdk versão.bin

Será instalada a jdk, agora precisamos configurar a variável de ambiente, JAVA_HOME, ela será configurada no arquivo que se encontra no diretório /etc/profile

Execute o seguinte comando como root:

vi /etc/profile

escolha a linha do diretório onde você quer inserir as configurações ( sugiro no final do arquivo ), clique na tecla  i ( para iniciar o modo de inserção, ou edição ), insira as linhas abaixo, clique em ESC ( para sair do modo inserção ou edição ), e digite :x ( dois pontos x ) comando para sair do modo de inserção ou edição gravando, caso queira somente visualizar um arquivo não clique em i, somente execute o comando e para sair :q ( dois pontos que ), sai da visualização sem gravar.

# Variaveis do JAVA

export JAVA_HOME=”/sun/jdk1.6.0_13″

export CLASSPATH=”$JAVA_HOME/lib”

export PATH=”$JAVA_HOME/bin:/sun/sas/bin:$PATH”

export MANPATH=”$JAVA_HOME/man”

# Fim das Variaveis JAVA

Para confirmar a instalação e configuração da variável de ambiente digite:

java –version

como saída do comando, se tudo estiver configurado e instalado corretamente, será apresentada a versão do java que está instalado.

1. Fazer o download do Glassfish http://java.net/download/javaee5/v2.1_branch/promoted/Linux/glassfish-installer-v2.1-b60e-linux.jar.

2. Para instalá-lo, basta executar o comando abaixo, em todas as máquinas ou vms (Máquina Virtual, no meu caso, vou subir todas as vms, usando Virtual Box, o S.O será o Enterprise linux 5 – 64 Bits, cada vm será uma instância dentro do cluster :

java -Xmx256m –jar glassfish-installer-v2.1-b60e-linux.jar

3. No diretório home do GLASSFISH no nosso caso será /sun, executar o comando abaixo, para cada máquina ou vm, lembrando que somente para o DAS ( Domain Application Server, ou seja, a instância principal do Cluster que será a interface administrativa do Cluster, é necessário executar o Build do arquivo setup-cluster.xml, para as outras instâncias podemos fazer o build do arquivo setup.xml, que se encontra no diretório Glassfish:

lib/ant/bin/ant -f setup-cluster.xml

4. É necessário criar agora o diretório para o plugin de loadbalance, execute o seguinte comando:

mkdir  /sun/glassfish/lib/lbplugin

com este comando criaremos o diretório lbplugin, agora podemos copiar para lá o plugin do glassfish aslb-XXXX.jar, o donwload desse plugin pode ser feito pela URL:

http://download.java.net/javaee5/external/<OS>/aslb/jars/aslb-9.1-MS4-b1.jar

4.Na máquina appserver01 diretório: GLASSFISH/bin/asadmin start-domain domain1. Este comando irá subir o servidor com o domínio administrativo.

5.Na máquina appserver01: GLASSFISH/bin/asadmin create-node-agent appservernode01. Node agent é responsável por controlar as instâncias do servidor, neste caso criamos o nó 01 no servidor 01 da vm appserver01.

6.Na máquina appserver02 GLASSFISH/bin/asadmin create-node-agent –host appserver01 appservernode02. Cria o Node agent na máquina virtual 02, apontando para a máqunia virtual appserver01, responsável por controlar as instâncias da appserver02.

7.Na máquina appserver01: GLASSFISH/bin/asadmin start-node-agent appservernode01. Para iniciar o node agent da appserver01.

8.Na máquina appserver02: GLASSFISH/bin/asadmin start-node-agent appservernode02. Para iniciar o node agent da appserver02.

Agora todo o trabalho de configuração do cluster é feito no  Servidor appserver01:

9.No diretório GLASSFISH/bin/asadmin create-cluster appservercluster01. Este comando faz a criação do Cluster no servidor 01.

10.No diretório GLASSFISH/bin/asadmin create-instance –cluster appservercluster01 –nodeagent appservernode01 appserverinstance01. Cria uma instância no cluster 1, no node agent appservernode01 chamado appserverinstance01.

11.No diretório GLASSFISH/bin/asadmin create-instance –cluster appservercluster01 –nodeagent appservernode02 appserverinstance02. Cria uma instância no cluster 1, no node agent appservernode02 chamado appserverinstance02.

12.No diretório GLASSFISH/bin/asadmin start-cluster appservercluster01. Inicia o cluster appservercluster01 com as duas instâncias configuradas.

Para testar, no browser: http://appserver01.com.br:38080/ e http://appserver02.com.br:38080/ e verá a página da sun.

Agora basta fazer o deploy na máquina principal, que ele replica tudo para a máquina 2, a sessão também é replicada automaticamente.

Tem uma aplicação exemplo no Glassfish que está no diretório: GLASSFISH/quickstart/clusterjsp, que você pode fazer deploy para poder visualizar o cluster funcionando, pois ele mostra em qual instância está a sessão.

Àpos a instalação do glassfish, e configuração dos NodeAgents, Instances e criado o cluster, é necessário habilitar o serviço de balanceamento de carga para o cluster, execute o comando para habilitar o serviço:

./asadmin enable-http-lb-server appservercluster01

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

./ asadmin enable-http-lb-application application_name

Para que uma aplicação funcione corretamente em cluster, no deploy precisa ser habilitada a opção Availability. No web.xml da aplicação deve ter também a tag <distributable />, o deploy para ser visualizado no cluster, ou em todas as instâncias do cluster, é necessário que seja feito nos nodeagents.

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.