Sesiones fijas con cookies generadas por el balanceador de carga - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Sesiones fijas con cookies generadas por el balanceador de carga

Cuando utilizas un Application Load Balancer con una cookie generada por un balanceador de carga:

  • El Application Load Balancer utiliza el peso del grupo objetivo para determinar cómo equilibrar el tráfico entrante entre los grupos objetivo.

  • De forma predeterminada, Application Load Balancer usa el método round robin para enrutar las solicitudes a las EC2 instancias del grupo objetivo de destino.

    Una vez que el tráfico se haya enrutado inicialmente a una instancia, el tráfico subsiguiente se quedará en esa EC2 instancia durante un período específico.

Plantilla: usa la AWS CloudFormation plantilla stickysessionslb.yml (incluida en el archivo.zip de código de muestra) para probar sesiones fijas con cookies generadas por el balanceador de carga.

Casos de uso comunes

Usa sesiones fijas con cookies generadas por el balanceador de carga en los siguientes escenarios:

  • Servidores web PHP

  • Servidores que mantienen datos de sesión temporales, como registros, carritos de compras o conversaciones de chat

El código cambia de basic.yml

Los cambios de código relevantes se encuentran en la configuración del grupo objetivo, para establecer el tipo de adherencia lb_cookie y la duración en 10 segundos.

basic.yml stickysessionslb.yml
TG1: Type: 'AWS::ElasticLoadBalancingV2::TargetGroup' Properties: Name: TG1 Protocol: HTTP Port: 80 TargetType: instance Targets: - Id: !Ref Instance1 - Id: !Ref Instance2 VpcId: !Ref CustomVPC
TG1: Type: 'AWS::ElasticLoadBalancingV2::TargetGroup' Properties: Name: TG1 Protocol: HTTP Port: 80 TargetType: instance Targets: - Id: !Ref Instance1 - Id: !Ref Instance2 VpcId: !Ref CustomVPC TargetGroupAttributes: - Key: stickiness.enabled Value: true - Key: stickiness.type Value: lb_cookie - Key: stickiness.lb_cookie.duration_seconds Value: 10

Pasos

Notas
  • Las pasarelas NAT tienen un coste reducido.

  • Varias EC2 instancias consumirán las horas de la capa gratuita más rápido que una sola EC2 instancia.

  1. Implemente la CloudFormation plantilla stickysessionslb.yml en un entorno de laboratorio.

  2. Espere a que el estado de salud de las instancias del grupo objetivo cambie del estado inicial al correcto.

  3. Navegue hasta la URL de Application Load Balancer en un navegador web mediante HTTP (TCP/80).

    Por ejemplo: http://alb-123456789.us-east-1.elb.amazonaws.com/.

    La página web muestra una de las siguientes opciones: Instancia 1 TG1, Instancia 2 TG1, Instancia 3 o Instancia 4. TG2 TG1

  4. Actualice la página varias veces.

Resultados esperados

nota

La CloudFormation plantilla de este ejemplo configura la adherencia para que dure 10 segundos.

La instancia que carga la página web debe permanecer igual dentro de los 10 segundos de duración, tal y como se refleja en el texto de la página. Después de aproximadamente 10 segundos, se elimina la rigidez y la instancia de destino podría cambiar.

Funcionamiento

  • En este ejemplo, hay dos EC2 instancias en un grupo objetivo. Las EC2 instancias tienen un servidor web Apache (httpd) instalado y el texto de la index.html página de cada EC2 instancia está codificado de forma que sea distinto.

  • El Application Load Balancer crea un enlace para la sesión del usuario, que se enlaza con el destino, con una fecha de caducidad.

  • Al volver a cargar la página, el Application Load Balancer comprueba si el enlace existe y no ha caducado.

    • Si el enlace ha caducado o no existe, Application Load Balancer ejecuta su lógica de enrutamiento y determina la instancia de destino.

    • Si el enlace no ha caducado, Application Load Balancer dirige el tráfico a la misma instancia de destino.