Apache com Alta Disponibilidade e Load Balancer

Com esse post irei configurar um Load Balance com dois nós utilizando uma configuração ativa/passiva utilizando HAProxy e keepalived. O load balancer fica entre os usuários e 2 servidores web apache, que mantenham o mesmo conteúdo. O load balancer distribui os pedidos para os 2 servidores apache e também verifica o estado dos mesmos, caso um dos servidores esteja fora, os pedidos serão automaticamente redirecionados para o outro servidor. O HAProxy trabalha com sessões, que significa que você pode usá-lo com qualquer aplicação web que faça uso de sessões (fóruns, sites de compras – carrinho, etc).

Precisamos de 4 hosts para o exemplo:

Vamos instalar os servidores apache primeiro e configura-los:
apache1/apache2:
# apt-get install apache2
O ha-proxy será configurado como proxy transparente e os IPs dos clientes serão repassados ao campo X-Forwarded-for, e devemos alterar a opção LogFormat do apache para não registrar o endereço do nosso Load Balancer. Vamos alterar o arquivo /etc/apache2/apache2.conf, substituir %h por %{X-Forwarded-for}i :
# vi /etc/apache2/apache2.conf

Além dessa configuração temos que fazer o haproxy verificar se os servidores apache estão funcionando e para isso iremos criar o arquivo /var/www/check.txt que o haproxy irá procurar, e para evitar que os logs com esses acesso ao arquivo sejam registrados precisamos modificar o nosso VirtualHost default.
# vi /etc/apache2/sites-available/default

Comente qualquer outra linha CustomLog
Vamos criar o arquivo check.txt em /var/www
# touch /var/www/check.txt
reiniciar os servidores apache:
# invoke-rc.d apache2 restart
Com os servidores apache configurados vamos partir os 2 Load Balancer
Instalação haproxy (HA-proxy1, HA-proxy2)
# apt-get install haproxy
O arquivo de configuração é /etc/haproxy/haproxy.cfg mas vamos criar outro e fazer o backup do original
# cd /etc/haproxy
# mv haproxy.cfg haproxy.cfg.original
# vi haproxy.cfg

Configurar o daemon do haproxy para ser carregado na inicialização:
# vi /etc/default/haproxy

Ajustar o parâmetro do kernel para permitir que o haproxy vincule o IP virtual (10.1.1.99)
# vi /etc/sysctl.conf

# sysctl -p
Instalar o keepalived:
# apt-get install keepalived
em HA-proxy1:
# vi /etc/keepalived/keepalived.conf

Iniciar o keepalived
# invoke-rc.d keepalived start
Verifique se o IP virtual foi criado (não aparece com ifconfig)
# ip addr show eth0
Agora em HA-proxy2
# vi /etc/keepalived/keepalived.conf

Iniciar o keepalived
# invoke-rc.d keepalived start
Verifique se o IP virtual foi criado (não aparece com ifconfig)
# ip addr show eth0
Vamos iniciar o haproxy em ambas as máquinas:
# invoke-rc.d haproxy start
Pronto, para testar basta conectar no endereço virtual http://10.1.1.99 e verificar se está funcionando. Seria interessante também parar um dos servidores apache e verificar se ainda está funcionando.
As estatísticas do haproxy podem ser acessadas em: http://10.1.1.99/haproxy?stats
O nome do usuário e senha está cadastrado em “stats auth user1:senha” no arquivo /etc/haproxy/haproxy.cfg
Agora vamos gerar algum movimento nos servidores, utilizando ab (ApacheBench)
Vamos gerar 15000 requisições com 100 conexões concorrentes
# ab -n 15000 -c 100 http://10.1.1.99/

As estatísticas do haproxy podem ser acessadas em: http://10.1.1.99/haproxy?stats
O nome do usuário e senha está cadastrado em “stats auth user1:senha” no arquivo /etc/haproxy/haproxy.cfg

Links:

HaProxy: http://www.haproxy.1wt.eu

Keepalived: http://www.keepalived.org

Fonte:
Howtoforge: http://www.howtoforge.com

Espero que tenham gostado do post e não se esqueçam assinar o nosso portal.

Share

    Comments

    1. Bom dia.
      Sempre quis aprender algo desse tipo.
      Obrigado pelo post.

    2. Show de bola!!! Keepalive is the best HA!!! Agora faz um sobre LoadBalance!!!
      Muito bom!!!

    3. bem legal cara.. eu tenho uma grande duvida.. na hora de atualizar o coteudo desses servidores como fica? imagina um mantedor atualizando esse site.. como atualizar os nós de uma vez só?
      abs
      Michel

    4. Ótimo post Ricardo, me ajudou bastante.
      Abraços !

    Deixe um comentário

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

    © 2019 All Rights Reserved. Cooperati.