Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Comment puis-je résoudre les problèmes de permanence de session de l’Application Load Balancer ?
Je dispose d’un Application Load Balancer qui utilise des sessions de permanence basées sur la durée ou des sessions de permanence basées sur l’application. L'équilibreur de charge est configuré pour acheminer toutes les requêtes de session utilisateur vers la même cible. Cependant, je souhaite que les requêtes de session utilisateur soient acheminées vers différentes cibles.
Brève description
Les sessions permanentes utilisent des cookies pour aider le client à maintenir une connexion avec la même cible pendant toute la durée de vie d'un cookie. Les sessions permanentes configurent un équilibreur de charge pour lier les sessions utilisateur à une cible spécifique. Cela signifie que toutes les requêtes d'un utilisateur au cours d'une session sont envoyées à la même cible. Cependant, cette hypothèse concernant la connexion peut entraîner des déséquilibres au fil du temps.
Une session permanente peut échouer pour les raisons suivantes :
- La cible enregistrée n'a pas généré de cookie.
- Le client n'a pas renvoyé le cookie dans l'en-tête de requête.
- Les cookies ne sont pas formatés correctement.
- La session basée sur la durée est terminée.
- La requête de session passe par plusieurs équilibreurs de charge.
- Le statut d’état cible est devenu non sain.
- Un service AWS a désactivé la permanence.
Remarque : Avant de commencer, assurez-vous de consulter les sections relatives aux exigences et aux considérations dans Sessions permanentes pour votre Application Load Balancer.
Résolution
Permanence de session basée sur l’application
-
Vérifiez la présence d'erreurs HTTP dans votre équilibreur de charge. Pour obtenir des instructions, consultez la section Résoudre les problèmes liés à vos Application Load Balancers.
-
Pour vérifier la présence de cookies sur l'instance backend ou l'équilibreur de charge, exécutez une commande curl similaire à la commande suivante. Remplacez le nom DNS par le nom de votre équilibreur de charge :
[ec2-user@ip-172-31-22-85 ~]$ curl -vko /dev/null internal-EXAMPLE-ELB-1430759361.eu-central-1.elb.amazonaws.com
Remarque : Vous pouvez également installer l'utilitaire curl Linux sur le système d'exploitation Windows. Pour plus d'informations, consultez la page curl 8.10.1 pour Windows sur le site Web de curl.
Le résultat de la commande curl ressemble à ce qui suit :
... < Set-Cookie: PHPSESSID=k0qu6t4e35i4lgmsk78mj9k4a4; path=/ < Set-Cookie: AWSALBAPP-0=438DC7A50C516D797550CF7DE2A7DBA19D6816D5E6FB20329CD6AEF2B40030B12FF2839757A60E2330136A2182D27D049FB9D887FBFE9E80FB0724130FB3A86A4B0BAC296FDEB9E943EC9272FF52F5A8AEF373DF33;PATH=/ ...
-
Pour vérifier que la cible enregistrée a généré un cookie d'application, envoyez une requête HTTP à l'adresse IP d'instance similaire à la suivante :
[ec2-user@ip-172-31-22-85 ~]$ curl -vko /dev/null 172.31.30.168
Le résultat de la commande est similaire à ce qui suit :
... < Set-Cookie: PHPSESSID=5pq74110nuir60kpapj04mglg4; path=/ ...
-
Vérifiez que le nom du cookie généré par la cible enregistrée correspond au nom du cookie sur l'équilibreur de charge aux étapes 2 et 3.
-
Lorsque la cible génère un cookie d'application et que l'équilibreur de charge génère un cookie AWSALBAPP, vérifiez que le client envoie les deux cookies lors des requêtes suivantes. Si le client n'inclut ni l'application ni le cookie AWSELB, la permanence échoue. Pour vérifier que le client envoie à la fois l'application et le cookie AWSALBAPP, effectuez une capture de paquets sur le client. Pour récupérer les informations relatives aux cookies dans l'en-tête de requête, utilisez l'une des options suivantes :
tcpdump à partir du site Web de tcpdump
Utilitaire Wireshark à partir du site Web de Wireshark
Outil de débogage Web de navigateurRemarque : Si vous utilisez AWS Support, créez un fichier HAR pour recueillir ces informations. Étant donné que les fichiers HAR peuvent capturer des informations sensibles, telles que des noms d'utilisateur, des mots de passe et des clés, assurez-vous de supprimer les informations sensibles d'un fichier HAR.
-
Vérifiez l'instance backend vers laquelle l'équilibreur de charge a acheminé la requête. Pour utiliser les métadonnées d’instance afin d'afficher l'ID d'instance, exécutez un script similaire au script suivant :
<?php $instance_id =file_get_contents('http://169.254.169.254/latest/meta-data/instance-id');echo "instance id = " . $instance_id . "\\xA";?>
-
Pour vérifier si les requêtes d'un même utilisateur sont acheminées vers différentes cibles enregistrées, consultez vos journaux d'accès Elastic Load Balancing (ELB). Pour obtenir des instructions, consultez la section Journaux d'accès de votre Application Load Balancer.
-
Vérifiez que le statut d’état de toutes les cibles du groupe cible où la permanence est activée est sain. Si le statut d’état de la cible devient non sain, la permanence est interrompue et l'équilibreur de charge n'achemine pas les requêtes vers cette cible. Une nouvelle cible saine est ensuite automatiquement sélectionnée par l'équilibreur de charge et établit une session permanente. L'équilibreur de charge continue d'acheminer les requêtes vers la nouvelle cible même si le statut d’état est non sain. Pour plus d'informations sur les vérifications de l’état, consultez la section Vérifications de l’état des groupes cibles d'Application Load Balancer.
-
Recherchez les services AWS, tels qu'Amazon Elastic Kubernetes Service (Amazon EKS), qui sont susceptibles d’avoir désactivé la permanence de votre équilibreur de charge. Consultez l'historique des événements CloudTrail. Utilisez le nom d'API ModifyTargetGroupAttributes et l’attribut stickiness.enabled.
Permanence de session basée sur la durée
-
Pour vérifier la présence d'un cookie AWSALB, exécutez une commande curl similaire à la commande suivante. Assurez-vous d'utiliser le nom DNS de l'équilibreur de charge :
[ec2-user@ip-172-31-22-85 ~]$ curl -vko /dev/null internal-TESTELB-1430759361.eu-central-1.elb.amazonaws.com
Le résultat de la commande curl ressemble à ce qui suit :
... < Set-Cookie: AWSALB=438DC7A50C516D797550CF7DE2A7DBA19D6816D5E6FB20329CD6AEF2B40030B12FF2839757A60E2330136A2182D27D049FB9D887FBFE9E80FB0724130FB3A86A4B0BAC296FDEB9E943EC9272FF52F5A8AEF373DF33;PATH=/ ...
Remarque : Si la réponse ne contient pas de cookie AWSALB, il n'existe aucune permanence le client et l'instance backend.
-
Si l'équilibreur de charge a généré un cookie AWSALB, vérifiez que le client envoie ce cookie lors des requêtes suivantes. Si le client n'inclut pas le cookie AWSALB, la permanence ne fonctionne pas. Pour vérifier que le client envoie le cookie AWSALB, effectuez une capture de paquets sur le client. Pour récupérer les informations relatives aux cookies dans l'en-tête de requête, utilisez l'une des options suivantes :
tcpdump à partir du site Web de tcpdump
Utilitaire Wireshark à partir du site Web de Wireshark
Outil de débogage Web de navigateurRemarque : Si vous utilisez AWS Support, créez un fichier HAR pour recueillir ces informations. Étant donné que les fichiers HAR peuvent capturer des informations sensibles, telles que des noms d'utilisateur, des mots de passe et des clés, assurez-vous de supprimer les informations sensibles d'un fichier HAR.
-
Vérifiez la durée configurée sur l'équilibreur de charge. Si l'expiration du cookie est dépassée, les sessions client ne sont plus liées à la cible enregistrée tant qu'un nouveau cookie n’a pas été émis par l'équilibreur de charge.
-
Si votre requête passe par plusieurs équilibreurs de charge, vérifiez que la permanence est activée sur un seul équilibreur de charge. Si plusieurs équilibreurs de charge génèrent un cookie, l'équilibreur de charge remplace le cookie d'origine et la permanence échoue.
Pour les Classic Load Balancers, consultez la section Comment puis-je résoudre les problèmes liés à la fonctionnalité de permanence des sessions de Classic Load Balancer ?
Informations connexes
Configurer des sessions permanentes pour votre Classic Load Balancer
Comment puis-je configurer des groupes cibles pondérés pour mon Application Load Balancer ?

Contenus pertinents
- demandé il y a 2 anslg...
- Réponse acceptéedemandé il y a 10 moislg...
- demandé il y a 2 anslg...
- demandé il y a un moislg...
- demandé il y a un anlg...
- AWS OFFICIELA mis à jour il y a 7 ans