HAProxy : Load balancer opensource

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” .

 

Captura de Tela 2014-11-15 às 18.21.05

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

Captura de Tela 2014-11-15 às 17.10.50

No teste abaixo estou chamando a aplicação através do ip do cluster :

Captura de Tela 2014-11-15 às 19.13.47

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

Translate »