Partager via


Vue d’ensemble de l’affinité de session Application Gateway pour les conteneurs

L’affinité de session, également appelée persistance de session ou sessions collantes, est une technique utilisée dans l’équilibrage de charge pour garantir que les requêtes d’un client sont toujours envoyées au même serveur. Cela est important pour les applications qui stockent les données utilisateur dans des variables de session ou dans un cache local sur un serveur particulier (communément appelé application avec état).

Avec l’affinité de session, Application Gateway pour les conteneurs présente un cookie dans l’en-tête Set-Cookie de la première réponse. Si le client présente le cookie dans les demandes ultérieures, Application Gateway pour les conteneurs reconnaît le cookie et transfère le trafic vers la même cible back-end. Consultez l’exemple de scénario suivant :

Diagramme illustrant l’affinité de session Application Gateway for Containers.

Les étapes suivantes sont représentées dans le diagramme précédent :

  1. Un client lance une demande vers une interface frontale Application Gateway for Containers (Application Gateway for Containers).
  2. Application Gateway for Containers sélectionne l’un des nombreux espaces disponibles pour équilibrer la charge de la demande. Dans cet exemple, nous partons du principe que le Pod C est sélectionné parmi les quatre pods disponibles.
  3. Le pod C renvoie une réponse à Application Gateway for Containers.
  4. En plus de la réponse backend du Pod C, Application Gateway for Containers ajoute un en-tête Set-Cookie contenant un hachage généré de manière unique utilisé pour le routage.
  5. Le client envoie une autre demande à Application Gateway for Containers avec le cookie d'affinité de session défini à l'étape précédente.
  6. Application Gateway for Containers détecte le cookie et sélectionne le pod C pour traiter la demande.
  7. Le pod C répond à Application Gateway pour les conteneurs.
  8. Application Gateway for Containers renvoie la réponse au client

Détails de l’utilisation

L’affinité de session est définie par les propriétés et caractéristiques suivantes :

Nom Descriptif
affinitéType Les valeurs valides sont des cookies d’application ou des cookies managés.
nomDuCookie Obligatoire si affinityType est un cookie d’application. Il s’agit du nom du cookie.
durée du cookie Obligatoire si affinityType est un cookie d’application. Il s’agit de la durée (durée de vie) du cookie en secondes.

Dans le type d’affinité de cookie managé, Application Gateway utilise des valeurs prédéfinies lorsque le cookie est proposé au client.

  • Le nom du cookie est : AGCAffinity.
  • La durée (durée de vie) du cookie est de 86 400 secondes (un jour).
  • Les propriétés et valeurs cookieName et cookieDuration sont ignorées.

Dans le type d’affinité de l’application, le nom du cookie et la durée (durée de vie) doivent être définis explicitement.

Comment configurer l’affinité de session

L’affinité de session peut être définie dans une ressource RoutePolicy, qui cible une HTTPRoute défini. Vous devez spécifier sessionAffinity avec un affinityType de type application-cookie ou managed-cookie. Dans cet exemple, nous utilisons application-cookie comme affinityType et définissons explicitement un nom de cookie et une durée de vie.

Exemple de commande pour créer une RoutePolicy avec un cookie défini appelé nomnom ayant une durée de vie de 3 600 secondes (1 heure).

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: 3600s
EOF