Certaines applications, comme celles qui gèrent les paniers d'achat, les informations de connexion, les préférences utilisateur ou les états de jeu, exigent que les requêtes d'un même client soient systématiquement acheminées vers le même serveur backend. Si les requêtes d'un client sont réparties sur différents serveurs, l'état de la session peut être perdu, ce qui dégrade l'expérience utilisateur. En activant la persistance de session pour Application Load Balancer (ALB), vous garantissez que les requêtes d'un même client sont transférées vers le même serveur backend, assurant ainsi une expérience utilisateur cohérente et l'intégrité des données.
Contexte
Par défaut, ALB distribue les requêtes vers différents serveurs backend. Une fois que vous avez activé la persistance de session, les requêtes d'un même client sont transmises au même serveur backend. Le serveur backend peut ainsi conserver les informations d'état et fournir un service continu au client.
Persistance de session désactivée : ALB traite chaque requête d'un même client de manière indépendante ; les requêtes consécutives de ce client peuvent donc être distribuées à différents serveurs backend. Dans certains scénarios, par exemple lorsque vous vous connectez à un serveur backend pour obtenir des informations d'interaction, vous devrez peut-être vous connecter plusieurs fois.
Persistance de session activée : Les requêtes d'un même client sont distribuées au même serveur backend d'ALB. Dans certains scénarios, par exemple lorsque vous vous connectez à un serveur backend pour obtenir des informations d'interaction, il n'est pas nécessaire de se connecter plusieurs fois.
Lorsque vous activez la persistance de session pour ALB, vous devez sélectionner une méthode de gestion des cookies. ALB prend en charge deux méthodes : insertion de cookie et réécriture de cookie.
-
Insertion de cookie : Lors de la première requête du client, ALB insère un cookie dans la réponse. Plus précisément, ALB insère deux cookies :
SERVERIDetSERVERCORSID. Le cookieSERVERCORSIDest basé surSERVERIDet inclut l'attributsamesite=None. Lorsque le client effectue des requêtes ultérieures contenant ce cookie, ALB dirige ces requêtes vers le serveur backend précédemment enregistré.RemarqueLa méthode d'insertion de cookie inclut automatiquement
SameSite=None; aucune configuration supplémentaire n'est donc requise. Cela résout efficacement les problèmes liés à l'impossibilité pour les navigateurs d'enregistrer le cookie dans les scénarios de partage de ressources cross-origin (CORS) impliquant les règles de transfert ALB. Réécriture de cookie : Lorsque ALB détecte un cookie défini par l'utilisateur, il réécrit le cookie d'origine. Lorsque le client effectue des requêtes ultérieures avec le nouveau cookie, ALB dirige les requêtes vers le serveur backend précédemment enregistré.
Limites
ALB Extensible Edition ne prend pas en charge la persistance de session.
La persistance de session n'est pas requise pour les groupes de serveurs Function Compute. Pour plus d'informations, consultez la rubrique Créer et supprimer un groupe de serveurs.
Prérequis
Vous disposez d'une instance ALB orientée Internet à l'état Running. Pour plus d'informations, consultez la rubrique Créer et gérer une instance ALB.
Vous avez créé un groupe de serveurs de type serveur ou de type IP. Pour plus d'informations, consultez la rubrique Créer et supprimer un groupe de serveurs.
Vous avez créé deux serveurs backend, ECS01 et ECS02, pour recevoir les requêtes. Chaque instance exécute un service backend différent afin de renvoyer une réponse distincte. Par exemple, une requête adressée à ECS01 renvoie
"Hello World ! This is ECS01.", et une requête adressée à ECS02 renvoie"Hello World ! This is ECS02.". Assurez-vous que le groupe de sécurité autorise le trafic entrant sur les ports de service requis.Vous avez ajouté les serveurs backend ECS01 et ECS02 au groupe de serveurs. Pour plus d'informations, consultez la rubrique Ajouter et supprimer des serveurs backend.
Vous avez configuré un écouteur pour l'instance. Pour plus d'informations, consultez les rubriques Ajouter un écouteur HTTP, Ajouter un écouteur HTTPS ou Ajouter un écouteur QUIC.
Étape 1 : Configurer la persistance de session
Connectez-vous à la console ALB.
Dans la barre de navigation supérieure, sélectionnez la région où le groupe de serveurs est déployé.
Dans le volet de navigation de gauche, choisissez .
Sur la page Server Groups, localisez le groupe de serveurs cible et cliquez sur Edit Server Group dans la colonne Actions.
-
Dans la boîte de dialogue Modify Basic Information, activez la persistance de session.
Activez l'option Session Persistence et sélectionnez une Cookie Option.
Sélectionnez Insert Cookie, définissez la Session Persistence Timeout Period, puis cliquez sur Save.
-
Sélectionnez Rewrite Cookie, définissez le Cookie Name, puis cliquez sur Save.
Dans cet exemple, le nom du cookie est défini sur
BACKEND_SERVER. Ce nom est fourni à titre d'illustration uniquement. Vous pouvez spécifier un nom personnalisé.
(Facultatif) Étape 2 : Configurer les cookies sur les serveurs backend
Configurez le cookie sur les serveurs backend uniquement si vous utilisez la méthode de réécriture de cookie pour la persistance de session.
Connectez-vous à l'instance ECS. Pour plus d'informations, consultez le Guide de connexion pour les instances ECS.
-
Configurez le cookie en fonction de votre serveur web.
RemarqueLa configuration des cookies varie selon le serveur web. Les exemples suivants couvrent les serveurs web courants. Si votre serveur web ne figure pas dans la liste, reportez-vous à sa documentation officielle pour connaître la configuration appropriée.
Nginx
Cette section fournit un exemple de configuration d'un serveur NGINX 1.20.1 exécuté sur CentOS 7.9. La configuration peut varier en fonction de votre environnement.
-
Modifiez et enregistrez le fichier de configuration Nginx. Pour les modifications requises, suivez les instructions ci-dessous. Exécutez la commande
nginx -tpour afficher le chemin d'accès au fichier de configuration. Le fichier de configuration est généralementnginx.confdans le répertoire/etc/nginx, mais le chemin réel peut varier selon votre environnement.http { # ... server { listen 80; # Set BACKEND_SERVER to the cookie name that you specified when you configured the rewrite cookie method. You can use a custom string for the value. add_header Set-Cookie "BACKEND_SERVER=value"; # ... } } -
Exécutez la commande suivante pour recharger le fichier de configuration NGINX :
sudo nginx -s reload
Apache
Cette section fournit un exemple de configuration d'un serveur Apache 2.4.6 exécuté sur CentOS 7.9. La configuration peut varier en fonction de votre environnement.
-
Modifiez et enregistrez le fichier de configuration du service Apache. Pour les modifications requises, suivez les instructions ci-dessous. Le chemin par défaut est généralement
/etc/httpd/conf/httpd.conf, mais le chemin réel dépend de votre environnement.# ... Listen 80 # Set BACKEND_SERVER to the cookie name that you specified when you configured the rewrite cookie method. You can use a custom string for the value. Header always set Set-Cookie "BACKEND_SERVER=value" # ... -
Exécutez la commande suivante pour recharger le fichier de configuration Apache et appliquer les modifications :
sudo systemctl reload httpd.service
-
Répétez les étapes précédentes pour modifier les configurations des autres serveurs backend du groupe de serveurs.
Étape 3 : Vérifier la persistance de session
Connectez-vous à la console ALB.
Dans la barre de navigation supérieure, sélectionnez une région. Localisez l'instance ALB cible et copiez son nom de domaine.
-
Dans un navigateur, saisissez le nom de domaine. Une page provenant de l'un de vos serveurs s'affiche. Actualisez la page plusieurs fois. Le contenu de la page doit rester identique.
Par exemple, si votre première requête est acheminée vers ECS01, toutes les requêtes suivantes après actualisation de la page seront également acheminées vers ECS01.
Si les réponses alternent entre ECS01 et ECS02 après plusieurs actualisations, la persistance de session ne fonctionne pas correctement. Vérifiez votre configuration pour détecter d'éventuelles erreurs et effectuez un nouveau test.
Documentation connexe
Si vous rencontrez des problèmes lors de la configuration, consultez la rubrique FAQ sur ALB.
Si vous rencontrez un problème de contrôle d'état, consultez la rubrique Dépannage des problèmes de contrôle d'état ALB.