Guía de despliegue

HAProxy en VPS: balanceo de carga y alta disponibilidad

Desplegar en un VPS Cloud →

Tutorial

HAProxy en VPS: balanceo de carga y alta disponibilidad

Despliegue8 min de lectura8 pasos

HAProxy es el estándar de facto para el balanceo de carga y la alta disponibilidad en servidores Linux. En un VPS ServOrbit, se instala en minutos a través del Marketplace y se configura enteramente desde el archivo `/etc/haproxy/haproxy.cfg`. Esta guía en profundidad cubre la configuración completa — frontend/backend, ACL, terminación SSL/TLS, health checks, página de estadísticas y solución de los errores más comunes — para que su infraestructura esté lista para producción.

Contenido· ¿Por qué alojar HAProxy en un VPS dedicado?1/8
  1. 01¿Por qué alojar HAProxy en un VPS dedicado?
  2. 02Lo que puede hacer con HAProxy
  3. 03Instalar y configurar HAProxy en su VPS ServOrbit
  4. 04Health checks avanzados: detectar backends defectuosos
  5. 05Algoritmos de balanceo de carga: ¿cuál elegir?
  6. 06Solución de problemas: errores comunes y soluciones
  7. 07Errores frecuentes y cómo resolverlos
  8. 08Para ir más lejos

¿Por qué alojar HAProxy en un VPS dedicado?

HAProxy (High Availability Proxy) es un software de código abierto de reparto de carga y proxy TCP/HTTP, reconocido por su rendimiento en producción. Alojarlo en un VPS dedicado le permite centralizar la distribución del tráfico entre sus servidores de aplicaciones, garantizar la continuidad del servicio ante el fallo de un nodo y gestionar con precisión las reglas de enrutamiento sin costos de licencia. En un solo VPS de 2 vCPU / 2 GB RAM, HAProxy maneja sin esfuerzo miles de conexiones simultáneas.

Lo que puede hacer con HAProxy

  • Repartir el tráfico HTTP/HTTPS entre varios servidores de aplicaciones con algoritmos configurables (roundrobin, leastconn, source…)
  • Montar un reverse proxy para exponer varios servicios internos detrás de una única dirección IP pública
  • Vigilar la salud de sus backends con health checks automáticos y retirar un servidor defectuoso sin interrumpir el servicio
  • Terminar las conexiones SSL/TLS en el frontal (offloading) para liberar del cifrado a sus servidores de aplicaciones
  • Enrutar el tráfico por dominio o ruta con ACL (host_hdr, path_beg) en un único puerto 443
  • Consultar las estadísticas de tráfico en tiempo real desde la interfaz web integrada (stats uri /stats)

Instalar y configurar HAProxy en su VPS ServOrbit

  1. Pedir un VPS Cloud ServOrbit e iniciar la instalación

    Vaya a /vps-cloud y elija una oferta con al menos 2 vCPU y 2 GB de RAM. Desde el panel de su VPS, abra el Marketplace, busque «HAProxy» y haga clic en Instalar. El aprovisionamiento automático de ServOrbit instala HAProxy vía apt y activa el servicio — no hace falta conexión SSH en esta etapa. También puede instalarlo manualmente: sudo apt update && sudo apt install -y haproxy

  2. Entender la estructura de haproxy.cfg

    El archivo de configuración principal está en /etc/haproxy/haproxy.cfg. Se organiza en cuatro secciones: global (proceso, logs, límites del sistema), defaults (timeouts y modos heredados), frontend (puertos de escucha, reglas ACL) y backend (servidores destino, algoritmo, health checks). Edítelo con: sudo nano /etc/haproxy/haproxy.cfg

  3. Configurar un frontend HTTP/HTTPS y un backend completos

    Aquí tiene una configuración completa para dos servidores de aplicaciones con terminación SSL:

    global
        log /dev/log local0
        maxconn 50000
        user haproxy
        group haproxy
    
    defaults
        log     global
        mode    http
        option  httplog
        timeout connect 5s
        timeout client  30s
        timeout server  30s
    
    frontend http_front
        bind *:80
        redirect scheme https code 301
    
    frontend https_front
        bind *:443 ssl crt /etc/haproxy/certs/bundle.pem
        default_backend app_servers
    
    backend app_servers
        balance roundrobin
        option httpchk GET /health
        server app1 192.168.1.10:3000 check weight 1 inter 2s fall 3 rise 2
        server app2 192.168.1.11:3000 check weight 2 inter 2s fall 3 rise 2

    El parámetro weight envía proporcionalmente más tráfico hacia app2. La directiva option httpchk GET /health envía una petición HTTP al endpoint /health de cada backend para verificar que responde correctamente.

  4. Configurar ACL para enrutamiento por dominio y ruta

    Las ACL permiten enrutar el tráfico a distintos backends según el nombre de dominio o la ruta de la petición. Añada en su frontend:

    frontend https_front
        bind *:443 ssl crt /etc/haproxy/certs/bundle.pem
    
        acl host_api   hdr(host) -i api.misite.com
        acl host_app   hdr(host) -i app.misite.com
        acl path_admin path_beg  /admin
    
        use_backend api_servers   if host_api
        use_backend admin_servers if path_admin
        use_backend app_servers   if host_app
        default_backend app_servers

    La directiva hdr(host) inspecciona la cabecera HTTP Host para identificar el dominio. path_beg /admin enruta todas las peticiones cuya ruta empiece por /admin hacia un backend dedicado.

  5. Terminar SSL/TLS con Let's Encrypt y crear el bundle PEM

    HAProxy espera un archivo .pem que contenga el certificado, la cadena intermedia y la clave privada en ese orden. Tras obtener su certificado con Certbot, cree el bundle:

    sudo mkdir -p /etc/haproxy/certs
    sudo cat /etc/letsencrypt/live/misite.com/fullchain.pem \
             /etc/letsencrypt/live/misite.com/privkey.pem \
      | sudo tee /etc/haproxy/certs/bundle.pem
    sudo chmod 600 /etc/haproxy/certs/bundle.pem

    Para automatizar la renovación, añada un post-hook en /etc/letsencrypt/renewal-hooks/post/haproxy.sh que reconstruya el bundle y ejecute systemctl reload haproxy.

  6. Activar la página de estadísticas de HAProxy

    La página de estadísticas integrada ofrece una vista en tiempo real del estado de cada frontend, backend y servidor. Añada un bloque frontend dedicado:

    frontend stats
        bind *:8404
        stats enable
        stats uri /stats
        stats refresh 10s
        stats auth admin:ContraseñaSecreta
        stats hide-version

    Acceda a http://su-ip:8404/stats. El campo stats auth protege la página con autenticación HTTP Basic.

  7. Validar la configuración y recargar sin interrupción

    Antes de cualquier recarga, valide la sintaxis del archivo de configuración:

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

    Si el comando muestra Configuration file is valid, recargue HAProxy sin cortar las conexiones activas:

    sudo systemctl reload haproxy

    Verifique que el servicio está activo: sudo systemctl status haproxy. El comando reload (no restart) garantiza una recarga sin cortes: las conexiones establecidas terminan normalmente antes de que los workers antiguos se detengan.

  8. Revisar los logs y monitorizar de forma continua

    HAProxy envía sus logs a syslog. Consúltelos en tiempo real:

    sudo journalctl -u haproxy -f

    Cada línea muestra el frontend, el backend, el servidor seleccionado, el código HTTP y los tiempos de conexión — imprescindible para diagnosticar un problema de enrutamiento o un backend lento.

Health checks avanzados: detectar backends defectuosos

La directiva check en cada línea server activa los health checks. Por defecto, HAProxy abre una conexión TCP para verificar que el puerto responde. Para ir más lejos, option httpchk GET /health envía una petición HTTP real y espera un código 2xx. Los parámetros inter 2s fall 3 rise 2 significan: comprobar cada 2 segundos, retirar el servidor tras 3 fallos consecutivos, reintegrarlo tras 2 éxitos. Añada option redispatch para que HAProxy reintente las peticiones fallidas en otro servidor del pool.

Algoritmos de balanceo de carga: ¿cuál elegir?

Desplace la tabla

AlgoritmoComportamientoIdeal para
roundrobinDistribuye las peticiones por turnos entre los servidores. Soporta el parámetro weight.Backends con capacidades equivalentes
leastconnEnvía cada nueva petición al servidor con menos conexiones activas.Conexiones largas (WebSocket, base de datos)
sourceHace hash de la IP fuente del cliente para persistencia de sesión sin cookie.Sesiones que no pueden compartirse entre backends
uriHace hash del URI de la petición para enrutar siempre al mismo backend.Cachés de aplicación donde importa la localidad de los datos

Solución de problemas: errores comunes y soluciones

Estos son los cinco errores más frecuentes al configurar o recargar HAProxy, con su causa y los pasos para resolverlos.

Errores frecuentes y cómo resolverlos

  • [ALERT] Starting frontend http_front: cannot bind socket [0.0.0.0:80] — El puerto 80 ya está ocupado por otro proceso (nginx, apache2). Identifíquelo con sudo ss -tlnp | grep ':80', detenga el servicio en conflicto (sudo systemctl stop nginx) y luego recargue HAProxy.
  • [WARNING] Server app_servers/app1 is DOWN, reason: Layer4 connection problem — HAProxy no puede alcanzar la dirección IP o el puerto del backend. Compruebe que el servidor de aplicaciones está activo, que su cortafuegos permite conexiones desde la IP del VPS HAProxy y que la dirección en haproxy.cfg es correcta.
  • [ALERT] parsing [/etc/haproxy/haproxy.cfg:42] : unknown keyword 'serveur' — Error de sintaxis en el archivo de configuración. El comando haproxy -c -f /etc/haproxy/haproxy.cfg indica el número de línea exacto. Las palabras clave de HAProxy están en inglés: server, frontend, backend. Compruebe también la indentación (HAProxy solo acepta espacios).
  • [ALERT] ssl library has no cert for frontend https_front o certificate expired — El archivo bundle.pem está ausente, vacío o contiene un certificado caducado. Reconstruya el bundle desde los archivos Let's Encrypt actualizados (fullchain.pem + privkey.pem) y luego recargue.
  • La página de estadísticas devuelve HTTP 403 — La directiva stats auth está configurada pero las credenciales no se envían, o la IP origen no está en una lista blanca stats allow-from. Compruebe la URL (/stats por defecto), las credenciales y añada temporalmente stats allow-from 0.0.0.0/0 para diagnosticar.

Consejo: tras cada modificación de haproxy.cfg, ejecute siempre sudo haproxy -c -f /etc/haproxy/haproxy.cfg antes de systemctl reload. Esta validación de sintaxis tarda menos de un segundo y evita una interrupción del servicio si el archivo contiene un error.

Para ir más lejos

La documentación oficial de HAProxy detalla todas las directivas, las opciones TCP avanzadas, el soporte QUIC/HTTP3 (HAProxy 2.6+) y la configuración de alta disponibilidad con Keepalived para conmutación de IP virtual entre dos instancias de HAProxy. Esta guía cubre la puesta en línea en un VPS ServOrbit; la documentación del editor sigue siendo la referencia para los ajustes finos.

Despliegue HAProxy en unos minutos en un VPS Cloud ServOrbit

Lance ahora mismo su VPS Cloud ServOrbit e instale HAProxy con 1 clic desde el Marketplace — infraestructura profesional, sin complejidad.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva