Sesiones fijas con cookies basadas en aplicaciones - 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 basadas en aplicaciones

Cuando utilizas un Application Load Balancer con una cookie basada en aplicaciones:

  • 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 EC2 instancia, la respuesta de la aplicación de la EC2 instancia debe contener una cookie de aplicación personalizada, que se devuelve al cliente junto con una cookie automática de Application Load Balancer.

  • El tráfico posterior se quedará en la EC2 instancia si el cliente devuelve la cookie de la aplicación y la cookie Application Load Balancer.

  • La cookie basada en la aplicación caduca cuando no se utiliza durante el tiempo configurado.

Plantilla: utilice la AWS CloudFormation plantilla stickysessionsapp.yml (incluida en el archivo.zip de código de muestra) para probar sesiones fijas con cookies basadas en aplicaciones.

Casos de uso comunes

Utilice sesiones fijas con cookies generadas por la aplicación cuando desee tener un control adicional en estos 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

El único cambio de código se produce en la configuración del grupo objetivo. Añadimos una configuración de adherencia a los atributos de Application Load Balancer y del grupo objetivo. Se especifica la duración de las cookies de la aplicación y el grupo objetivo tiene habilitada la persistencia de las cookies de la aplicación.

basic.yml stickysessionsapp.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: app_cookie - Key: stickiness.app_cookie.duration_seconds Value: 10 - Key: stickiness.app_cookie.cookie_name Value: TESTCOOKIE

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 TG2

  4. Actualice la página varias veces.

Resultados esperados

nota

La CloudFormation plantilla de este ejemplo ha configurado la adherencia para que dure 10 segundos. La configuración válida de duración de la adherencia es de entre 1 segundo y 1 semana.

La instancia en la que se carga la página web debe permanecer igual, como lo indica el texto de la página.

La duración de la persistencia no se actualiza, sino que se basa en la caducidad configurada en el Application Load Balancer para la cookie de aplicación que genera la instancia. EC2

Ejemplo 1: espere 5 segundos para actualizar la página. Se cargará la misma instancia y la adherencia se actualizará durante otros 10 segundos.

Ejemplo 2: espera más de 10 segundos para volver a cargar la página. La cookie de la aplicación caduca y se le redirige a una instancia diferente EC2 . Esta nueva instancia genera otra cookie de aplicación con una duración de 10 segundos.

Funcionamiento

  • En este ejemplo, las EC2 instancias tienen instalado un servidor web Apache (httpd). El httpd.conf archivo está configurado para devolver un Set-Cookie valor estático al cliente (su navegador web). El Set-Cookie valor está codificado para que sea. TESTCOOKIE=<somevalue>

  • Abre la opción Inspeccionar elemento del navegador, selecciona la pestaña Red y, a continuación, elige el método Get, que carga la página. Verás una pestaña de cookies.

  • El navegador es una aplicación cliente que se configura automáticamente para devolver cualquier actualización posterior al servidor con las cookies que recibe en la Set-Cookie respuesta del servidor.

  • Al volver a cargar la página, las cookies recibidas en la carga inicial de la página se devuelven automáticamente al Application Load Balancer.

    • Si la cookie ha caducado (es decir, han transcurrido 10 segundos desde la última llamada), Application Load Balancer utiliza una nueva lógica para determinar a EC2 qué instancia dirigir el tráfico.

    • Si la cookie no ha caducado, Application Load Balancer dirige el tráfico a la misma EC2 instancia.