Apache + Load Balance + Lenny

Por curiosidade, fui atrás de uma solução de balanceamento de carga entre servidores  apache. Aqui no trampo,  o  balanceamento de carga em cima dos servidores apache é feita através de hardware  …. eu queria ver como seria possível utilizando o próprio apache como proxy reverso, vi que era possível utilizando o mod_proxy do apache

Após dois dias, alguns   HOWTOS que não funcionam devido ao problema de balanceamento de sessões (sticksessions) e uma aula de boxe perdida, obtive a solução, BINGO!

Apache como Proxy Reverso

Segundo o Wiki …. “Proxy reverso é um servidor proxy que é fica na frente de outros servidores. Tipicamente proxy reverso  é usado na frente de servidores web. Todas as conexões vindo da internet endereçadas para um dos servidores web são roteadas  pelo proxy server… ”

Ou seja, toda e qualquer conexão passa pelo proxy server, que é o ponto de contato entre o cliente e os servidores.

Razões para utilizar um proxy reverso

  • Segurança: o proxy server provê uma camada adicional de segurança separando ou mascarando os tipos de servidores que estão atrás do proxy.
  • Encripitação/ SSL acceleration: Quando sites seguros são criados, a encriptação SSL as vezes não é realizada pelo servidor web e sim pelo proxy reverso que é equipado por um hardware de aceleração SSL.
  • Balanceamento de carga:  Proxy reverso pode distribuir a carga em vários servidores .
  • Caching: Um proxy reverso pode diminuir a carga dos servidores web promovendo cache, diminuindo consideravelmente o  número de requisições nos servidores web.
  • Compressão : O proxy  pode otimizar e comprimir o conteúdo aumentando assim a velocidade.

Cenário

basicClustered.preview

Cenário bem simples: Um proxy reverso na frente dos servidores apache. Toda e qualquer requisição é feita diretamente no proxy que realiza o balanceamento de carga.

Beleza… ele realiza o balanceamento de carga mas… meu site não é estático… tb faço uso de   seções e aí? ele é capaz de saber em qual apache está minha seção??

Calma jovem, a solução a seguir contempla esse tipo de dúvida!! No proxy será criado um coockie balanceado  que será roteado para o servidor web correto!  That's the point!!

Esse foi o grande lance da solução. todos os HowTo espalhados exigiam modificações tanto no proxy quanto nos apaches que estão em baixo e esta solução não... só a configuração no proxy.

Instalação:

Com os pacotes do apache e php já instalados devemos ativar o modúlos mod_proxy , mod_headers .
A maneira Debian de ser… Digite!

# a2enmod proxy

Module proxy  installed; run /etc/init.d/apache2 force-reload to enable.

# a2enmod header

Module headers installed; run /etc/init.d/apache2 force-reload to enable.

Configuração:

No virtual host do proxy adicione as seguintes configurações

———————————————————————————————————————

Header add Set-Cookie “MYCOOKIE=SOMEVALUE.%{BALANCER_WORKER_ROUTE}e; path=/;” env=BALANCER_ROUTE_CHANGED

ProxyPass / balancer://cluster/ lbmethod=byrequests stickysession=MYCOOKIE

<Proxy balancer://cluster>
BalancerMember http://192.168.1.24 route=www1
BalancerMember http://192.168.1.25  route=www2
</Proxy>

ProxyPassReverse / http://192.168.1.24/
ProxyPassReverse / http://192.168.1.25/

—————————————————————————————————————————–

lbmethod : método de balanceamento entre os servidores.

byrequests |bytraffic| bybusyness : o default é byrequest , vide documentação do  mod_proxy do apache.

stickysession=MYCOOKIE

nome do cookie balanceado:  O valor é geralmente setado como: JSESSIONID ou  PHPSESSIONID

BalancerMember: Cada host que compões os servidores web que serão balanceado

Testando…

Utilizando o browser acessamos o nosso proxy http://ip_do_proxy.  Agora para matar a curiosidade veja os cookies no browser mais precisamente a variavel MYCOOkIE nos cookies do proxy!

Anúncios

4 comentários em “Apache + Load Balance + Lenny”

  1. Boa tarde amigo, só uma dúvida, neste cenário, a carga de processamento dá maquina onde roda o apache Load balancer não ficaria prejudicada ? e se esta maquina morrer ?

    1. Opa marcílio…. o load em cima do balanceador fica muito tranquilo…. Comprovado em ambiente do produção do trabalho. No trabalho temos uma arquitetura similar a de baixo.

      balanceador-hardaware
      balanceador-apache balanceador-apache

      frontend frontend …. frontend frontend

      Nada impede que voce monte uma estrutura mais simples utilizando um balanceador-apache e para garantir o serviço casa ocorra uma falha uma solucao de HA (heartbeat + HAPM ) com outro balanceador em Stand By

Deixe um comentário

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

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s