Configurer des sessions permanentes pour votre Classic Load Balancer - Elastic Load Balancing

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configurer des sessions permanentes pour votre Classic Load Balancer

Par défaut, un Classic Load Balancer achemine chaque demande de façon indépendante vers l'instance enregistrée ayant la plus petite charge. Cependant, vous pouvez utiliser la fonction de session permanente (aussi appelée affinité de session), qui permet à l'équilibreur de charge de lier la session d'un utilisateur à une instance spécifique. Il est ainsi possible de garantir que toutes les demandes de l'utilisateur pendant la session sont adressées à la même instance.

La clé de la gestion des sessions permanentes consiste à déterminer combien de temps votre équilibreur de charge doit acheminer systématiquement les demandes de l'utilisateur vers la même instance. Si votre application a son propre cookie de session, vous pouvez configurer Elastic Load Balancing pour que le cookie de session suive la durée spécifiée par le cookie de session de l'application. Si votre application n'a pas son propre cookie de session, vous pouvez configurer Elastic Load Balancing pour créer un cookie de session en spécifiant votre propre durée de permanence.

Elastic Load Balancing crée un cookie AWSELB, nommé, qui est utilisé pour mapper la session à l'instance.

Prérequis
  • Un équilibreur HTTPS de charge HTTP /.

  • Au moins une instance saine dans chaque zone de disponibilité.

Compatibilité
  • La propriété RFC for the path d'un cookie autorise les soulignements. Cependant, Elastic Load Balancing URI code les caractères de soulignement, %5F car certains navigateurs, tels qu'Internet Explorer 7, s'attendent à ce que les traits de soulignement soient URI codés sous cette forme. %5F En raison du risque d'impact sur les navigateurs qui fonctionnent actuellement, Elastic Load Balancing continue de URI coder les caractères de soulignement. Par exemple, si le cookie a la propriété path=/my_path, Elastic Load Balancing change cette propriété dans la demande transmise en path=/my%5Fpath.

  • Vous ne pouvez pas définir l'indicateur secure ou HttpOnly sur vos cookies de permanence de sessions basée sur la durée. Toutefois, ces cookies ne contiennent pas des données sensibles. Notez que si vous définissez le secure drapeau ou le HttpOnly drapeau sur un cookie de persistance de session contrôlé par une application, il est également défini sur le cookie. AWSELB

  • Si le champ Set-Cookie d'un cookie d'application contient un point-virgule de fin, l'équilibreur de charge ignore le cookie.

Permanence de session basée sur la durée

L'équilibreur de charge utilise un cookie spécial pour suivre l'instance de chaque demande adressée à chaque auditeur. AWSELB Lorsque l'équilibreur de charge reçoit une demande, il vérifie d'abord si ce cookie est présent dans la demande. Si tel est le cas, la demande est envoyée à l'instance spécifiée dans le cookie. S'il n'y a pas de cookie, l'équilibreur de charge choisit une instance à partir de l'algorithme d'équilibrage de charge existant. Un cookie est inséré dans la réponse pour lier les demandes suivantes provenant du même utilisateur à cette instance. La configuration de la stratégie de permanence de session définit l'expiration d'un cookie, ce qui établit la durée de validité de chaque cookie. L'équilibreur de charge n'actualise pas le délai d'expiration du cookie et ne vérifie pas si le cookie a expiré avant de l'utiliser. Après l'expiration d'un cookie, la session n'est plus permanente. Le client doit supprimer le cookie de son magasin de cookies lorsque celui-ci est expiré.

Dans le cas des demandes CORS (partage de ressources entre origines multiples), certains navigateurs nécessitent d'SameSite=None; Secureactiver le caractère collant. Dans ce cas, Elastic Load Balancing crée un deuxième cookie d'adhérence AWSELBCORS, qui inclut les mêmes informations que le cookie d'adhérence d'origine, plus cet attribut. SameSite Les clients reçoivent les deux cookies.

Si une instance est défaillante ou devient défectueuse, l'équilibreur de charge s'arrête d'acheminer les demandes vers cette celle-ci et choisit une nouvelle instance saine en fonction de l'algorithme d'équilibrage de charge existant. La demande est acheminée vers la nouvelle instance comme s'il n'existait pas de cookie et que la session n'était plus permanente.

Si un client bascule vers un écouteur avec un port backend différent, la permanence est perdue.

Pour activer des sessions permanentes basées sur la durée pour un équilibreur de charge à l'aide de la console
  1. Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/.

  2. Dans le panneau de navigation, sous Load Balancing (Équilibrage de charge), choisissez Load Balancers (Équilibreurs de charge).

  3. Choisissez le nom de l'équilibreur de charge afin d'ouvrir sa page détaillée.

  4. Sous l'onglet Listeners, choisissez Manage listeners.

  5. Sur la page Manage listeners, localisez l'écouteur à mettre à jour et choisissez Edit sous Cookie stickiness.

  6. Dans la fenêtre contextuelle Modifier le paramètre de persistance des cookies, sélectionnez Généré par l'équilibreur de charge.

  7. (Facultatif) Pour Expiration period, saisissez la période d'expiration du cookie, en secondes. Si vous ne spécifiez pas de période d'expiration, la session permanente dure pendant la durée de la session de navigateur.

  8. Choisissez Enregistrer les modifications pour fermer la fenêtre contextuelle.

  9. Choisissez Enregistrer les modifications pour revenir à la page des détails de l'équilibreur de charge.

Pour activer des sessions permanentes basées sur la durée pour un équilibreur de charge à l'aide de l'interface AWS CLI
  1. Utilisez la commande create-lb-cookie-stickiness-policy suivante pour créer une politique de conservation des cookies générée par l'équilibreur de charge avec une période d'expiration des cookies de 60 secondes :

    aws elb create-lb-cookie-stickiness-policy --load-balancer-name my-loadbalancer --policy-name my-duration-cookie-policy --cookie-expiration-period 60
  2. Utilisez la commande set-load-balancer-policies-of-listener suivante pour activer le maintien de la session pour l'équilibreur de charge spécifié :

    aws elb set-load-balancer-policies-of-listener --load-balancer-name my-loadbalancer --load-balancer-port 443 --policy-names my-duration-cookie-policy
    Note

    La commande set-load-balancer-policies-of-listener remplace l'ensemble actuel de politiques associées au port de l'équilibreur de charge spécifié. Chaque fois que vous utilisez cette commande, spécifiez l'option --policy-names pour répertorier toutes les stratégies à activer.

  3. (Facultatif) Utilisez la describe-load-balancerscommande suivante pour vérifier que la politique est activée :

    aws elb describe-load-balancers --load-balancer-name my-loadbalancer

    La réponse inclut les informations suivantes qui montrent que la stratégie est activée pour l'écouteur sur le port spécifié :

    { "LoadBalancerDescriptions": [ { ... "ListenerDescriptions": [ { "Listener": { "InstancePort": 443, "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-certificate", "LoadBalancerPort": 443, "Protocol": "HTTPS", "InstanceProtocol": "HTTPS" }, "PolicyNames": [ "my-duration-cookie-policy", "ELBSecurityPolicy-TLS-1-2-2017-01" ] }, ... ], ... "Policies": { "LBCookieStickinessPolicies": [ { "PolicyName": "my-duration-cookie-policy", "CookieExpirationPeriod": 60 } ], "AppCookieStickinessPolicies": [], "OtherPolicies": [ "ELBSecurityPolicy-TLS-1-2-2017-01" ] }, ... } ] }

Permanence des sessions contrôlées par application

L'équilibreur de charge utilise un cookie spécial pour associer la session à l'instance qui a traité la demande initiale, mais suit la durée de vie du cookie d'application spécifié dans la configuration de la stratégie. L'équilibreur de charge n'insère un nouveau cookie de permanence que si la réponse de l'application inclut un nouveau cookie d'application. Le cookie de permanence de l'équilibreur de charge n'est pas mis à jour à chaque demande. Si le cookie d'application est explicitement supprimé ou expire, la session cesse d'être permanente jusqu'à l'émission d'un nouveau cookie.

Les attributs suivants, définis par les instances principales, sont envoyés aux clients dans le cookie : path, port, domain, secure, httponly, discard, max-age, expires, version, comment, commenturl et samesite.

Si une instance est défaillante ou devient défectueuse, l'équilibreur de charge s'arrête d'acheminer les demandes vers cette celle-ci et choisit une nouvelle instance saine en fonction de l'algorithme d'équilibrage de charge existant. L'équilibreur de charge traite désormais la session comme étant liée à la nouvelle instance saine et continue d'acheminer les demandes vers cette instance, même si l'instance en échec est récupérée.

Pour activer la permanence de session contrôlée par application à l'aide de la console
  1. Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/.

  2. Dans le panneau de navigation, sous Load Balancing (Équilibrage de charge), choisissez Load Balancers (Équilibreurs de charge).

  3. Choisissez le nom de l'équilibreur de charge afin d'ouvrir sa page détaillée.

  4. Sous l'onglet Listeners, choisissez Manage listeners.

  5. Sur la page Manage listeners, localisez l'écouteur à mettre à jour et choisissez Edit sous Cookie stickiness.

  6. Sélectionnez Generated by application.

  7. Pour Cookie Name, tapez le nom du cookie de votre application.

  8. Sélectionnez Enregistrer les modifications.

Pour activer le caractère permanent des sessions contrôlé par l'application à l'aide du AWS CLI
  1. Utilisez la commande create-app-cookie-stickiness-policy suivante pour créer une politique de conservation des cookies générée par l'application :

    aws elb create-app-cookie-stickiness-policy --load-balancer-name my-loadbalancer --policy-name my-app-cookie-policy --cookie-name my-app-cookie
  2. Utilisez la commande set-load-balancer-policies-of-listener suivante pour activer le maintien de la session pour un équilibreur de charge :

    aws elb set-load-balancer-policies-of-listener --load-balancer-name my-loadbalancer --load-balancer-port 443 --policy-names my-app-cookie-policy
    Note

    La commande set-load-balancer-policies-of-listener remplace l'ensemble actuel de politiques associées au port de l'équilibreur de charge spécifié. Chaque fois que vous utilisez cette commande, spécifiez l'option --policy-names pour répertorier toutes les stratégies à activer.

  3. (Facultatif) Utilisez la describe-load-balancerscommande suivante pour vérifier que la politique persistante est activée :

    aws elb describe-load-balancers --load-balancer-name my-loadbalancer
  4. La réponse inclut les informations suivantes qui montrent que la stratégie est activée pour l'écouteur sur le port spécifié :

    { "LoadBalancerDescriptions": [ { ... "ListenerDescriptions": [ { "Listener": { "InstancePort": 443, "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-certificate", "LoadBalancerPort": 443, "Protocol": "HTTPS", "InstanceProtocol": "HTTPS" }, "PolicyNames": [ "my-app-cookie-policy", "ELBSecurityPolicy-TLS-1-2-2017-01" ] }, { "Listener": { "InstancePort": 80, "LoadBalancerPort": 80, "Protocol": "TCP", "InstanceProtocol": "TCP" }, "PolicyNames": [] } ], ... "Policies": { "LBCookieStickinessPolicies": [], "AppCookieStickinessPolicies": [ { "PolicyName": "my-app-cookie-policy", "CookieName": "my-app-cookie" } ], "OtherPolicies": [ "ELBSecurityPolicy-TLS-1-2-2017-01" ] }, ... } ] }