Algoritmos de balanceo de carga
Los balanceadores de carga reciben solicitudes de clientes y las reenvían a servidores backend en una o más AZ. Cada balanceador de carga tiene al menos un oyente y un servidor backend. El algoritmo de balanceo de carga que seleccione al crear el grupo de servidores backend determina cómo se distribuyen las solicitudes.
Algoritmos de balanceo 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 compartidos admiten round robin ponderado, conexiones menores ponderadas y hash IP de origen.
- Round robin ponderado: las solicitudes se enrutan a los servidores backend utilizando el algoritmo round robin. Los servidores backend con mayores pesos reciben proporcionalmente más solicitudes, mientras que los servidores con la misma ponderación reciben el mismo número de solicitudes.
Este algoritmo se usa típicamente para conexiones cortas, tales como conexiones de HTTP.
La Figura 1 muestra un ejemplo de cómo se distribuyen las solicitudes usando el algoritmo round robin ponderado. Dos servidores backend están en la misma AZ y tienen el mismo peso, y cada servidor recibe la misma proporción de solicitudes.
- 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 a ponderación más baja.
Este algoritmo se utiliza a menudo para conexiones persistentes, como conexiones a una base de datos.
La Figura 2 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 la misma ponderación, 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 backend 02.
- Source IP hash: La dirección IP de origen de cada solicitud se calcula utilizando el algoritmo de hash consistente para obtener una clave hash única, y todos los servidores backend están numerados. La clave generada asigna el cliente a un servidor determinado. Esto permite que las solicitudes de diferentes clientes se enruten en función de las direcciones IP de origen y garantiza que las solicitudes del mismo cliente se dirijan al mismo servidor que estaba usando anteriormente.
Figura 3 muestra un ejemplo de cómo se distribuyen las solicitudes usando el algoritmo hash IP de origen. Dos servidores backend están en la misma AZ y tienen la misma ponderación. Si el servidor 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.
- 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.
Solo los balanceadores de carga dedicados soportan este algoritmo.
La Figura 4 muestra un ejemplo de cómo se distribuyen las solicitudes usando el algoritmo de ID de conexión. Dos servidores backend están en la misma AZ y tienen la misma ponderación. Si el servidor backend 01 ha procesado una solicitud del cliente A, el balanceador de carga encaminará nuevas solicitudes desde el cliente A al servidor backend 01.