Revisión de conceptos: equilibrio de carga, equilibrio de carga de cuatro capas, equilibrio de carga de siete capas

Autor original: NGINX

Enlace original:Revisión de conceptos: equilibrio de carga, equilibrio de carga de cuatro capas, equilibrio de carga de siete capas

Fuente de reimpresión: comunidad de código abierto NGINX


La única comunidad china oficial de NGINX, toda ennginx.org.cn 

Equilibrar la carga del tráfico de red entre servidores, clientes y servidores proxy es clave para retener clientes y optimizar su infraestructura. Lea este artículo para conocer las conexiones y las diferencias entre el equilibrio de carga, el equilibrio de carga de Capa 4 y el equilibrio de carga de Capa 7.

¿Qué es el equilibrio de carga?

El equilibrio de carga es la distribución eficiente del tráfico de red entrante a un grupo de servidores backend, también conocido como "granja de servidores" o "grupo de servidores".

Los sitios web modernos con mucho tráfico deben atender cientos de miles o incluso millones de solicitudes simultáneas de usuarios o clientes y devolver el texto, las imágenes, el vídeo o los datos de la aplicación correctos de forma rápida y fiable. Para escalar de manera rentable y satisfacer estas demandas masivas de datos, las mejores prácticas informáticas modernas a menudo requieren agregar más servidores.

Un equilibrador de carga actúa como un "comandante de tráfico" que se ubica frente a los servidores y es responsable de enrutar las solicitudes de los clientes a todos los servidores que puedan satisfacer esas solicitudes, mientras maximiza la velocidad y la utilización de la capacidad y garantiza que ningún servidor esté sobrecargado. degradación.

Si un servidor falla, el equilibrador de carga redirige el tráfico a los servidores en línea restantes. Después de agregar un nuevo servidor a un grupo de servidores, el equilibrador de carga envía automáticamente solicitudes al servidor.

De esta forma, el balanceador de carga realiza las siguientes funciones:

  • Distribuya eficientemente las solicitudes de los clientes o la carga de la red entre múltiples servidores

  • Envíe solicitudes únicamente a servidores en línea, garantizando alta disponibilidad y confiabilidad.

  • Proporciona flexibilidad para agregar o eliminar servidores según sea necesario

Diagrama de equilibrio de carga

Algoritmo de equilibrio de carga

Los diferentes algoritmos de equilibrio de carga ofrecen diferentes ventajas; la elección del método de equilibrio de carga depende de sus necesidades:

  • Programación de sondeo : distribuye las solicitudes a los grupos de servidores en orden.

  • Menos conexiones : envía nuevas solicitudes al servidor con la menor cantidad de conexiones de clientes actuales. Determine qué servidor tiene la menor cantidad de conexiones de clientes en función de la potencia informática relativa de cada servidor.

  • Tiempo mínimo : envía la solicitud a un servidor seleccionado mediante una fórmula que combina el tiempo de respuesta más rápido con el menor número de conexiones activas. Esta es una característica única de NGINX Plus.

  • Hash : distribuye solicitudes en función de una clave que usted defina, como la dirección IP del cliente o la URL de solicitud. NGINX Plus tiene la opción de aplicar hash consistente para minimizar la redistribución de la carga cuando cambian los grupos de servidores ascendentes.

  • IP Hash : utiliza la dirección IP del cliente para determinar qué servidor recibe la solicitud.

  • Dos selecciones aleatorias : selecciona aleatoriamente dos servidores y envía la solicitud al servidor aplicando el algoritmo de menor cantidad de conexiones (o el algoritmo de menor tiempo si NGINX Plus está configurado) El servidor seleccionado .

Ventajas del equilibrio de carga

  • Reducir el tiempo de inactividad

  • Escalabilidad

  • redundancia

  • flexibilidad

  • Eficiente

Persistencia de sesión

La información sobre la sesión del usuario suele almacenarse localmente en el navegador. Por ejemplo, en una aplicación de carrito de compras, los artículos en el carrito de compras de un usuario pueden almacenarse en el nivel del navegador hasta que el usuario esté listo para comprar. Cambiar el servidor que recibe las solicitudes de los clientes durante una sesión de compras puede provocar problemas de rendimiento o directamente provocar que la transacción falle.

En este caso, todas las solicitudes del cliente durante la sesión deben enviarse al mismo servidor. Esto se llama "persistencia de la sesión".

Un buenoequilibrador de carga maneja la persistencia de la sesión bajo demanda. Otro caso de uso para la persistencia de la sesión es cuando un servidor ascendente almacena información solicitada por el usuario en su caché para mejorar el rendimiento. Cambiar de servidor hará que se recupere información nuevamente, lo que provocará una degradación del rendimiento.

Configuración dinámica de grupos de servidores.

Muchas aplicaciones que cambian rápidamente requieren que se agreguen o cierren constantemente nuevos servidores. Esto es muy común en entornos como Amazon Cloud Technology (AWS) Elastic Compute Cloud (EC2), que permite a los usuarios pagar solo por la potencia informática realmente utilizada. También garantiza que la capacidad pueda ser se expandió rápidamente en respuesta a los picos de tráfico.

En dichos entornos, resulta útil que el equilibrador de carga pueda agregar o eliminar servidores dinámicamente del grupo de servidores sin interrumpir las conexiones existentes.

Equilibrio de carga de hardware y software

Los balanceadores de carga generalmente vienen en dos versiones: basados ​​en hardware y basados ​​en software. Los proveedores de soluciones basadas en hardware cargan software propietario en las máquinas que ofrecen (normalmente con procesadores especializados).

Para poder manejar el creciente tráfico del sitio web, debe comprar más máquinas o más grandes del fabricante. Las soluciones de software, por otro lado, a menudo se ejecutan en hardware básico y, por lo tanto, son más económicas y flexibles. Puede instalar el software en el hardware de su elección o en un entorno de nube como AWS EC2.

Interconexión de sistemas abiertos (OSI) de siete capas

El equilibrio de carga se puede realizar en varias capas en el modelo de red de referencia de interconexión de sistemas abiertos (OSI).

El equilibrio de carga de Capa 7 utiliza más CPU que el equilibrio de carga de Capa 4 basado en paquetes, pero rara vez provoca una degradación del rendimiento en los servidores modernos. El equilibrio de carga de capa 7 permite a los equilibradores de carga tomar decisiones de equilibrio de carga más inteligentes y realizar optimizaciones y cambios en el contenido.

¿Qué es el equilibrio de carga de capa 4?

El equilibrio de carga de Capa 4 se determina en función de la información definida por la redCapa de transporte (Capa 4) Cómo distribuir las solicitudes de los clientes entre un conjunto de servidores. Específicamente para el tráfico de Internet, un equilibrador de carga de Capa 4 toma decisiones de equilibrio de carga basadas en la dirección IP de origen, la dirección IP de destino y el puerto registrados en el encabezado de solicitud HTTP del paquete, independientemente del contenido del paquete.

La capa de red se divide en siete capas y está definida por el modelo de referencia de Interconexión de Sistemas Abiertos (OSI).

Equilibrio de carga de capa 4 y NAT

Hoy en día, el término "equilibrio de carga de capa 4" generalmente se refiere a este tipo de implementación: la dirección IP del balanceador de carga es la dirección IP anunciada a los clientes para un sitio web o servicio (por ejemplo, a través de DNS). Por lo tanto, el cliente registra la dirección del equilibrador de carga como dirección IP de destino al realizar una solicitud.

Cuando el equilibrador de carga de Capa 4 recibe una solicitud y toma una decisión de equilibrio de carga, también realiza la traducción de direcciones de red (NAT) en el paquete de solicitud, convirtiendo la dirección IP de destino registrada de su propia dirección a la que tiene en la red interna. La dirección del servidor de contenidos seleccionado.

Del mismo modo, el equilibrador de carga transforma la dirección IP de origen registrada en el encabezado de solicitud del paquete de la dirección del servidor a la suya propia antes de reenviar la respuesta del servidor al cliente. (Los números de puerto TCP de origen y destino registrados en los paquetes a veces se cambian de manera similar).

Un equilibrador de carga de Capa 4 toma decisiones de enrutamiento basándose en la información de dirección extraída de los primeros paquetes de un flujo TCP, pero no examina el contenido de los paquetes. Los equilibradores de carga de capa 4 suelen ser dispositivos de hardware especializados del proveedor que ejecutan software de equilibrio de carga propietario, y las operaciones NAT pueden realizarse mediante un chip dedicado en lugar de software.

El equilibrio de carga de capa 4 alguna vez fue un enfoque arquitectónico popular para el procesamiento de tráfico cuando el hardware básico no era tan poderoso como lo es hoy y las interacciones entre clientes y servidores de aplicaciones no eran tan complejas.

El equilibrio de carga de cuatro niveles requiere menos cálculo que los métodos de equilibrio de carga más complejos (como el de siete niveles), y ahora que las CPU y la memoria no solo son rápidas sino también muy económicas, en la mayoría de los casos, el equilibrio de carga de cuatro niveles tiene beneficios de rendimiento. volverse trivial o irrelevante.

Comparación de balanceadores de carga de Capa 4 y Capa 7

El equilibrador de carga de siete capas se ejecuta en la capa más alta del modelo OSI: Capa de aplicación (En Internet, HTTP es el principal protocolo). Los balanceadores de carga de capa 7 toman decisiones de enrutamiento basándose en diversas características de los encabezados de solicitud HTTP y el contenido real del mensaje, como la URL, el tipo de datos (texto, video, gráficos) o la información de las cookies.

Dado que es necesario considerar todos los aspectos de la información transmitida, en términos de tiempo y potencia informática requerida, es posible realizarequilibrio de carga de siete capas< a i=2> La sobrecarga es mayor que la del equilibrio de carga de cuatro capas, pero la eficiencia general también es mayor. Por ejemplo, debido a que un equilibrador de carga de Capa 7 puede determinar el tipo de datos que solicita un cliente (video, texto, etc.), no es necesario replicar los mismos datos en todos los servidores con equilibrio de carga.

Los balanceadores de carga modernos de uso general (como NGINX Plus y la versión de código abierto de NGINX) normalmente se ejecutan en la capa siete y se utilizan comoproxies inversos. A diferencia de los balanceadores de carga de Capa 4 que usan NAT, que administran el tráfico paquete por paquete, los servidores proxy de equilibrio de carga de Capa 7 pueden leer solicitudes y respuestas en su totalidad. Gestionan y controlan el tráfico basándose en un conocimiento total de las transacciones entre clientes y servidores de aplicaciones.

Algunos balanceadores de carga se pueden configurar como equilibrio de carga de Capa 4 o Capa 7, según su naturaleza. Como se mencionó anteriormente, dado que el hardware comercial moderno suele ser muy potente, no vale la pena mencionar el costo de computación ahorrado por el equilibrio de carga de cuatro capas en comparación con la mayor flexibilidad y eficiencia que brinda el equilibrio de carga de siete capas.

Capas en el modelo OSI e Internet

Para el tráfico de Internet, los términos equilibrio de carga "Capa 4" y "Capa 7" son abreviados y no son estrictamente precisos. Para obtener más información, continúe leyendo a continuación.

El concepto de siete capas de red se deriva del modelo de referencia de Interconexión de Sistemas Abiertos (OSI). Este modelo divide la funcionalidad de la red en siete capas de abstracción, a menudo representadas por su número de capas (de una a siete). Cada capa tiene estándares que definen cómo se empaquetan y transmiten los datos. Además, estos estándares definen cómo el flujo de bits que constituye una solicitud o respuesta se divide en paquetes independientes llamados "Unidades de datos de protocolo (PDU)" y definen los metadatos que se agregan a cada PDU en forma de encabezados de solicitud. Estos metadatos puede especificar las direcciones de los hosts de origen y destino.

Asignar diferentes aspectos de la funcionalidad de la red a diferentes capas simplifica el procesamiento en cada capa porque un protocolo solo necesita saber cómo manejar las PDU de su propia capa y qué metadatos incluir en los encabezados de solicitud para que los protocolos de las capas adyacentes puedan reempaquetar las PDU a nivel de segmento. .

La distribución de funciones de red entre los protocolos subyacentes para el tráfico de la World Wide Web (conocidos colectivamente como "conjunto de protocolos de Internet (IP)") no se ajusta exactamente al modelo OSI. Esto se debe a que la suite IP se definió e implementó antes de que se lanzara el modelo OSI finalizado en 1984. No obstante, los distintos protocolos de la suite IP realizan diferentes funciones que corresponden aproximadamente a las capas OSI.

Cada nivel define múltiples protocolos. Los protocolos y niveles relacionados con el equilibrio de carga del tráfico del sitio web son los siguientes:

  • El Protocolo de Internet (IP) opera en la capa de red (capa 3). Su PDU se llama "paquete" y el IP es responsable Se entregan desde un host de origen a un host de destino, a menudo a través de fronteras entre las múltiples redes pequeñas que conforman Internet. Cada dispositivo que está conectado directamente a Internet tiene una dirección IP única, que se utiliza para ubicar el dispositivo como destinatario de paquetes de datos.

  • El Protocolo de control de transmisión (TCP) opera en lacapa de transporte (capa cuatro). TCP crea una conexión virtual entre el host que ejecuta el navegador y el host que ejecuta la aplicación del servidor. Debido a la falta de confiabilidad de las redes, los paquetes IP pueden perderse, dañarse o llegar desordenados. TCP tiene mecanismos para corregir estos errores, convirtiendo el flujo de paquetes IP en un canal de comunicación confiable. Asigna un número de puerto TCP único a cada aplicación para realizar la entrega a la aplicación correcta en un host que ejecuta muchas aplicaciones.

  • El Protocolo de transferencia de hipertexto (HTTP) opera en lacapa de aplicación (capa siete). Define cómo se codifican los datos para la comunicación entre un navegador web y un servidor web (o cualquier aplicación que comprenda la codificación HTTP).

Como se muestra en la tabla anterior, el término "equilibrio de carga de cuatro capas" para el tráfico de Internet es una abreviatura, y una afirmación más precisa es "equilibrio de carga de tres/cuatro capas", porque el equilibrador de carga determina la dirección IP de la fuente. El servidor y el servidor de destino al mismo tiempo, la dirección (capa 3) y el número de puerto TCP de la aplicación (capa 4) para tomar decisiones de equilibrio de carga. Para el "equilibrio de carga de la capa siete", una afirmación más precisa puede ser "equilibrio de carga de la capa cinco a la capa siete", porque HTTP integra las funciones de las capas cinco, seis y siete de OSI.

¿Qué es el equilibrio de carga de capa 7?

El equilibrio de carga se puede realizar en varias capas en el modelo de referencia de interconexión de sistemas abiertos (OSI) para redes. A continuación describimos brevemente las dosopciones de equilibrio de carga en dos capas diferentes de este modelo. 

Diferencias entre el equilibrio de carga de capa 4 y capa 7

El equilibrio de carga de cuatro capas se ejecuta en el mediocapa de transporte, responsable de procesar la entrega de mensajes. y No se considera el contenido del mensaje. El Protocolo de control de transmisión (TCP) es un protocolo de cuatro capas para el tráfico del Protocolo de transferencia de hipertexto (HTTP) en Internet. Un equilibrador de carga de Capa 4 solo reenvía paquetes de red hacia y desde el servidor ascendente sin inspeccionar el contenido de los paquetes. Pueden tomar decisiones de enrutamiento limitadas examinando los primeros paquetes en un flujo TCP.

El equilibrio de carga de siete capas opera en la capa de aplicación avanzada e involucra el contenido real de cada una. mensaje . HTTP es el protocolo principal de siete capas para el tráfico de sitios web de Internet. Un balanceador de carga de Capa 7 enruta el tráfico de red de una manera mucho más compleja que un balanceador de carga de Capa 4, especialmente para el tráfico basado en TCP como HTTP.

Un equilibrador de carga de Capa 7 intercepta el tráfico de la red y lee los mensajes que contiene. Puede tomar decisiones de equilibrio de carga basadas en el contenido del mensaje, como URL o cookies. Luego, el equilibrador de carga de Capa 7 establece una nueva conexión TCP con el servidor ascendente seleccionado (o reutiliza una conexión existente a través de HTTP keepalives) y escribe la solicitud en el servidor.

Ventajas del equilibrio de carga de siete capas

El equilibrio de carga de Capa 7 requiere más CPU que el equilibrio de carga de Capa 4 basado en paquetes pero rara vez causa degradación del rendimiento en servidores modernos. El equilibrio de carga de siete capas admiteequilibrador de carga para tomar decisiones de equilibrio de carga más informadas y puede optimizar y cambiar contenido (como compresión, cifrado, etc.). También puede mejorar el rendimiento descargando conexiones lentas a servidores ascendentes mediante almacenamiento en búfer.  

Los dispositivos que realizan equilibrio de carga de Capa 7 a menudo se denominan "servidores proxy inversos".

Ejemplo de equilibrio de carga de siete capas

Como ejemplo sencillo, imaginemos a un usuario que visita un sitio web con mucho tráfico. Durante el transcurso de la sesión, el usuario puede solicitar contenido estático (como imágenes o vídeos), contenido dinámico (como un servicio de noticias) o incluso información transaccional. (como un formulario de pedido).

El equilibrio de carga de capa 7 permite que el equilibrador de carga enrute solicitudes en función de la información contenida en la propia solicitud, como el tipo de contenido que se solicita. De esta manera, las solicitudes de imágenes o videos se pueden enrutar a servidores que almacenan y sirven de manera eficiente este contenido multimedia. Podemos enrutar solicitudes de información de transacciones, como precios de descuento, al servidor de aplicaciones responsable de gestionar los precios.

Con el equilibrio de carga de siete capas, los arquitectos de redes y aplicaciones pueden crear infraestructuras de servidores o redes de entrega de aplicaciones altamente ajustadas y optimizadas que no solo sean confiables sino que también escale de manera eficiente.


NGINX es la única comunidad china oficial, todo en nginx.org.cn

Más información técnica, preguntas y respuestas interactivas, series de cursos y recursos de eventos relacionados con NGINX: Sitio web oficial de la comunidad de código abierto | Cuenta pública de WeChat

Actualización anual de la versión principal de IntelliJ IDEA 2023.3 y JetBrains Nuevo concepto de "programación defensiva": conviértase en un trabajo estable GitHub .com ejecuta más de 1200 hosts MySQL, ¿cómo actualizar sin problemas a 8.0? El equipo Web3 de Stephen Chow lanzará una aplicación independiente el próximo mes ¿Se eliminará Firefox? Visual Studio Code 1.85 lanzado, ventana flotante US CISA recomienda abandonar C/C++ para eliminar las vulnerabilidades de seguridad de la memoria Yu Chengdong: Los productos disruptivos de Huawei se lanzarán el próximo año y reescribirán la historia de la industria TIOBE Diciembre: se espera que C# se convierta en el lenguaje de programación del año Artículo de Lei Jun escrito hace 30 años: "Principios y diseño del sistema experto para la determinación de virus informáticos
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/5246775/blog/10122913
Recomendado
Clasificación