Konfigurieren von Sticky Sessions für Ihren Classic Load Balancer - ELB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfigurieren von Sticky Sessions für Ihren Classic Load Balancer

Standardmäßig leitet ein Classic Load Balancer jede Anforderung getrennt an die registrierte Instance mit der kleinsten Last weiter. Sie können jedoch das Feature Sticky Session (auch als gebundene Sitzungen bezeichnet) verwenden, damit der Load Balancer die Sitzung eines Benutzers an eine bestimmte Instance binden kann. So wird sichergestellt, dass alle Anforderungen, die während der Sitzung vom Benutzer gesendet werden, an dieselbe Instance weitergeleitet werden.

Bei der Verwaltung von Sticky Sessions ist es besonders wichtig festzulegen, wie lange der Load Balancer die Anforderung des Benutzers an die gleiche Instance leiten soll. Wenn Ihre Anwendung über ein eigenes Sitzungscookie verfügt, können Sie ELB so konfigurieren, dass das Sitzungscookie die im Sitzungscookie der Anwendung angegebene Dauer einhält. Wenn Ihre Anwendung kein eigenes Sitzungscookie hat, können Sie ELB so konfigurieren, dass ein Sitzungscookie erstellt wird, indem Sie Ihre eigene Sperrdauer angeben.

ELB erstellt ein Cookie mit dem Namen AWSELB, das verwendet wird, um die Sitzung der Instanz zuzuordnen.

Voraussetzungen
  • Ein HTTP/HTTPS Load Balancer.

  • Mindestens eine funktionierende Instance in jeder Availability Zone.

Kompatibilität
  • Beim RFC für die Pfadeigenschaften eines Cookies sind Unterstriche erlaubt. Der ELB-URI kodiert jedoch Unterstriche, %5F weil einige Browser, wie Internet Explorer 7, erwarten, dass Unterstriche als URI kodiert werden. %5F Da dies Auswirkungen auf Browser haben könnte, die derzeit funktionieren, codiert ELB weiterhin URI-Unterstriche. Wenn das Cookie beispielsweise die Eigenschaft hatpath=/my_path, ändert ELB diese Eigenschaft in der weitergeleiteten Anfrage in. path=/my%5Fpath

  • Sie können das secure-Flag oder HttpOnly-Flag nicht für Cookies für Sticky Sessions auf Basis der Dauer festlegen. Diese Cookies enthalten jedoch keine sensiblen Daten. Beachten Sie, dass, wenn Sie das secure Flag oder das HttpOnly Flag für ein anwendungsgesteuertes Session-Stickiness-Cookie setzen, es auch für das Cookie gesetzt wird. AWSELB

  • Wenn sich im Bereich Set-Cookie eines Anwendungs-Cookies ein abschließendes Semikolon befindet, ignoriert der Load Balancer das Cookie.

Sticky Sessions auf Basis der Dauer

Der Load Balancer verwendet ein spezielles Cookie, AWSELB, um die Instanz für jede Anfrage an jeden Listener zu verfolgen. Wenn der Load Balancer eine Anforderung empfängt, prüft er zunächst, ob dieses Cookie in der Anforderung vorhanden ist. Wenn ja, wird die Anforderung an die im Cookie angegebene Instance gesendet. Wenn kein Cookie vorhanden ist, wählt der Load Balancer eine Instance basierend auf dem vorhandenen Load Balancing-Algorithmus aus. Ein Cookie wird in die Antwort eingefügt, um nachfolgende Anforderungen von demselben Benutzer an diese Instance zu binden. Mit der Konfiguration der Richtlinie für Sticky Sessions wird ein Cookie-Ablauf definiert, der die Dauer der Gültigkeit für jedes Cookie festlegt. Der Load Balancer aktualisiert die Ablaufzeit des Cookies nicht und überprüft nicht, ob das Cookie abgelaufen ist, bevor er es verwendet. Nachdem ein Cookie abgelaufen ist, ist die Sitzung nicht mehr gebunden. Der Client muss das Cookie nach Ablauf aus seinem Cookiespeicher entfernen.

Bei CORS (Cross-Origin Resource Sharing)-Anforderungen benötigen einige Browser SameSite=None; Secure zum Aktivieren von Stickiness. In diesem Fall erstellt ELB ein zweites Stickiness-Cookie AWSELBCORS, das dieselben Informationen wie das ursprüngliche Stickiness-Cookie plus dieses Attribut enthält. SameSite Kunden erhalten beide Cookies.

Wenn eine Instance ausfällt oder fehlerhaft ist, leitet der Load Balancer keine Anforderungen mehr an diese Instance weiter und wählt basierend auf dem bestehenden Load Balancing-Algorithmus eine neue funktionierende Instance. Die Anforderung wird an die neue Instance geleitet, als ob kein Cookie vorhanden wäre, und die Sitzung ist nicht gebunden.

Wenn ein Client zu einem Listener mit einem anderen Backend-Port wechselt, ist die Sitzung nicht mehr gebunden.

Aktivieren von Sticky Sessions auf Basis der Dauer für einen Load Balancer mithilfe der Konsole
  1. Öffnen Sie die EC2 Amazon-Konsole unter https://console.aws.amazon.com/ec2/.

  2. Wählen Sie im Navigationsbereich unter LOAD BALANCING die Option Load Balancers aus.

  3. Wählen Sie den Namen des Load Balancers aus, um die Detailseite zu öffnen.

  4. Wählen Sie auf der Registerkarte Listeners (Listener) die Option Manage listeners (Listener verwalten) aus.

  5. Suchen Sie auf der Seite Manage listeners (Listener verwalten) den Listener, der aktualisiert werden soll und wählen Sie unter Cookie stickiness (Cookie-Stickiness) die Option Edit (Bearbeiten) aus.

  6. Wählen Sie im Popup-Fenster „Cookie-Stickiness-Einstellung bearbeiten“ die Option Generiert vom Load Balancer aus.

  7. (Optional) Geben Sie für Expiration Period (Verfallsdatum) den Ablaufzeitraum für Cookies, in Sekunden, ein. Wenn Sie keinen Ablaufzeitraum angeben, dauert die Sticky Session solange wie die Browsersitzung.

  8. Wählen Sie Änderungen speichern, um das Popup-Fenster zu schließen.

  9. Wählen Sie Änderungen speichern, um zur Seite mit den Load Balancer-Details zurückzukehren.

Aktivieren von Sticky Sessions auf Basis der Dauer für einen Load Balancer mit der AWS CLI
  1. Verwenden Sie den folgenden Befehl create-lb-cookie-stickiness-policy, um eine vom Load Balancer generierte Cookie-Stickiness-Richtlinie mit einer Cookie-Ablaufzeit von 60 Sekunden zu erstellen:

    aws elb create-lb-cookie-stickiness-policy --load-balancer-name my-loadbalancer --policy-name my-duration-cookie-policy --cookie-expiration-period 60
  2. Verwenden Sie den folgenden Befehl set-load-balancer-policies-of-listener, um Session Stickiness für den angegebenen Load Balancer zu aktivieren:

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

    Der Befehl set-load-balancer-policies-of-listener ersetzt die Richtlinien, die aktuell dem angegebenen Load Balancer-Port zugeordnet sind. Geben Sie jedes Mal, wenn Sie diesen Befehl verwenden, die Option --policy-names an, um alle Richtlinien für die Aktivierung aufzulisten.

  3. (Optional) Verwenden Sie den folgenden describe-load-balancersBefehl, um zu überprüfen, ob die Richtlinie aktiviert ist:

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

    Die Antwort umfasst die folgenden Informationen, was bedeutet, dass die Richtlinie für den Listener auf dem angegebenen Port aktiviert ist:

    { "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" ] }, ... } ] }

Anwendungsgesteuerte Sticky Sessions

Der Load Balancer verwendet ein spezielles Cookie, um die Sitzung mit der Instance zu verknüpfen, die die ursprüngliche Anforderung verarbeitet hat, folgt jedoch der Lebensdauer des in der Richtlinienkonfiguration angegebenen Anwendungs-Cookies. Der Load Balancer fügt nur eine neues Cookie für Sticky Sessions ein, wenn die Anwendungsantwort ein neues Anwendungs-Cookie enthält. Das Load Balancer-Cookie für Sticky Sessions wird nicht mit jeder Anforderung aktualisiert. Wenn das Anwendungs-Cookie explizit entfernt wird oder abläuft, ist die Sitzung nicht mehr gebunden, bis ein neues Anwendungs-Cookie ausgegeben wird.

Die folgenden Attribute, die von Back-End-Instances festgelegt werden, werden an Clients im Cookie gesendet:path, port, domain, secure, httponly, discard, max-age, expires, version, comment, commenturl und samesite.

Wenn eine Instance ausfällt oder fehlerhaft ist, leitet der Load Balancer keine Anforderungen mehr an diese Instance weiter und wählt basierend auf dem bestehenden Load Balancing-Algorithmus eine neue funktionierende Instance. Der Load Balancer behandelt die Sitzung jetzt als der neuen funktionierenden Instance „angeheftet“ und leitet Anforderungen auch dann an diese Instance, wenn die ausgefallene Instance wieder funktionsfähig ist.

Aktivieren anwendungsgesteuerter Sticky Sessions mithilfe der Konsole
  1. Öffnen Sie die EC2 Amazon-Konsole unter https://console.aws.amazon.com/ec2/.

  2. Wählen Sie im Navigationsbereich unter LOAD BALANCING die Option Load Balancers aus.

  3. Wählen Sie den Namen des Load Balancers aus, um die Detailseite zu öffnen.

  4. Wählen Sie auf der Registerkarte Listeners (Listener) die Option Manage listeners (Listener verwalten) aus.

  5. Suchen Sie auf der Seite Manage listeners (Listener verwalten) den Listener, der aktualisiert werden soll und wählen Sie unter Cookie stickiness (Cookie-Stickiness) die Option Edit (Bearbeiten) aus.

  6. Wählen Sie Generated by application (Von der Anwendung generiert) aus.

  7. Geben Sie unter Cookie Name den Namen Ihres Anwendungscookies ein.

  8. Wählen Sie Änderungen speichern aus.

Um die anwendungsgesteuerte Sitzungsabhängigkeit zu aktivieren, verwenden Sie AWS CLI
  1. Verwenden Sie den folgenden Befehl create-app-cookie-stickiness-policy, um eine von der Anwendung generierte Cookie-Stickiness-Richtlinie zu erstellen:

    aws elb create-app-cookie-stickiness-policy --load-balancer-name my-loadbalancer --policy-name my-app-cookie-policy --cookie-name my-app-cookie
  2. Verwenden Sie den folgenden Befehl set-load-balancer-policies-of-listener, um Session Stickiness für einen Load Balancer zu aktivieren:

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

    Der Befehl set-load-balancer-policies-of-listener ersetzt die Richtlinien, die aktuell dem angegebenen Load Balancer-Port zugeordnet sind. Geben Sie jedes Mal, wenn Sie diesen Befehl verwenden, die Option --policy-names an, um alle Richtlinien für die Aktivierung aufzulisten.

  3. (Optional) Verwenden Sie den folgenden describe-load-balancersBefehl, um zu überprüfen, ob die Sticky-Policy aktiviert ist:

    aws elb describe-load-balancers --load-balancer-name my-loadbalancer
  4. Die Antwort umfasst die folgenden Informationen, was bedeutet, dass die Richtlinie für den Listener auf dem angegebenen Port aktiviert ist:

    { "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" ] }, ... } ] }