Balanceo de carga básico con HAProxy

Introducción al balanceo de carga con HAProxy

El balanceo de carga (load balancing) es una técnica esencial para mejorar la disponibilidad, escalabilidad y rendimiento de aplicaciones web y servicios en red. HAProxy (High Availability Proxy) es una de las soluciones más populares y maduras en este ámbito, ampliamente utilizada en entornos de producción de alto tráfico.

En este artículo exploraremos de forma detallada y exhaustiva los conceptos básicos, la arquitectura, la configuración y las mejores prácticas para implementar un balanceador de carga con HAProxy.

1. ¿Qué es HAProxy

  • Definición: HAProxy es un software libre de proxy inverso y balanceador de carga TCP/HTTP, capaz de distribuir peticiones entre múltiples servidores backend.
  • Origen: Creado en 2000 por Willy Tarreau, con licencia GPLv2.
  • Casos de uso: Equilibrar tráfico web, almacenar en caché respuestas, descifrar SSL, monitorizar salud de servidores y más.

2. Arquitectura básica de HAProxy

En su forma más simple, HAProxy se despliega en modo proxy inverso con tres componentes principales:

  • Frontend: Punto de entrada de clientes. Escucha peticiones HTTP/TCP en uno o varios puertos.
  • Backends: Conjunto de servidores de aplicación o bases de datos que atienden las peticiones.
  • Statistics Socket: Interfaz para métricas y control (oftentimes en socket UNIX o puerto TCP).

3. Instalación y requisitos

3.1. Requisitos previos

  • Sistema operativo Linux (Debian, Ubuntu, CentOS, RHEL).
  • Acceso root o privilegios sudo.
  • Puertos abiertos en firewall (p. ej., 80, 443).

3.2. Instalación en Debian/Ubuntu

  • Actualizar repositorios: sudo apt-get update
  • Instalar HAProxy: sudo apt-get install haproxy

3.3. Instalación en CentOS/RHEL

  • Habilitar EPEL: sudo yum install epel-release
  • Instalar HAProxy: sudo yum install haproxy

4. Estructura del archivo de configuración

El fichero principal suele ubicarse en /etc/haproxy/haproxy.cfg y se divide en varias secciones:

  • global: Parámetros de bajo nivel (procesos, logging, chroot).
  • defaults: Valores por defecto para todos los frontends y backends.
  • frontend: Definición de listeners.
  • backend: Conjunto de servidores destino.
  • listen: Combina frontend y backend en un mismo bloque (modo multiuso).

5. Modos de balanceo y algoritmos

HAProxy soporta balanceo de capa 4 (TCP) y capa 7 (HTTP). Algunos algoritmos comunes:

  • roundrobin: Reparte peticiones por turnos.
  • leastconn: Envía al servidor con menos conexiones activas.
  • source: Usa dirección IP de cliente para elegir backend (afinidad).
  • uri: Balanceo basado en partes de la URI.

6. Ejemplo de configuración básica

global
log /dev/log local0
maxconn 2000
tune.ssl.default-dh-param 2048

defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms

frontend http_front
bind :80
default_backend http_back

backend http_back
balance roundrobin
server app1 10.0.0.1:80 check
server app2 10.0.0.2:80 check

7. Monitorización y métricas

HAProxy dispone de un módulo de estadísticas HTTP que puede activarse con stats:

listen stats
bind :1936
mode http
stats enable
stats uri /haproxystats
stats auth admin:secret
Métrica Descripción
Current Sessions Conexiones activas en tiempo real.
Bytes In/Out Volumen de datos entrantes/salientes.
Errors Errores de respuesta y timeouts.

8. Alta disponibilidad con Keepalived

Para evitar que el balanceador sea un punto único de fallo, se puede implementar failover usando Keepalived y VRRP:

  • Configuración de direcciones IP virtuales (VIP).
  • Detección de fallo del nodo master y promoción de un backup.
  • Sincronización de estado entre instancias.

9. Seguridad y VPN

En entornos distribuidos, es frecuente conectar backends o nodos HAProxy a través de redes privadas virtuales (VPN) para asegurar el tráfico:

  • OpenVPN: VPN robusta basada en SSL/TLS que soporta múltiples modos de autenticación.
  • WireGuard: Ligera, moderna y de alto rendimiento, integrada en el kernel de Linux.
  • IPsec: Conjunto de protocolos estándares para comunicaciones seguras en IP.

Recomendaciones de seguridad:

  • Deshabilitar métodos de cifrado débiles.
  • Usar certificados de cliente en VPN y SSL/TLS.
  • Aplicar políticas de firewall restrictivas.

10. Mejores prácticas

  • Configuración mínima y modular: Mantener archivos de configuración legibles y separados por función.
  • Pruebas antes de producción: Validar cambios con haproxy -c -f y entornos de staging.
  • Monitorización continua: Integrar con sistemas como Prometheus, Grafana o ELK.
  • Escalado horizontal: Añadir más instancias de HAProxy o servidores backend según demanda.
  • Rotación de logs: Configurar logrotate para no saturar disco.

Conclusión

HAProxy es una herramienta poderosa y flexible para implementar balanceo de carga en ambientes de misión crítica. Con una configuración adecuada, monitorización continua y prácticas de seguridad, es posible alcanzar niveles de disponibilidad y rendimiento sobresalientes. Este artículo ha presentado los fundamentos para que, tanto administradores como desarrolladores, puedan iniciar su despliegue de HAProxy con confianza y solidez.

Download TXT




Deja una respuesta

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