Balanceador de Carga
Como foi falado
nos posts anteriores, o responsável pelo balanceamento de carga será o
apache. Para isso o apache utiliza o
mod_proxy e o mod_proxy_balancer. Com o mod_proxy o apache trabalha como um
proxy FTP, http e ssl. Já o mod_proxy_balancer provê um serviço de
balanceamento de carga para protocolos HTTP, FTP e AJP13. O mod_proxy_balancer
depende do uso do mod_proxy.
Atualmente
existem dois métodos de balanceamento de carga:
- Por
quantidades de requisições onde cada nó do cluster irá receber uma requisição
por vez de modo em que nenhum dos nós fique sobrecarregado.
- Por tráfego,
onde o balanceador dedica um nó do cluster para a requisição que for trafegar
maior quantidade de informações enquanto que as demais requisições serão
enviadas para os outros servidores.
Iniciando a configuração
O cenário onde
será feito a configuração do cluster será descrito logo abaixo:
- Ip do
Servidor= 192.168.56.101
- Aplicação que
será utilizada neste exemplo será um sistema para pedir almoço que foi
desenvolvido na empresa que eu trabalho.
O Sistema é jBroca
A configuração
do balanceador de carga será feita no arquivo de configuração do Apache
“httpd.conf”. No CentOS arquivo de configuração do apache fica dentro do
diretório “/etc/httpd/conf/httpd.conf”.
Dentro do
arquivo httpd.conf insira este trecho no final do arquivo:
<VirtualHost
192.168.56.101:80>
ServerName 192.168.56.101
ProxyRequests Off
<Proxy 192.168.56:80>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /teste balancer://balancer
lbmethod=byrequests stickysession=JSESSIONID nofailover=off
ProxyPassReverse /teste http://192.168.56.101:8080/jbroca
ProxyPassReverse /teste http://192.168.56.101:8081/jbroca
<Proxy balancer://balancer>
BalancerMember http://192.168.56.101:8080/jbroca route=node01 loadfactor=1
BalancerMember http://192.168.56.101:8081/jbroca route=node02 loadfactor=1
</Proxy>
<Location /balancer-manager>
setHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from 192.168.56.101
</Location>
</VirtualHost>
Neste trecho
temos a configuração de um virtual host que será responsável pelo recebimento
das requisições destinadas a url 192.168.56.101/jbroca. Segue abaixo a
descrição de cada item desta configuração:
- ServerName:
determina o nome do virtual host, neste caso o 192.168.56.101/jbroca
-ProxyRequest
off: determina que o apache não será utilizado como um servidor Proxy ou um
reverse Proxy.
- ProxyPass
/teste balancer://balancer lbmethod=byrequests stickysession=JSESSIONID
nofailover=off: qualquer requisição destinada ao context /teste será utilizado
o balanceador de carga balancer para
atender as requisições.
- lbmethod=byrequests:
é onde define o tipo de balanceamento de carga, onde neste caso o balanceamento
de carga é por requisição.
- stickysession=JSESSIONID
: define que o apache irá direcionar os pedidos de uma mesma seção para o mesmo
servidor.
- nofailover=off:
define que todos os servidores dentro cluster serão capazes de superar a falha
algum servidor do cluster que se tornar inativo, o apache desviará as
requisições deste servidor para outro
servidor.
As opções abaixo
são configurações utilizadas para corrigir as respostas vindas dos servidores
no cluster que são balanceados, baseando na requisição vinda do cliente:
ProxyPassReverse
/jbroca http://192.168.56.101:8080/jbroca
ProxyPassReverse
/jbroca http://192.168.56.101:8081/jbroca
Agora é onde
declaramos ao balanceador de carga os membros do cluster com suas respectivas
características:
<Proxy balancer://balancer>
BalancerMember http://192.168.56.101:8080/jbroca route=node01 loadfactor=1
BalancerMember http://192.168.56.101:8081/jbroca route=node02 loadfactor=1
</Proxy>
A ultima opção
habilita o gerenciamento do balanceador de carga para os navegadores do
domínio: 192.168.56.101. Para visualizar o balancer-manager no navegador basta
digitar:http://192.168.56.101/balancer-manager
<Location /balancer-manager>
setHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from 192.168.56.101
</Location>
Com isto, o
apache está configurado para realizar o balanceamento de carga, encaminhando as
requisições para os dois servidores dentro do cluster.
Para testar se
toda configuração está correta, inicie os tomcat’s e inicie o apache se iniciar
corretamente os servidores seu cluster está funcionando e basta acessar no
navegador para verificar se o balanceador está funcionando corretamente. No exemplo
citado basta acessar: http://192.168.56.101/jbroca
Acesse em diferentes
navegadores e verifique se realmente o balanceador está direcionando as requisições
para cada servidor. Neste exemplo que foi utilizado será na barra de endereço
mostra que as requisições estão sendo balanceadas:
http://192.168.56.101/jbroca/autenticarUsuario.do;jsessionid=9225E01A70F0A90B2283244B2CF554D3.node01
http://192.168.56.101/jbroca/autenticarUsuario.do;jsessionid=4B2BF75B6B2F99EAB791D512E52AC626.node02
O endereço
retornado mostra as requisições divididas nos dois tomcat’s do cluster. O
balancer-manager também mostra se as requisições estão sendo balanceadas.
Finalizamos
aqui, espero que todos tenham conseguido compreender o que eu tinha para passar
para vocês. A aplicação não será disponibilizada por ser uma aplicação utilizada
somente na empresa que eu trabalho, então desenvolvam a aplicação de vocês e
testem as aplicações rodando em cluster. Qualquer dúvida é só entrar em contato
que eu estarei disponível para a ajuda-los, muito obrigado a todos.
0sem comentários ainda