Un balanceador de carga es un dispositivo o servicio que distribuye el tráfico de red entrante entre múltiples servidores u otros objetivos, de modo que ninguno de ellos soporte toda la carga. Monitorea la salud de esos objetivos y dirige el tráfico solo a los que están saludables. Debido a que se encuentra entre los clientes y los servidores, los registros del backend registran la IP del balanceador de carga a menos que pase la IP del cliente en un encabezado como X-Forwarded-For.
Distribuir solicitudes de esta manera aumenta la disponibilidad y la tolerancia a fallos de una aplicación. NGINX describe el balanceo de carga como una técnica para optimizar la utilización de recursos, maximizar el rendimiento, reducir la latencia y asegurar configuraciones tolerantes a fallos.
Métodos Comunes de Balanceo de Carga
- Round robin: Las solicitudes van a cada servidor por turno.
- Menos conexiones: La siguiente solicitud va al servidor con menos conexiones activas.
- IP hash: Un hash de la dirección IP del cliente elige el servidor, por lo que el mismo cliente sigue alcanzando el mismo servidor a menos que ese servidor no esté disponible. Esta es una forma de obtener persistencia de sesión.
- Verificaciones de salud: Cuando un servidor falla, el balanceador de carga lo marca y evita enviarle nuevas solicitudes durante un tiempo.
Balanceadores de Carga de Capa 4 vs. Capa 7
Un balanceador de carga de Capa 4 trabaja en la capa de transporte del modelo OSI y enruta conexiones sin leer la solicitud HTTP. Un balanceador de carga de Capa 7 trabaja en la capa de aplicación, por lo que puede enrutar según los detalles de la solicitud, como la ruta de la URL, el encabezado del host o el método HTTP. Un balanceador de carga de Capa 7 también puede agregar la IP del cliente al encabezado X-Forwarded-For antes de pasar la solicitud.
Terminación SSL/TLS
Un balanceador de carga puede terminar SSL/TLS para el backend. Desencripta las solicitudes de los clientes y encripta las respuestas, trabajo que los servidores backend tendrían que hacer de otro modo. Debido a que el apretón de manos TLS consume muchos recursos de CPU, esto quita carga computacional de esos servidores.