Neste post será apresentado como configurar o HAPROXY para balancear o APACHE .
O HAPROXY acredito que talvez esteja em balanceadores no mercado afora , tais como AX e BIG IP F5 , por isso é interessante saber seu funcionamento a fundo.
1) Cenário :
No meu cenário colocarei meu HAPROXY para receber conexões da “WAN” encaminhando para “LAN” .
HAPROXY
wan – 192.168.11.220
Cluster HTTP – 192.168.11.100
lan – 10.0.2.220
APACHE :
apache-01 – 10.0.2.200
apache-02 – 10.0.2.201
OBS: A instalação do meu Apache está em /srv/apache .
2) Configuração do Apache
yum install httpd -y
No link abaixo deixei descrito como configurar através de pacotes source o APACHE 2.4 :
http://fajlinux.com.br/linux/compilando-e-configurando-o-apache-2-4/
3) Instalando o HAPROXY :
Realize download e descompacte do pacote :
wget -v http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz tar -xvf haproxy-1.4.24.tar.gz
Entre no diretório e compile :
make TARGET=linux26 ARCH=native
Na configuração acima estou compilando um Linux de Kernel 2.6 ou atual com arquitetura do processador nativa da máquina.
Instale:
make install
Copie os binários , arquivos necessários e diretórios / permissões :
cp /usr/local/sbin/haproxy /usr/sbin/ cp /root/haproxy-1.4.24/examples/haproxy.init /etc/init.d/haproxy chmod +x /etc/init.d/haproxy mkdir -p /etc/haproxy
4) Configurando o HAPROXY :
Crie o arquivo haproxy.cfg em /etc/haproxy :
global daemon log /dev/log local4 maxconn 40000 ulimit-n 81000 defaults log global contimeout 4000 clitimeout 42000 srvtimeout 43000 # Dashboard Configuration listen stats :4997 mode http stats enable stats hide-version stats refresh 30s stats show-node stats realm Haproxy\ Statistics stats auth admin:senha stats uri / # HTTP Site Configuration listen lb-http bind 192.168.11.100:80 mode http option forwardfor option httpchk HEAD /healthcheck.txt HTTP/1.0 balance roundrobin # Load Balancing algorithm server apache-01 10.0.2.200:80 weight 1 cookie apache-01 check server apache-02 10.0.2.201:80 weight 1 cookie apache-02 check appsession JSESSIONID len 52 timeout 3h
OBS: No laboratório estou usando algoritmo roundrobin, para saber quais algoritmos podemos empregar o link abaixo é da documentação do HAPROXY:
http://cbonte.github.io/haproxy-dconv/configuration-1.5.html
Ajuste o parâmetro do kernel para permitir que o haproxy vincule o IP virtual
echo "net.ipv4.ip_nonlocal_bind = 1 >> /etc/sysctl.conf sysctl -p
Para o console do HAPROXY pegar parâmetros cria o arquivo healthcheck.txt dentro do diretório web dos servidores Apache, no meu exemplo ficou em /srv/apache/htdocs , mas na configuração default ficará assim :
touch /var/www/html/healthcheck.txt
Inicie o HAPROXY :
service haproxy start
5) Testes finais
Após configurar e iniciar o HAPROXY , vamos acessar o console para verificar o status dos nós sendo balanceados.
O usuário e senha foram definidos no arquivo de configuração “stats auth admin:senha” .
url : http://192.168.11.220
usuário admin
senha senha
No teste abaixo estou chamando a aplicação através do ip do cluster :
6) Sticky Sessions :
Algumas aplicações requerem que um usuário continue com a mesma sessão para o mesmo servidor backend. Esta sessão é configurada através da sticky session , usando o parâmetro appsession no backend que o exija.
Leitura essencial para configuração :
http://haproxy.tech-notes.net/7-1-acl-basics/
https://www.digitalocean.com/community/tutorials/an-introduction-to-haproxy-and-load-balancing-concepts