Sticky Sessions mit anwendungsbasierten Cookies - AWS Präskriptive Leitlinien

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.

Sticky Sessions mit anwendungsbasierten Cookies

Wenn Sie einen Application Load Balancer mit einem anwendungsbasierten Cookie verwenden:

  • Der Application Load Balancer bestimmt anhand der Zielgruppengewichtung, wie der eingehende Verkehr zwischen den Zielgruppen verteilt werden soll.

  • Standardmäßig verwendet der Application Load Balancer die Round-Robin-Methode, um Anfragen an die EC2 Instances in der Zielzielgruppe weiterzuleiten.

  • Nachdem der Datenverkehr zunächst an eine EC2 Instance weitergeleitet wurde, sollte die Antwort der EC2 Instance-Anwendung ein benutzerdefiniertes Anwendungscookie enthalten, das zusammen mit einem automatisierten Application Load Balancer Balancer-Cookie an den Client zurückgesendet wird.

  • Der nachfolgende Datenverkehr bleibt an der EC2 Instanz hängen, wenn der Client das Anwendungscookie und das Application Load Balancer Balancer-Cookie zurücksendet.

  • Das anwendungsbasierte Cookie läuft ab, wenn es für die konfigurierte Dauer nicht verwendet wird.

Vorlage: Verwenden Sie die AWS CloudFormation Vorlage stickysessionsapp.yml (in der Beispielcode-.zip-Datei enthalten), um Sticky-Sessions mit anwendungsbasierten Cookies auszuprobieren.

Häufige Anwendungsfälle

Verwenden Sie Sticky-Sitzungen mit anwendungsgenerierten Cookies, wenn Sie in diesen Szenarien zusätzliche Kontrolle wünschen:

  • PHP-Webserver

  • Server, auf denen temporäre Sitzungsdaten wie Protokolle, Einkaufswagen oder Chat-Konversationen gespeichert werden

Änderungen am Code von basic.yml

Die einzige Codeänderung betrifft die Zielgruppenkonfiguration. Wir haben dem Application Load Balancer und den Zielgruppenattributen eine Stickiness-Konfiguration hinzugefügt. Die Dauer der Anwendungs-Cookies ist angegeben, und für die Zielgruppe ist die Anwendungs-Cookie-Stickiness aktiviert.

basic.yml stickysessionsapp.yml
TG1: Type: 'AWS::ElasticLoadBalancingV2::TargetGroup' Properties: Name: TG1 Protocol: HTTP Port: 80 TargetType: instance Targets: - Id: !Ref Instance1 - Id: !Ref Instance2 VpcId: !Ref CustomVPC
TG1: Type: 'AWS::ElasticLoadBalancingV2::TargetGroup' Properties: Name: TG1 Protocol: HTTP Port: 80 TargetType: instance Targets: - Id: !Ref Instance1 - Id: !Ref Instance2 VpcId: !Ref CustomVPC TargetGroupAttributes: - Key: stickiness.enabled Value: true - Key: stickiness.type Value: app_cookie - Key: stickiness.app_cookie.duration_seconds Value: 10 - Key: stickiness.app_cookie.cookie_name Value: TESTCOOKIE

Schritte

Hinweise
  • Für NAT-Gateways fallen geringe Kosten an.

  • Durch mehrere EC2 Instances wird Ihr kostenloses Kontingent schneller aufgebraucht als durch eine einzelne EC2 Instanz.

  1. Stellen Sie die CloudFormation Vorlage stickysessionslb.yml in einer Laborumgebung bereit.

  2. Warten Sie, bis sich der Integritätsstatus Ihrer Zielgruppeninstanzen von anfänglich auf fehlerfrei ändert.

  3. Navigieren Sie in einem Webbrowser mit HTTP (TCP/80) zur Application Load Balancer Balancer-URL.

    Zum Beispiel: http://alb-123456789.us-east-1.elb.amazonaws.com/

    Auf der Webseite wird eine der folgenden Optionen angezeigt: Instanz 1 - TG1, Instanz 2 - TG1, Instanz 3 - oder Instanz 4 - TG2. TG2

  4. Aktualisieren Sie die Seite mehrmals.

Erwartete Ergebnisse

Anmerkung

Die CloudFormation Vorlage in diesem Beispiel hat die Klebrigkeit so konfiguriert, dass sie 10 Sekunden anhält. Die gültige Konfiguration für die Dauer der Klebrigkeit liegt zwischen 1 Sekunde und 1 Woche.

Die Instanz, die die Webseite lädt, sollte dieselbe bleiben, wie im Seitentext angegeben.

Die Dauer der Sperrzeit wird nicht aktualisiert, sondern basiert auf dem Ablauf, der im Application Load Balancer für das von der EC2 Instanz generierte Anwendungscookie konfiguriert wurde.

Beispiel 1: Warten Sie 5 Sekunden, um die Seite zu aktualisieren. Dieselbe Instanz wird geladen und die Stickiness wird für weitere 10 Sekunden aktualisiert.

Beispiel 2: Warten Sie länger als 10 Sekunden, um die Seite neu zu laden. Das Anwendungscookie läuft ab und Sie werden zu einer anderen EC2 Instanz weitergeleitet. Diese neue Instanz generiert ein weiteres Anwendungscookie mit einer Dauer von 10 Sekunden.

Funktionsweise

  • In diesem Beispiel ist auf den EC2 Instanzen ein Apache-Webserver (httpd) installiert. Die httpd.conf Datei ist so konfiguriert, dass sie einen statischen Set-Cookie Wert an den Client (Ihren Webbrowser) zurückgibt. Der Set-Cookie Wert ist fest codiert als TESTCOOKIE=<somevalue>

  • Öffnen Sie in Ihrem Browser die Option „Element untersuchen“, wählen Sie die Registerkarte „Netzwerk“ und anschließend die Methode „Abrufen“, wodurch die Seite geladen wird. Sie werden eine Registerkarte „Cookies“ sehen.

  • Der Browser ist eine Client-Anwendung, die automatisch so konfiguriert ist, dass sie alle nachfolgenden Updates mit den Cookies, die sie in der Set-Cookie Antwort des Servers empfängt, an den Server zurücksendet.

  • Wenn Sie die Seite neu laden, werden die beim ersten Laden der Seite empfangenen Cookies automatisch an den Application Load Balancer zurückgesendet.

    • Wenn das Cookie abgelaufen ist (d. h. 10 Sekunden seit dem letzten Aufruf vergangen sind), verwendet der Application Load Balancer eine neue Logik, um zu bestimmen, an welche EC2 Instanz der Datenverkehr weitergeleitet werden soll.

    • Wenn das Cookie nicht abgelaufen ist, leitet der Application Load Balancer den Datenverkehr an dieselbe EC2 Instanz weiter.