Compartir a través de


Descripción general de la afinidad de sesión de la Puerta de enlace de aplicaciones para contenedores

La afinidad de sesión, también conocida como persistencia de sesión o sesiones permanentes, es una técnica que se usa en el equilibrio de carga para asegurarse de que las solicitudes de un cliente siempre se envían al mismo servidor. Esto es importante para las aplicaciones que almacenan datos de usuario en variables de sesión o en una caché local en un servidor determinado (comúnmente denominado aplicación con estado).

Con la afinidad de sesión, la Puerta de enlace de aplicaciones para contenedores presenta una cookie en el encabezado Set-Cookie de la primera respuesta. Si el cliente presenta la cookie en solicitudes futuras, la Puerta de enlace de aplicaciones para contenedores reconoce la cookie y reenvía el tráfico al mismo destino de backend. Consulte el siguiente escenario de ejemplo:

Diagrama que muestra la afinidad de sesión de puerta de enlace de aplicaciones para contenedores.

Los pasos siguientes se muestran en el diagrama anterior:

  1. Un cliente inicia una solicitud a un front-end de Puerta de enlace de aplicaciones para contenedores (Application Gateway for Containers).
  2. La puerta de enlace de aplicaciones para contenedores selecciona uno de los muchos pods disponibles para equilibrar la carga de la solicitud. En este ejemplo, se supone que el pod C está seleccionado fuera de los cuatro pods disponibles.
  3. El pod C devuelve una respuesta a la puerta de enlace de aplicaciones para contenedores.
  4. Además de la respuesta de back-end de Pod C, puerta de enlace de aplicaciones para contenedores agrega un encabezado Set-Cookie que contiene un hash generado de forma única que se usa para el enrutamiento.
  5. El cliente envía otra solicitud a la puerta de enlace de aplicaciones para contenedores junto con la cookie de afinidad de sesión establecida en el paso anterior.
  6. La puerta de enlace de aplicaciones para contenedores detecta la cookie y selecciona Pod C para atender la solicitud.
  7. Pod C responde a la puerta de enlace de aplicaciones para contenedores.
  8. La puerta de enlace de aplicaciones para contenedores devuelve la respuesta al cliente.

Detalles de uso

La afinidad de sesión se define mediante las siguientes propiedades y características:

Nombre Descripción
affinityType Los valores válidos son application-cookie o managed-cookie.
cookieName Obligatorio si affinityType es application-cookie. Este es el nombre de la cookie.
cookieDuration Obligatorio si affinityType es application-cookie. Esta es la duración (vida útil) de la cookie en segundos.

En el tipo de afinidad de cookies administrada, la Puerta de enlace de aplicación usa valores predefinidos cuando la cookie se ofrece al cliente.

  • El nombre de la cookie es: AGCAffinity.
  • La duración (vida útil) de la cookie es de 86 400 segundos (un día).
  • Las propiedades y los valores de cookieName y cookieDuration se descartan.

En el tipo de afinidad de aplicación, el nombre de la cookie y la duración (vida útil) deben definirse explícitamente.

Cómo configurar la afinidad de sesión

La afinidad de sesión se puede definir en un recurso RoutePolicy, que tiene como destino un HTTPRoute definido. Debe especificar sessionAffinity con un affinityType o sino, application-cookie o managed-cookie. En este ejemplo, se usa application-cookie como affinityType y se define explícitamente un nombre de cookie y una duración.

Comando de ejemplo para crear un routePolicy con una cookie definida denominada nomnom con una duración de 3 600 segundos (1 hora).

kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: RoutePolicy
metadata:
  name: session-affinity-route-policy
spec:
  targetRef:
    kind: HTTPRoute
    name: http-route
    namespace: test-infra
    group: ""
  default:
    sessionAffinity: 
      affinityType: "application-cookie"
      cookieName: "nomnom"
      cookieDuration: 3600
EOF