Balanceo de carga con Haproxy
Ir a la navegación
Ir a la búsqueda
Con HAPROXY podemos montar un servidor frontal que proporcione balanceo de carga en el acceso a nuestros servidores web.
Si queremos redimensionar nuestra web, podríamos tener instalados varios servidores web encargados de gestionar nuestro dominio y como frontend de los mismos un equipo con haproxy instalado encargado de repartir las peticiones entre los distintos servidores web.
Para instalar haproxy en Debian:
# Instalación de haproxy en Debian
apt-get update
apt-get upgrade
apt-get install haproxy
# Una vez instalado, configuramos haproxy:
nano /etc/haproxy/haproxy.cfg
# Ejemplo de contenido de un fichero haproxy:
# Los servidores locales tienen las IP's 192.168.220.10 y 192.168.220.20 respectivamente.
# Esta configuración estaría en el servidor frontal encargado de gestionar todas las peticiones externas a la web.
global
log /dev/log local0
chroot /var/lib/haproxy
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 Accesos_HTTP
bind *:80
mode http
option httpclose
option http-server-close
option forwardfor
# Protección DDOS
stick-table type ip size 100k expire 30s store conn_rate(3s)
# Cortar la conexión si el cliente hace más de 10 peticiones
tcp-request connection reject if { src_conn_rate ge 10 }
tcp-request connection track-sc1 src
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httplog
# Reparto de tráfico estático directamente hacia los servidores web.
use_backend Granja_puerto_80 { path_end .jpg .png .gif .css .js }
default_backend Granja_puerto_80
frontend Accesos_HTTPS
bind *:443
mode tcp
default_backend Granja_puerto_443
backend Granja_puerto_80
mode http
balance roundrobin
server mestre1 192.168.220.10:80 maxconn 400 check
server mestre2 192.168.220.20:80 maxconn 400 check
backend Granja_puerto_443
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server servidor1 192.168.220.10:443 maxconn 400 check
server servidor2 192.168.220.20:443 maxconn 400 check
# Acceso a estadisticas de haproxy
listen stats :4443
mode http
stats enable
stats hide-version
stats realm Balanceador Haproxy\ Estadisticas
stats uri /
stats refresh 5s
stats auth admin:xxxxxxxxxxx
Más información sobre parámetros y configuraciones en: http://www.haproxy.org/