Configurando rapidamente haproxy
By: Date: diciembre 13, 2016 Categories: Consultoria y Manuales

El haproxy es un proxy inverso que clusteriza o agrupa servicios en servidores diferentes mientras balancea la carga y se asegura de que los servicios están vivos de esta forma nunca le envía trabajo a servidores que han caído mientras reparte la carga de forma inteligente entre los servidores que están disponibles para despachar.

La siguiente configuración de ejemplo es un Squid Proxy Clusterizado.

El servidor 1 tiene salida por un enlace dedicado de Reduno/Uninet/Telmex
El servidor 2 por un enlace dedicado de CABLECOM

Este Haproxy agrupa a 2 proxy squid saliendo por diferentes enlaces cuando operan normalmente el tráfico es balaceado entre los 2 pero si alguno de los 2 cae el tráfico se redistribuye en el único proxy sobreviviente

La configuración de un HAproxy puede dividirse en bloques, el bloque generales y globales, el bloque de servicio de entrada y el bloque de salida para el bloque de entrada. Haproxy entiende del protocolo http pero como ahora casi todo es https es mejor usar usar TCP directamente.

Bloque de configuraciones globales.

global
log localhost local0
user haproxy
group haproxy
daemon

defaults
log global
timeout client 100s
timeout server 100s
timeout queue 60s
timeout connect 5s
timeout http-keep-alive 1s
timeout http-request 4s # slowloris protection

option tcp-smart-accept
option tcp-smart-connect
option abortonclose
option redispatch
option contstats

maxconn 6000
retries 3

Bloque de servicio de entrada, se prepara al haproxy para escuchar por TCP el puerto 3128 ( simula ser el squid proxy original ) que es el puerto default de squid, se declara. La línea default_backend Cluster_Proxy nos dice cual es el grupo de servidores que dará salida al servicio de entrada

frontend Entrada_al_Proxy
bind 10.10.10.1:3128
mode tcp
default_backend Cluster_Proxy

El bloque de grupo de salida

backend Cluster_Proxy
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server servidor1 10.10.20.1:3128 maxconn 3000 check
server servidor2 10.10.30.22:3128 maxconn 3000 check

El bloque de monitoreo, el haproxy entrega una consola web para ver el estado del los servicios de entrada y los grupos de salida, ver que servidores operan correctamente o cuales han caido

listen stats 10.10.10.1:8081
mode http
stats enable
stats hide-version
stats realm Balanceador Haproxy Estadisticas
stats uri /
stats refresh 5s
stats auth admin:clave

Archivo completo

global
log localhost local0
user haproxy
group haproxy
daemon

defaults
log global
timeout client 100s
timeout server 100s
timeout queue 60s
timeout connect 5s
timeout http-keep-alive 1s
timeout http-request 4s # slowloris protection

option tcp-smart-accept
option tcp-smart-connect
option abortonclose
option redispatch
option contstats

maxconn 6000
retries 3

frontend Entrada_al_Proxy
bind 10.10.10.1:3128
mode tcp
default_backend Cluster_Proxy

backend Cluster_Proxy
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server servidor1 10.10.20.1:3128 maxconn 3000 check
server servidor2 10.10.30.22:3128 maxconn 3000 check

listen stats 10.10.10.1:8081
mode http
stats enable
stats hide-version
stats realm Balanceador Haproxy Estadisticas
stats uri /
stats refresh 5s
stats auth admin:clave

Imagen de la consola

Vídeo del tema

4 thoughts on “Configurando rapidamente haproxy

  1. Usa: Google Chrome Google Chrome 59.0.3071.115 en Windows Windows NT - Detectado...

    Se puede enviar la ip del cliente al proxy, o hay alguna forma de manejar las acl desde el haproxy, gracias de antemano.

  2. Usa: Google Chrome Google Chrome 62.0.3202.89 en Linux Linux - Detectado...

    Que diferencia hay entre haproxy y varnish. Haz usado varnish? Crees que varnish sea mejor a haproxy. Saludos y Gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *