HAPROXY : Health Checks para Sites

No Haproxy podemos definir um parâmetro para que se possa reconhecer que houve uma indisponibilidade em um nó e será encaminhado a requisição para outro .

Vou deixar aqui alguns exemplos que utilizo no dia a dia e o link de referência com a documentação completa.

haproxy_server_state_checks

Em todos os exemplos será definido os seguintes opções antes do servidor :

* default-server : Requisição cairá no servidor default.
* inter : Usado para saber de quanto em quanto tempo será realizado o check.
* fall : Usado para monitorar quantas vezes será realizada antes de entra a falha.
* rise : Usado para monitorar a volta do servidor que estava fora .

1) Health Check em Camada 7 :

Neste exemplo estou checando o contexto /web01/index.html para o backend HTTP.

 option httpchk get /web01/index.hmtml HTTP/1.0\r\nHost:\ example.com
 default-server inter 3s fall 3 rise 2
 server srv1 192.168.0.5:80 check
 server srv2 192.168.0.6:80 check

backend bk_myapp
mode tcp

 option httpchk get /web01/index.html HTTP/1.0\r\nHost:\ www.domain.com
 default-server inter 3s fall 3 rise 2
 server srv1 192.168.0.5:443 check check-ssl
 server srv2 192.168.0.6:443 check check-ssl

2) Testes Finais :

Momento em que o site fica em erro 500 e começa a direcionar a requisição para o outro servidor :

haproxy-healthcheck01

Momento em que o servidor começa a voltar a responder e o servidor volta para o pool :

haproxy-healthcheck02

Referência :

Documentação sobre os Healths Checks da HAPROXY :
http://www.haproxy.com/doc/aloha/7.0/haproxy/healthchecks.html#check-interval

Documentação sobre o conceito de LB Layer 7 :
https://devcentral.f5.com/articles/layer-7-switching-load-balancing-layer-7-load-balancing