Balanceamento de carga com HAProxy
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://dl.fedoraproject.org/pub/epel/5/x86\_64/epel-release-5-4.noarch.rpm
# 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.
# yum install haproxy
# mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.ori
# vim /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local0
maxconn 4096
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen web-farm 0.0.0.0:80
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
```bash]# /etc/init.d/haproxy start
/sbin/chkconfig haproxy on
### Configuração do servidor Web – Node2 (192.168.10.20):
#### Instalação do repositório EPEL
```bash
# wget http://dl.fedoraproject.org/pub/epel/5/x86\_64/epel-release-5-4.noarch.rpm
# 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
# yum install httpd
# 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
# /etc/init.d/httpd start
# /sbin/chkconfig httpd on
Configuração do servidor Web – Node3 (192.168.10.30):
Instalação do repositório EPEL
# wget http://dl.fedoraproject.org/pub/epel/5/x86\_64/epel-release-5-4.noarch.rpm
# 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
# yum install httpd
# 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
# /etc/init.d/httpd start
# /sbin/chkconfig httpd on
Vídeo Demo
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.
listen stats 0.0.0.0:9000
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!
Deixe um comentário