Skip to content
Infrastructure 2024-12-28 10 min read

Balanceo de Carga con HAProxy: Guía Completa desde Cero

Cuando un solo servidor ya no da abasto con el volumen de solicitudes que recibe tu aplicación, el balanceo de carga deja de ser una opción y se convierte en una necesidad. **HAProxy** es una de las soluciones de código abierto más usadas para este propósito, capaz de manejar miles de conexiones simultáneas con un consumo de recursos mínimo. Esta guía cubre desde la instalación hasta configuraciones avanzadas: algoritmos de balanceo, HTTPS, panel de estadísticas y buenas prácticas para producción.

Balanceo de Carga con HAProxy: Guía Completa desde Cero
#Infrastructure#HAProxy#Balanceo de Carga#Alta Disponibilidad
T
Equipo Terranode
Editorial

Qué necesitas antes de empezar

  • Al menos dos servidores backend que atenderán las solicitudes reales de tu aplicación.
  • Un servidor frontend donde instalarás HAProxy, que actuará como punto de entrada único.
  • Acceso SSH con privilegios de administrador en todos los servidores involucrados.
  • Conocimientos básicos de redes y Linux para interpretar y ajustar la configuración.

Ventajas de usar HAProxy

  • Alta disponibilidad: redirige automáticamente el tráfico a los servidores que están disponibles, evitando caídas si uno falla.
  • Escalabilidad: maneja miles de conexiones simultáneas con un uso de CPU y memoria muy eficiente.
  • Flexibilidad de protocolos: es compatible con HTTP, TCP y terminación SSL/TLS.
  • Monitoreo integrado: incluye un panel de estadísticas en tiempo real para visualizar el estado de cada backend.

Paso 1: Instalación de HAProxy

En distribuciones basadas en Debian/Ubuntu:

bash
sudo apt update
sudo apt install haproxy -y

En distribuciones basadas en Red Hat/CentOS:

bash
sudo yum install haproxy -y

Verifica que la instalación fue exitosa consultando la versión:

bash
haproxy -v

Paso 2: Configuración básica del balanceador

Edita el archivo principal de configuración:

bash
sudo nano /etc/haproxy/haproxy.cfg

Y define los bloques global, defaults, frontend y backend:

text
global
    log /dev/log local0
    maxconn 2000
    daemon

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

frontend http_front
    bind *:80
    default_backend http_back

backend http_back
    balance roundrobin
    server server1 192.168.1.101:80 check
    server server2 192.168.1.102:80 check

Antes de aplicar los cambios, valida la sintaxis del archivo para evitar dejar el servicio caído por un error tipográfico:

bash
sudo haproxy -c -f /etc/haproxy/haproxy.cfg

Si la validación es correcta, reinicia el servicio:

bash
sudo systemctl restart haproxy

Algoritmos de balanceo disponibles

HAProxy soporta distintos algoritmos según tus necesidades, definidos con la directiva balance dentro del bloque backend:

  • Round Robin (predeterminado): distribuye las solicitudes de forma secuencial entre todos los servidores.
text
balance roundrobin
  • Least Connections: envía cada nueva solicitud al servidor con menos conexiones activas en ese momento, ideal cuando las peticiones tienen duraciones muy variables.
text
balance leastconn
  • Source: asigna un mismo cliente siempre al mismo servidor backend en función de su IP de origen, útil cuando necesitas persistencia de sesión sin usar cookies.
text
balance source

Habilitar el panel de estadísticas

HAProxy incluye un panel web para monitorear en tiempo real el estado de cada servidor backend, tráfico y errores. Agrégalo a tu configuración:

bash
sudo nano /etc/haproxy/haproxy.cfg
text
listen stats
    bind *:8080
    stats enable
    stats uri /stats
    stats auth admin:adminpassword
bash
sudo systemctl restart haproxy

Accede al panel desde http://tu-servidor:8080/stats con las credenciales que definiste. Cambia adminpassword por una contraseña robusta antes de exponer este panel en producción.

Configurar HTTPS en HAProxy

Para producción, lo ideal es usar un certificado válido de Let's Encrypt, pero para pruebas puedes generar uno autofirmado:

bash
sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/ssl/private/haproxy.key -out /etc/ssl/certs/haproxy.crt -days 365 -nodes

cat /etc/ssl/private/haproxy.key /etc/ssl/certs/haproxy.crt > /etc/ssl/private/haproxy.pem

Luego agrega un frontend HTTPS que use ese certificado combinado:

text
frontend https_front
    bind *:443 ssl crt /etc/ssl/private/haproxy.pem
    default_backend http_back
bash
sudo systemctl restart haproxy

Casos de uso prácticos

  • Escalabilidad de comercio electrónico: durante una campaña de ventas con picos de tráfico, HAProxy distribuye las solicitudes equitativamente para evitar que un solo servidor colapse.
  • Alta disponibilidad real: si un servidor backend falla o deja de responder al check de salud, HAProxy deja de enviarle tráfico automáticamente y lo redirige a los servidores disponibles.
  • Optimización de recursos: usando leastconn, los servidores con menor carga reciben las nuevas solicitudes de forma prioritaria, evitando cuellos de botella.

Buenas prácticas para producción

  • Monitorea el panel de estadísticas regularmente para identificar cuellos de botella o backends que fallan con frecuencia.
  • Prueba tu configuración con herramientas como curl apuntando directamente al balanceador para confirmar que el tráfico se distribuye como esperas.
  • Mantén HAProxy actualizado: cada nueva versión suele incluir mejoras de rendimiento y parches de seguridad importantes.
  • Define timeout realistas según el comportamiento de tu aplicación; timeouts demasiado cortos pueden cortar solicitudes legítimas, y demasiado largos pueden dejar conexiones colgadas consumiendo recursos.

HAProxy combina alta disponibilidad, escalabilidad y flexibilidad de protocolos en una herramienta ligera y probada en producción por empresas de todos los tamaños. Empezar con una configuración de round-robin simple y un panel de estadísticas ya te da una base sólida; a partir de ahí puedes ir sumando HTTPS, algoritmos más específicos y reglas de salud según crezcan las necesidades de tu infraestructura. Si tienes dudas durante la implementación, nuestro equipo de soporte técnico está disponible 24/7 para ayudarte.

Ready to take your site to the next level?

LiteSpeed hosting, NVMe and 24/7 support from $3/mo.

View hosting plans

Frequently asked questions