Ü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:
Die folgenden Schritte sind im vorherigen Diagramm dargestellt:
- Ein Client initiiert eine Anforderung an ein Frontend von Application Gateway für Container.
- 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.
- Pod C gibt eine Antwort auf das Application Gateway für Container zurück.
- 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.
- Der Client sendet eine weitere Anforderung an Application Gateway für Container zusammen mit dem im vorherigen Schritt festgelegten Sitzungsaffinitätscookie.
- Application Gateway für Container erkennt das Cookie und wählt Pod C aus, um die Anforderung zu bedienen.
- Pod C antwortet auf das Anwendungsgateway für Container.
- 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
undcookieDuration
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