¿Puede Elastic Load Balancers distribuir correctamente el tráfico a instancias de diferentes tamaños?

10

Solo he estado buscando en Elastic Load Balancers. Según tengo entendido, simplemente hacen round robin, distribuyendo uniformemente las conexiones a los servidores detrás de ellos. Entonces, ¿qué sucede si tiene instancias de diferentes tamaños detrás de un ELB? ¿Envía más conexiones a la instancia más grande o continúa distribuyendo las conexiones de manera uniforme, lo que significa que realmente no debería usar instancias de diferentes tamaños.

Sean Bannister
fuente

Respuestas:

15

Según tengo entendido, simplemente hacen round robin, distribuyendo uniformemente las conexiones a los servidores detrás de ellos.

Más o menos, pero no del todo, creo que, desafortunadamente, la documentación de enrutamiento de Amazon ELB no es inexistente, por lo que es necesario reunir algunas piezas para llegar a una conclusión. Este es el único fragmento de la Guía para desarrolladores de Elastic Load Balancing que conozco, consulte la sección Sesiones fijas en Descripción general de Elastic Load Balancing :

De forma predeterminada, un equilibrador de carga enruta cada solicitud de forma independiente a la instancia de la aplicación con la carga más pequeña . Sin embargo, puede usar la función de sesión fija (también conocida como afinidad de sesión), que permite que el equilibrador de carga vincule la sesión de un usuario a una instancia de aplicación específica. Esto garantiza que todas las solicitudes provenientes del usuario durante la sesión se enviarán a la misma instancia de la aplicación. [énfasis mío]

¿Qué significa exactamente la carga más pequeña ? Una vez más, la única explicación que conozco es la respuesta un tanto vaga del equipo de AWS de 2009 a ELB Strategy :

ELB realiza un seguimiento aproximado de cuántas solicitudes (o conexiones en el caso de TCP) están pendientes en cada instancia. No supervisa el uso de recursos (como CPU o memoria) en cada instancia. Actualmente, ELB realizará un round-robin entre aquellas instancias que cree que tiene la menor cantidad de solicitudes pendientes. [énfasis mío]

Esto tiene mucho sentido con respecto a la arquitectura de su sistema y los casos de uso abordados, pero obviamente no proporciona la transparencia y / o el control del enrutamiento que puede desear o necesitar para escenarios avanzados de alta disponibilidad.

Tenga en cuenta que, según la interpretación, esto puede o no ser contradicho un poco por una respuesta más reciente del equipo de AWS a Elastic Load Balancing - Políticas de distribución de carga :

Round-robin entra en juego, pero las sesiones del cliente no siempre respetan los cachés TTL o DNS, por lo que puede obtener resultados asimétricos y distribuciones desiguales de las solicitudes. El ELB no tiene en cuenta las instancias de tráfico / solicitudes recibidas hasta la fecha en las decisiones de enrutamiento de tráfico. [énfasis mío]

Controles de salud

Por supuesto, lo anterior se modifica con las comprobaciones de estado debidamente documentadas, transparentes y controlables , lo que le brinda cierta influencia para eliminar (potencialmente temporalmente) las instancias en el enrutamiento en primer lugar, como se resume en la respuesta del equipo de AWS antes mencionada a ELB Estrategia también:

El equilibrador de carga supervisa el estado de sus instancias registradas con su equilibrador de carga. Cuando el equilibrador de carga detecta un problema con una instancia, deja de distribuirle tráfico. Cuando la instancia vuelve a estar en buen estado, el equilibrador de carga se reinicia distribuyéndole tráfico. Este proceso permite que su aplicación reaccione automáticamente a instancias fallidas sin tener que involucrarse más allá de configurar el chequeo de salud.

Conclusión

Aunque ciertamente inusual, no veo por qué no debería ELB trabajo con un grupo de diferentes tipos de instancia de Amazon EC2 , así - no he intentado esto mismo aunque y recomendaría tanto, un seguimiento de su equilibrador de carga Utilizar CloudWatch así como el seguimiento sus instancias individuales de EC2 y correlacionan los resultados para obtener la información y la confianza respectivas en dicha configuración eventualmente.

Steffen Opel
fuente
1
Muchas gracias por una respuesta tan profunda, exactamente lo que estaba buscando pero no pude encontrar.
Sean Bannister
1
Por experiencia, le puedo decir que un ELB NO distribuye bien el tráfico con un grupo que incluye múltiples tipos de instancias.
ubiquitousthey
¿Alguien tiene alguna información sobre AWS Application Load Balancers (ALB) y diferentes tipos de instancia?
SomethingOn
1

Basado en las declaraciones hechas hasta ahora, el algoritmo de distribución es extremadamente simple.

El front-end de ELB es típicamente más de una instancia de ELB, y la distribución es round-robin.

El back-end (sus instancias) algo dice ser:

ELB realiza un seguimiento aproximado de cuántas solicitudes (o conexiones en el caso de TCP) están pendientes en cada instancia. No supervisa el uso de recursos (como CPU o memoria) en cada instancia. Actualmente, ELB realizará un round-robin entre aquellas instancias que cree que tiene la menor cantidad de solicitudes pendientes.

Esto inferiría que si una instancia más grande tiene solicitudes menos pendientes, se enrutará más tráfico hacia ellas. No hay forma de garantizar esto.

Mike Fiedler
fuente