Cómo funciona el balanceo de carga - Estabilización del servicio mediante distribución de carga

14 min de lectura | 2025.12.18

¿Qué es el balanceo de carga?

El balanceo de carga (distribución de carga) es una tecnología que distribuye el tráfico entre múltiples servidores para mejorar la disponibilidad y el rendimiento general del sistema.

¿Por qué es necesario?: Es esencial para manejar grandes cantidades de solicitudes que un solo servidor no puede procesar, y para continuar el servicio en caso de fallo del servidor.

Configuración básica del balanceador de carga

flowchart TB
    LB["Balanceador de carga"]
    LB --> S1["Server 1"]
    LB --> S2["Server 2"]
    LB --> S3["Server 3"]

Los clientes acceden a la dirección IP del balanceador de carga, y el balanceador distribuye las solicitudes al servidor apropiado.

Balanceo de carga L4 y L7

Balanceo de carga L4 (capa de transporte)

Realiza la distribución de carga a nivel TCP/UDP.

  • Funcionamiento: Distribuye por dirección IP y número de puerto
  • Ventajas: Rápido, bajo overhead
  • Desventajas: No puede ver el contenido HTTP

Balanceo de carga L7 (capa de aplicación)

Realiza la distribución de carga a nivel HTTP.

  • Funcionamiento: Distribuye por URL, cabeceras, cookies, etc.
  • Ventajas: Enrutamiento flexible
  • Desventajas: Mayor carga de procesamiento
Ejemplo de balanceo de carga L7:
/api/*      → Grupo de servidores API
/static/*   → Servidores de archivos estáticos
/admin/*    → Servidores del panel de administración

Principales algoritmos de distribución de carga

Round Robin

Distribuye las solicitudes a cada servidor en orden secuencial.

Solicitud 1 → Server A
Solicitud 2 → Server B
Solicitud 3 → Server C
Solicitud 4 → Server A (se repite)

Adecuado cuando: El rendimiento de los servidores es uniforme

Round Robin ponderado (Weighted Round Robin)

Ajusta la proporción de distribución según el rendimiento del servidor.

Server A (weight: 3) → 3 solicitudes
Server B (weight: 2) → 2 solicitudes
Server C (weight: 1) → 1 solicitud

Menor número de conexiones (Least Connections)

Distribuye al servidor con el menor número de conexiones actuales.

Server A: 10 conexiones activas
Server B: 5 conexiones activas  ← La siguiente solicitud va aquí
Server C: 8 conexiones activas

Adecuado cuando: Hay variación en los tiempos de procesamiento

Hash de IP (IP Hash)

Determina el servidor basándose en el valor hash de la dirección IP del cliente.

hash(192.168.1.100) % 3 = 1 → Server B
hash(192.168.1.101) % 3 = 0 → Server A

Adecuado cuando: Se necesita mantener la sesión

Health Check

El balanceador de carga verifica periódicamente el estado de los servidores y excluye automáticamente los servidores con fallos.

Health Check activo

Balanceador de carga → GET /health → Cada servidor
                      ↓
              200 OK → Normal (incluido en la distribución)
              5xx/Timeout → Anormal (excluido)

Health Check pasivo

Monitorea el éxito/fallo de las solicitudes reales.

5 fallos consecutivos → Servidor excluido
Después de 30 segundos → Se intenta distribuir nuevamente

Persistencia de sesión (Sticky Session)

Mecanismo para enviar continuamente las solicitudes del mismo usuario al mismo servidor.

Métodos de implementación

MétodoDescripción
CookieAlmacena el ID del servidor en una cookie
Dirección IPFija por IP del cliente
Parámetro URLIncluye el ID de sesión en la URL

Consideraciones

Las sticky sessions pueden causar desequilibrio en la carga. Cuando sea posible, gestiona la información de sesión en un almacén externo (como Redis) y apunta a un diseño stateless.

Balanceadores de carga representativos

Software

NombreCaracterísticas
NginxAlto rendimiento, función de proxy inverso
HAProxyAlta disponibilidad, funciones abundantes
EnvoyCloud native, compatible con service mesh

Servicios en la nube

ServicioProveedor
ALB/NLBAWS
Cloud Load BalancingGoogle Cloud
Azure Load BalancerMicrosoft Azure

Configuración de alta disponibilidad

La redundancia del propio balanceador de carga también es importante.

flowchart TB
    VIP["IP Virtual<br/>(VIP/Floating IP)"]
    VIP --> Active["LB (Activo)"]
    Standby["LB (Standby)"] -->|Monitoreo| Active
    Active --> Servers["Grupo de servidores"]

En una configuración Active-Standby, cuando el balanceador de carga activo falla, el standby toma el control automáticamente.

Resumen

El balanceo de carga es una tecnología esencial en los servicios web modernos. Mediante la selección apropiada de algoritmos, la configuración de health checks y una configuración de alta disponibilidad, se puede lograr una operación de servicio estable.

← Volver a la lista