Freigeben über


Übersicht der Sitzungsaffinität für Application Gateway für Container

Sitzungsaffinität, auch als Sitzungspersistenz oder Kurzsitzungenbezeichnet, ist eine Technik, die beim Lastenausgleich verwendet wird, um sicherzustellen, dass die Anforderungen eines Clients immer an denselben Server gesendet werden. Dies ist wichtig für die Anwendungen, wo die Benutzerdaten in Sitzungsvariablen oder in einem lokalen Cache auf einem bestimmten Server gespeichert werden (häufig als zustandsbehaftete Anwendung bezeichnet).

Mit der Sitzungsaffinität bietet das Application Gateway für Container ein Cookie im Set-Cookie Header der ersten Antwort. Wenn der Client das Cookie in zukünftigen Anforderungen vorlegt, erkennt Application Gateway für Container das Cookie und leitet den Datenverkehr an dasselbe Back-End-Ziel weiter. Sehen Sie sich folgendes Beispielszenario an:

Ein Diagramm, das die Sitzungsaffinität für Application Gateway für Container zeigt.

Die folgenden Schritte sind im vorherigen Diagramm dargestellt:

  1. Ein Client initiiert eine Anforderung an ein Frontend von Application Gateway für Container.
  2. Application Gateway für Container wählt einen aus den vielen verfügbaren Pods zum Lastenausgleich der Anforderung. In diesem Beispiel wird davon ausgegangen, dass Pod C aus den vier verfügbaren Pods ausgewählt ist.
  3. Pod C gibt eine Antwort auf das Application Gateway für Container zurück.
  4. Neben der Back-End-Antwort von Pod C fügt Application Gateway für Container einen Set-Cookie-Header hinzu; dieser enthält einen eindeutig generierten Hash zur Verwendung für das Routing.
  5. Der Client sendet eine weitere Anforderung an Application Gateway für Container zusammen mit dem im vorherigen Schritt festgelegten Sitzungsaffinitätscookie.
  6. Application Gateway für Container erkennt das Cookie und wählt Pod C aus, um die Anforderung zu bedienen.
  7. Pod C antwortet auf das Anwendungsgateway für Container.
  8. Das Anwendungsgateway für Container gibt die Antwort auf den Client zurück.

Nutzungsdetails

Die Sitzungsaffinität wird durch folgenden Eigenschafte und Merkmale definiert:

Name Beschreibung
affinityType Gültige Werte sind "application-cookie" oder "managed-cookie".
cookieName Erforderlich, wenn AffinityType anwendungscookie ist. Dies ist der Name des Cookies.
cookieDuration Erforderlich, wenn AffinityType anwendungscookie ist. Dies ist die Dauer (Lebensdauer) des Cookies in Sekunden.

Wird das Cookie dem Client angeboten, verwendet das Application Gateway vordefinierte Werte im Typ der verwalteten Cookieaffinität.

  • Der Name des Cookies lautet: AGCAffinity.
  • Die Dauer (Lebensdauer) des Cookies beträgt 86.400 Sekunden (ein Tag).
  • Die Eigenschaften und Werte cookieName und cookieDuration werden verworfen.

Im Anwendungsaffinitätstyp muss der Cookiename und die Dauer (Lebensdauer) explizit definiert werden.

Konfigurieren der Sitzungsaffinität

Die Sitzungsaffinität kann in einer RoutePolicy-Ressource definiert werden, die auf eine definierte HTTPRoute ausgerichtet ist. Sie müssen entweder sessionAffinity mit einer affinityType von application-cookie oder managed-cookie angeben. In diesem Beispiel verwenden wir application-cookie als AffinityType und definieren explizit einen Cookienamen und eine Lebensdauer.

Beispielbefehl zum Erstellen einer neuen RoutePolicy mit einem definierten Cookie nomnom mit einer Lebensdauer von 3.600 Sekunden (1 Stunde).

kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: RoutePolicy
metadata:
  name: session-affinity-route-policy
spec:
  targetRef:
    kind: HTTPRoute
    name: http-route
    namespace: test-infra
    group: ""
  default:
    sessionAffinity: 
      affinityType: "application-cookie"
      cookieName: "nomnom"
      cookieDuration: 3600
EOF