El balanceo de carga es fundamental para construir sistemas distribuidos confiables , ya que optimiza la asignación de carga de trabajo entre diversos recursos informáticos como computadoras, clústeres y enlaces de red. Su objetivo es mejorar la utilización de los recursos , maximizar el rendimiento, minimizar el tiempo de respuesta y evitar la sobrecarga de cualquier recurso individual. El uso de múltiples componentes con balanceo de carga aumenta la confiabilidad y la disponibilidad mediante la redundancia. Por lo general, el balanceo de carga implica software o hardware especializado, como un conmutador multicapa o un servidor DNS.
En esencia, un equilibrador de carga se ubica entre los clientes y los backends y realiza funciones clave:
Descubrimiento de servicio
Identificar los backends disponibles y sus direcciones para la comunicación.
Health Check
Evaluar el estado y la preparación de los backends para aceptar solicitudes.
Equilibrio de carga
Distribuir solicitudes individuales entre backends saludables mediante algoritmos. Aprovechar el equilibrio de carga en sistemas distribuidos ofrece varias ventajas:
Abstracción de nombres
Los clientes pueden abordar el balanceador de carga en lugar de conocer cada backend, delegando la resolución de nombres.
La tolerancia a fallos
A través de algoritmos y controles de estado, un equilibrador de carga puede solucionar problemas con backends sobrecargados o que funcionan mal, lo que permite a los operadores abordar los problemas a su conveniencia.
Beneficios de rendimiento y costos
El equilibrio de carga puede localizar el tráfico de solicitudes dentro de las zonas, reduciendo la latencia y minimizando los costos generales del sistema al optimizar el consumo de ancho de banda.
Equilibrador de carga versus proxy
En las discusiones sobre balanceadores de carga de red, los términos "equilibrador de carga" y "proxy" a menudo se usan indistintamente en la industria. Esta publicación considerará estos términos como generalmente equivalentes. Si bien no todos los proxies sirven como balanceadores de carga, la mayoría de los proxies funcionan principalmente como balanceadores de carga.
Equilibrio de carga L4
En el debate actual sobre el balanceo de carga en la industria, las soluciones suelen dividirse en dos categorías principales: L4 y L7. Estas se refieren a las capas 4 y 7 del modelo OSI , respectivamente. Sin embargo, si bien este modelo proporciona un marco de referencia, no abarca por completo la complejidad de las soluciones modernas de balanceo de carga.
Los balanceadores de carga L4 suelen operar a nivel de conexión/sesión TCP/UDP , reorganizando los bytes para asegurar que lleguen al servidor backend correcto. Sin embargo, no tienen en cuenta los detalles específicos de la aplicación que contienen estos bytes, que podrían provenir de diversos protocolos como HTTP, Redis o MongoDB.
Equilibrio de carga L7
A medida que todos los protocolos modernos avanzan hacia la multiplexación y las conexiones persistentes para lograr eficiencia, especialmente con la sobrecarga de crear conexiones TLS cifradas, la falta de coincidencia con los balanceadores de carga L4 se vuelve más evidente con el tiempo. Este problema se soluciona mediante balanceadores de carga L7, que ofrecen importantes beneficios al permitir la inspección del tráfico de aplicaciones.
L7, según el modelo OSI, abarca varias capas de abstracción de equilibrio de carga. Por ejemplo, cuando tratamos con tráfico HTTP, tenemos las siguientes subcapas:
Seguridad de la capa de transporte (TLS) opcional, que consideraremos L7 para esta discusión a pesar de los debates en curso entre expertos en redes.
El protocolo HTTP físico (HTTP/1 o HTTP/2).
El protocolo HTTP lógico, incluidos encabezados, datos del cuerpo y avances.
Protocolos de mensajería San Pancho gRPC, DESCANSO, etc.
Los equilibradores de carga L7 sofisticados pueden ofrecer características para cada una de estas subcapas, mientras que otros pueden centrarse en un subconjunto más pequeño, ubicándolos aún dentro de la categoría L7. En comparación con la categoría L4, el panorama de los balanceadores de carga L7 es mucho más complejo desde la perspectiva de las características. Y es importante señalar que esta discusión se ha centrado únicamente en HTTP; Otros protocolos de aplicación L7, como Redis, Kafka, MongoDB, etc., también se benefician del equilibrio de carga L7.
Relevancia de los balanceadores de carga L4
A pesar de la previsión de que los balanceadores de carga L7 acabarán sustituyendo a los balanceadores de carga L4 para la comunicación entre servicios, los balanceadores de carga L4 siguen siendo muy relevantes, especialmente en el borde de las grandes arquitecturas distribuidas.
Colocar balanceadores de carga L4 dedicados antes que los balanceadores de carga L7 en el borde ofrece varias ventajas:
Los balanceadores de carga L7 manejan una fracción menor de la carga de tráfico bruto en comparación con los balanceadores de carga L4 optimizados debido a su sofisticado análisis, transformación y enrutamiento del tráfico de aplicaciones. Esto hace que los balanceadores de carga L4 muy eficaces en el manejo de ciertos tipos de Ataques DoS, como inundaciones SYN y ataques de inundación de paquetes genéricos.
Los balanceadores de carga L7 se someten a un desarrollo, implementación y aparición de errores más activos en comparación con los balanceadores de carga L4. Tener un balanceador de carga L4 al frente simplifica la implementación procesos durante las implementaciones del balanceador de carga L7.
Debido a la complejidad de la funcionalidad de los balanceadores de carga L7, estos son más propensos a errores. Contar con un balanceador de carga L4 que pueda redirigir el tráfico en caso de fallos y anomalías contribuye a un sistema general más estable.
Topologías del equilibrador de carga
El proxy medio La topología suele ser la más sencilla de implementar. Sin embargo, es vulnerable a ser un punto único de falla, tiene limitaciones de escalabilidad y opera de manera opaca.
El proxy de borde La topología comparte similitudes con el proxy intermedio, pero suele ser inevitable.
El biblioteca cliente integrada La topología cuenta con un rendimiento y escalabilidad superiores. Sin embargo, requiere implementación en todos los idiomas y requiere actualizaciones de la biblioteca en todos los servicios.
El proxy de sidecar Es posible que la topología no coincida con el rendimiento de la topología de la biblioteca cliente incorporada, pero está libre de sus limitaciones.
Equilibrio de carga global
La evolución del equilibrio de carga verá un cambio hacia el tratamiento de los equilibradores de carga individuales como productos estandarizados. El verdadero potencial innovador y comercial se concentrará en la plano de control. Los balanceadores de carga globales poseerán cada vez más capacidades más allá de las de cualquier balanceador de carga individual. Por ejemplo:
Identificar y redirigir automáticamente el tráfico alrededor de fallas en zonas específicas.
Implementación de protocolos de seguridad globales y políticas de enrutamiento.
Identificar y mitigar patrones de tráfico irregulares, como ataques DDoS, utilizando aprendizaje automático y redes neuronales.
Ofreciendo visualizaciones e interfaces de usuario centralizadas para una comprensión y gestión integrales de todo el sistema distribuido.
Para permitir el equilibrio de carga global, los balanceadores de carga que funcionan como plano de datos deben presentar capacidades avanzadas de configuración dinámica.
Algunas conclusiones
Los balanceadores de carga desempeñan un papel crucial en los sistemas distribuidos contemporáneos. Por lo general, se clasifican en dos clases: L4 y L7. Tanto los balanceadores de carga L4 como L7 tienen importancia en las arquitecturas modernas. Los balanceadores de carga L4 están evolucionando hacia soluciones de hash consistentes, distribuidas y escalables horizontalmente, mientras que los balanceadores de carga L7 están experimentando actualmente una inversión sustancial, impulsada por la adopción generalizada de arquitecturas dinámicas de microservicios.
El futuro del equilibrio de carga reside en el equilibrio de carga global y la división entre el plano de control y el plano de datos. Aquí es donde surgirán la mayoría de las próximas perspectivas comerciales e innovadoras.
La industria está haciendo una rápida transición hacia la utilización de software de código abierto (OSS) y hardware básico para soluciones de redes.
Los proveedores convencionales de balanceo de carga serán los primeros en ser reemplazados por software de código abierto y proveedores de servicios en la nube.
El RELIANOID La solución es adecuada para cada necesidad, con un Controlador de entrega de aplicaciones multicapa: Solución completa de Application Delivery Controller con la capacidad de comportarse como un equilibrador de carga y un servicio de alta disponibilidad en diferentes capas (L2, L3, L4 y L7), y entregada de forma local, virtual y en la nube.