Network Load Balancer (NLB)

Definición

Un Network Load Balancer (NLB) es una solución de equilibrio de carga de alto rendimiento que opera en la capa 4 (capa de transporte) del modelo OSI. Está diseñado para distribuir eficientemente el tráfico de red a través de múltiples destinos (servidores, máquinas virtuales o contenedores) basándose en conexiones TCP y UDP.

A diferencia de los Application Load Balancers (ALB), que gestionan el tráfico en la capa 7, un NLB funciona a un nivel inferior, lo que lo hace ideal para manejar aplicaciones de alto rendimiento y baja latencia. Puede procesar millones de solicitudes por segundo, lo que lo convierte en una opción preferida para aplicaciones en tiempo real, sistemas financieros y cargas de trabajo de computación de alto rendimiento.

Importancia de Network Load Balancer en DevOps

En DevOps, mantener la disponibilidad, el rendimiento y la escalabilidad de las aplicaciones es crucial. Un Network Load Balancer ayuda en:

Garantizar una alta disponibilidad: distribuye el tráfico entre varios servidores, evitando que un solo nodo se convierta en un cuello de botella.

Manejo de altas cargas de tráfico: Admite millones de conexiones por segundo, lo que lo hace adecuado para aplicaciones a gran escala.

Proporcionar baja latencia: ofrece un reenvío de paquetes más rápido en comparación con los equilibradores de carga de nivel superior.

Soporte de Auto-Scaling: Funciona a la perfección con grupos de auto-scaling, lo que permite una distribución dinámica de la carga de trabajo.

Mejora de la seguridad: Admite la protección DDoS, el enrutamiento IP privado y la integración con AWS Shield y Cloudflare.

Optimización del rendimiento para microservicios: Ideal para entornos en contenedores como Kubernetes, lo que garantiza una distribución eficiente del tráfico entre los pods.

Al integrar los NLB con las canalizaciones de DevOps, los equipos pueden garantizar implementaciones fluidas, una infraestructura escalable y una gestión del tráfico perfecta en varias regiones y zonas de disponibilidad.

Cómo funciona un Network Load Balancer

Un Network Load Balancer enruta eficientemente el tráfico a los servidores backend basándose en las condiciones del tráfico en tiempo real. Los componentes esenciales incluyen:

Listeners

Un listener está configurado para comprobar las solicitudes de conexión entrantes en un puerto y protocolo específicos. Reenvía las solicitudes a los grupos de destino basándose en reglas de enrutamiento predefinidas. NLB admite los protocolos TCP, UDP, TCP_UDP y TLS, lo que garantiza la compatibilidad con diferentes aplicaciones.

Grupos de destino

Los destinos pueden ser instancias EC2, direcciones IP, servidores locales o contenedores. Cada grupo de destino puede tener múltiples destinos y se pueden configurar comprobaciones de estado para garantizar que el tráfico se envíe solo a instancias en buen estado.

Mecanismo de distribución del tráfico

Algoritmo de hash de flujo: para el tráfico TCP, el equilibrador de carga selecciona un destino basándose en el protocolo, la IP de origen, el puerto de origen, la IP de destino, el puerto de destino y el número de secuencia. Para el tráfico UDP, los destinos se eligen basándose en el protocolo, la IP de origen, el puerto de origen, la IP de destino y el puerto de destino.

Equilibrio de carga entre zonas (opcional)

Cuando está habilitado, las solicitudes se distribuyen entre varias zonas de disponibilidad, lo que garantiza una mejor tolerancia a fallos.

Comprobaciones de estado

Las sondas de estado periódicas comprueban si un destino funciona correctamente. Los destinos en mal estado se eliminan automáticamente del grupo de enrutamiento del equilibrador de carga. Las comprobaciones de estado se pueden configurar utilizando los protocolos TCP, HTTP o HTTPS.

Auto-scaling y elasticidad

Los destinos se pueden agregar o eliminar dinámicamente en función de la demanda. También funciona con Auto Scaling Groups en AWS, Azure y Google Cloud para distribuir las cargas de trabajo dinámicamente.

Ventajas de utilizar un Network Load Balancer

Alto rendimiento y escalabilidad

Puede manejar millones de conexiones por segundo con una latencia ultrabaja, lo que lo hace ideal para aplicaciones que requieren un rendimiento constante bajo cargas pesadas.

Soporte para direcciones IP estáticas

A diferencia de los ALB, los NLB proporcionan direcciones IP estáticas, lo que los hace ideales para el enrutamiento basado en DNS y la inclusión en listas blancas de firewalls. También admiten IP elásticas para una mejor integración con las políticas de seguridad.

Disponibilidad y tolerancia a fallos mejoradas

Admite la implementación multi-AZ, lo que garantiza que el tráfico siempre se enrute a destinos en buen estado. Si una instancia falla, el tráfico se redirige automáticamente a una instancia en buen estado.

Estabilidad de la conexión

NLB mantiene conexiones persistentes, lo que garantiza que las sesiones permanezcan intactas a pesar de los picos de tráfico. Es útil para transacciones financieras, transmisión de vídeo y aplicaciones de juegos multijugador.

Reenvío de paquetes de baja latencia

Procesa los paquetes de red a la velocidad del cable, lo que reduce el retraso y mejora el rendimiento en tiempo real.

Desafíos y limitaciones de Network Load Balancer

Si bien los NLB proporcionan un alto rendimiento, también tienen algunas limitaciones:

Funcionalidad limitada de la capa 7: A diferencia de los ALB, los NLB no admiten el enrutamiento basado en URL o en contenido. No puede inspeccionar los encabezados HTTP ni las cookies ni realizar modificaciones avanzadas de las solicitudes.

Complejidad en entornos multi-cloud

La gestión de los NLB en AWS, Azure y GCP requiere configuración y automatización de red adicionales.

Falta de terminación SSL integrada

Los ALB gestionan la terminación SSL, mientras que los NLB pasan el tráfico cifrado, lo que requiere que las instancias de backend procesen el cifrado.

Costes más elevados para cargas de trabajo pequeñas

Dado que NLB se escala automáticamente, puede incurrir en costes más elevados para aplicaciones de bajo tráfico.

Prácticas recomendadas para utilizar Network Load Balancer

Habilitar el equilibrio de carga entre zonas

Distribuye el tráfico uniformemente entre varias zonas de disponibilidad, lo que garantiza una alta disponibilidad.

Configurar correctamente las comprobaciones de estado

Utilice comprobaciones de estado TCP o HTTP para eliminar automáticamente las instancias en mal estado.

Utilice IP elásticas para la previsibilidad

Asigne direcciones IP estáticas para una mejor inclusión en listas blancas de firewalls y enrutamiento basado en DNS.

Supervisar y optimizar el flujo de tráfico

Utilice Amazon CloudWatch, Prometheus o Grafana para analizar los patrones de tráfico y optimizar la distribución de la carga.

Combine NLB con ALB para el equilibrio de carga híbrido

Utilice NLB para el tráfico de alta velocidad y ALB para el enrutamiento avanzado (enrutamiento basado en URL, basado en cookies).

Conclusión

Un Network Load Balancer (NLB) es una solución de alto rendimiento y baja latencia diseñada para distribuir eficientemente el tráfico TCP y UDP a través de múltiples servidores backend. Es ideal para aplicaciones en tiempo real, microservicios y cargas de trabajo de alto rendimiento que requieren IP estáticas, auto-scaling y tolerancia a fallos.

Si bien NLB carece de capacidades de la capa 7, su capacidad para manejar millones de solicitudes por segundo lo convierte en una poderosa herramienta de DevOps y computación en la nube. Siguiendo las mejores prácticas e integrándolas con herramientas de supervisión, los equipos pueden garantizar un equilibrio de carga, seguridad y escalabilidad óptimos de las aplicaciones.

Glosario relacionado