Ícone do site CooperaTI

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


➤ Conheça nossas soluções em nuvem: https://k2cloud.com.br


 

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


➤ Conheça nossas soluções em nuvem: https://k2cloud.com.br


 

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.

Sair da versão mobile