Configurar o balanceamento de carga entre vários servidores web pode parecer um desafio, porém na verdade não é. O HAProxy é uma ferramenta poderosa, leve, fácil de configurar e com um grande número de recursos sofisticados para gerenciar e servir conteúdo.
Neste artigo, tenho um cenário simples usando três servidores:
- Node1-LB (192.168.10.10): O nó com o HAProxy configurado e com função de load balancer
- Node2 (192.168.10.20): Servidor Web
- Node3 (192.168.10.30): Servidor Web
Todos os servidores estão com CentOS 5.8 e rodando dentro do Vagrant.
Configuração do Node1-LB:
Instalação do repositório EPEL
# wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
# rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
Instalação e Configuração do HAProxy
No caso vamos usar o algoritmo de balanceamento por RoundRobin. Existem outras opções de uso que você pode definir de acordo com sua necessidade. Neste link, tem uma boa explicação sobre eles.
log 127.0.0.1 local0
maxconn 4096
user haproxy
group haproxy
daemon
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
cookie SERVERID rewrite
balance roundrobin
server node2 192.168.10.20:80 cookie app1inst1 check inter 2000 rise 2 fall 5
server node3 192.168.10.30:80 cookie app1inst2 check inter 2000 rise 2 fall 5
Start no serviço e garantia de inicialização no boot
# /sbin/chkconfig haproxy on
Configuração do servidor Web – Node2 (192.168.10.20):
Instalação do repositório EPEL
# wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
# rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
Instalação e configuração básica do Apache
# rm /etc/httpd/conf.d/welcome.conf
# echo Node2 > /var/www/html/index.html
Start no serviço e garantia de inicialização no boot
# /sbin/chkconfig httpd on
Configuração do servidor Web – Node3 (192.168.10.30):
Instalação do repositório EPEL
# wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
# rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
Instalação e configuração básica do Apache
# rm /etc/httpd/conf.d/welcome.conf
# echo Node3 > /var/www/html/index.html
Start no serviço e garantia de inicialização no boot
# /sbin/chkconfig httpd on
Vídeo Demo o/
Assista ao vídeo com a validação do uso:
Plus: WebStats
Se você quiser disponibilizar uma interface Web para visualização das estatísticas do HAProxy similar à esta: http://demo.1wt.eu/, basta adicionar as linhas abaixo no arquivo /etc/haproxy/haproxy.cfg e reiniciar o serviço.
stats uri /haproxy_stats
stats realm HAProxy Statistics
stats auth admin:password
No caso, ao tentar acessar o serviço através da url http://192.168.10.10:9000/haproxy_stats será solicitado o usuário e senha conforme explicitados no arquivo acima (admin/password)
Até a próxima!