Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 :
Les étapes suivantes sont représentées dans le diagramme précédent :
- Un client lance une demande vers une interface frontale Application Gateway for Containers (Application Gateway for Containers).
- 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.
- Le pod C renvoie une réponse à Application Gateway for Containers.
- 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.
- Le client envoie une autre demande à Application Gateway for Containers avec le cookie d'affinité de session défini à l'étape précédente.
- Application Gateway for Containers détecte le cookie et sélectionne le pod C pour traiter la demande.
- Le pod C répond à Application Gateway pour les conteneurs.
- 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
etcookieDuration
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