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.