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.