Cómo funciona ELB
A continuación se describe cómo funciona ELB:
- Un cliente envía una solicitud a su aplicación.
- Los oyentes agregados al balanceador de carga utilizan los protocolos y puertos que configura para recibir la solicitud.
- El oyente reenvía la solicitud al grupo de servidores backend asociado en función de su configuración. Si ha configurado una política de reenvío para el agente de escucha, el agente de escucha evalúa la solicitud basándose en la política de reenvío. Si la solicitud coincide con la política de reenvío, el agente de escucha reenvía la solicitud al grupo de servidores backend configurado para la política de reenvío.
- Los servidores backend de mantenimiento del grupo de servidores backend reciben la solicitud basada en el algoritmo de equilibrio de carga y las reglas de enrutamiento especificadas en la política de reenvío, gestionan la solicitud y devuelven un resultado al cliente.
La forma en que se enrutan las solicitudes depende de los algoritmos de equilibrio de carga configurados para cada grupo de servidores backend. Si el agente de escucha utiliza HTTP o HTTPS, la forma en que se enrutan las solicitudes también depende de las políticas de reenvío configuradas para el oyente.
Algoritmos de equilibrio de carga
Los balanceadores de carga dedicados admiten cuatro algoritmos de balanceo de carga: round robin ponderado, conexiones mínimas ponderadas, hash IP de origen e ID de conexión. Los balanceadores de carga Compartido admiten tres algoritmos de balanceo de carga: round robin ponderado, conexiones mínimas ponderadas y hash IP de origen.
- Round robin ponderado: las solicitudes se enrutan a los servidores backend utilizando el algoritmo round robin. Los servidores back-end con mayores pesos reciben proporcionalmente más solicitudes, mientras que los servidores con igual peso reciben el mismo número de solicitudes. Este algoritmo se utiliza a menudo para conexiones cortas, como conexiones HTTP.
La siguiente figura muestra un ejemplo de cómo se distribuyen las solicitudes usando el algoritmo round robin ponderado. Dos servidores de backend están en la misma AZ y tienen el mismo peso, y cada servidor recibe la misma proporción de solicitudes.
Figura 2 Distribución del tráfico utilizando el algoritmo de round robin ponderado
- Conexiones mínimas ponderadas: Además del peso asignado a cada servidor, también se tiene en cuenta el número de conexiones procesadas por cada servidor backend. Las solicitudes se enrutan al servidor con la relación de conexiones/peso más baja. Además del número de conexiones, a cada servidor se le asigna un peso basado en su capacidad. Las solicitudes se enrutan al servidor con la relación de conexiones/peso más baja. Este algoritmo se utiliza a menudo para conexiones persistentes, como conexiones a una base de datos.
La siguiente figura muestra un ejemplo de cómo se distribuyen las solicitudes usando el algoritmo de conexiones mínimas ponderadas. Dos servidores de backend están en la misma AZ y tienen el mismo peso, se han establecido 100 conexiones con el servidor backend 01, y se han conectado 50 conexiones con el servidor backend 02. Las nuevas peticiones se encaminan preferentemente al servidor de back-end 02.
Figura 3 Distribución del tráfico utilizando el algoritmo de conexiones mínimas ponderadas
- Hash IP de origen: La dirección IP de origen de cada solicitud se calcula utilizando el algoritmo de hash consistente para obtener una clave de hash única, y todos los servidores backend están numerados. La clave generada se utiliza para asignar el cliente a un servidor en particular. Esto permite que las solicitudes de diferentes clientes se enruten en función de las direcciones IP de origen y garantiza que un cliente se dirija al mismo servidor que estaba usando anteriormente. Este algoritmo funciona bien para conexiones TCP de balanceadores de carga que no usan cookies.
La siguiente figura muestra un ejemplo de cómo se distribuyen las solicitudes utilizando el algoritmo hash IP de origen. Dos servidores de backend están en la misma AZ y tienen el mismo peso. Si el servidor de backend 01 ha procesado una solicitud desde la dirección IP A, el balanceador de carga encaminará nuevas solicitudes desde la dirección IP A al servidor backend 01.
Figura 4 Distribución del tráfico mediante el algoritmo hash IP de origen
- ID de conexión: El ID de conexión en el paquete se calcula utilizando el algoritmo hash consistente para obtener un valor específico, y los servidores backend se numeran. El valor generado determina a qué servidor backend se enrutan las solicitudes. Esto permite que las solicitudes con diferentes ID de conexión se enruten a diferentes servidores backend y garantiza que las solicitudes con el mismo ID de conexión se enruten al mismo servidor backend. Este algoritmo se aplica a las solicitudes QUIC.
Actualmente, solo los balanceadores de carga dedicados admiten el algoritmo de ID de conexión.
Figura 5 muestra un ejemplo de cómo se distribuyen las solicitudes usando el algoritmo de ID de conexión. Dos servidores de backend están en la misma AZ y tienen el mismo peso. Si el servidor de backend 01 ha procesado una solicitud del cliente A, el balanceador de carga encaminará nuevas solicitudes desde el cliente A al servidor backend 01.
Factores que afectan el equilibrio de carga
Además del algoritmo de equilibrio de carga, los factores que afectan al equilibrio de carga generalmente incluyen el tipo de conexión, la adherencia de sesión y los pesos del servidor.
Suponga que hay dos servidores backend con el mismo peso (no cero), se selecciona el algoritmo de conexiones mínimas ponderadas, las sesiones adhesivas no están habilitadas, y se han establecido 100 conexiones con el servidor backend 01, y 50 conexiones con el servidor backend 02.
Cuando el cliente A desea acceder al servidor back-end 01, el balanceador de carga establece una conexión persistente con el servidor back-end 01 y encamina continuamente las solicitudes desde el cliente A al servidor back-end 01 antes de que se desconecte la conexión persistente. Cuando otros clientes acceden a servidores back-end, el balanceador de carga encamina las solicitudes al servidor back-end 02 usando el algoritmo de conexiones mínimas ponderadas.
Si los servidores backend se declaran insalubres o sus pesos se establecen en 0, el balanceador de carga no encaminará las solicitudes a los servidores backend.
Para obtener más información sobre el algoritmo de menos conexiones ponderadas, consulte Algoritmos de equilibrio de carga.
Si las solicitudes no se enrutan uniformemente, solucione el problema realizando las operaciones descritas en ¿Cómo verifico si el tráfico está distribuido uniformemente?