Sitzungsaffinität festlegen
Das Laden einer Website erfordert normalerweise das Abrufen mehrerer Assets von einem Web-Server. Die CIS -Sitzungsaffinität minimiert redundante Netzanforderungen, indem Anforderungen von demselben Client automatisch an denselben Ursprungs-Web-Server weitergeleitet werden.
CIS legt ein Cookie für die erste Antwort an den Client fest. Durch die Verwendung des Cookies in nachfolgenden Clientanforderungen wird sichergestellt, dass diese Anforderungen an denselben Ursprung gesendet werden, es sei denn, der Ursprung ist nicht verfügbar.
Wenn CIS-Sitzungsaffinität aktiviert ist, führt sie Folgendes aus:
- Wenn ein Client seine erste Anforderung stellt, setzt CIS ein
CFLib-Cookie auf dem Client. Das Cookie codiert den Ursprung, an den die Anforderung weitergeleitet wird. - Nachfolgende Anforderungen desselben Clients werden an diesen Ursprung für die Dauer des Cookies - und solange sich der Ursprungsserver in einwandfreiem Zustand befindet - weitergeleitet.
- Wenn das Cookie abläuft oder sich der Ursprungsserver nicht in einwandfreiem Zustand befindet, legt CIS ein neues Cookie fest, das den entsprechenden Failover-Ursprung codiert.
Alle Sitzungen werden standardmäßig auf 23 Stunden eingestellt, es sei denn, eine angepasste Sitzungs-TTL wird (in Sekunden) zwischen 30 Minuten und 7 Tagen angegeben. Ein Sitzungsaffinitätscookie ist erforderlich, damit der TTL-Wert berücksichtigt
wird. Das Sitzungscookie ist sicher, wenn " Always Use HTTPS aktiviert ist. Darüber hinaus ist HttpOnly immer für das Cookie aktiviert, um Cross-Site-Scripting-Angriffe
zu verhindern.
Festlegen der Sitzungsaffinität über die CLI
Wenn Sie einen globalen Load Balancer über die CLI erstellen, führen Sie die folgenden Schritte aus, um die Sitzungsaffinität festzulegen:
- Melden Sie sich bei Ihrem IBM Cloud-Konto an.
- Erstellen Sie eine globale Lastausgleichsfunktion.
- Legen Sie die folgenden CLI-Variablen fest:
Wenn Sie eine bestimmte Konfiguration für „ SameSite “ in Ihren Sitzungsaffinitäts-Cookies benötigen, empfiehlt CIS, dass Sie Werte für samesite und angeben secure, die sich Auto von unterscheiden, anstatt
sich auf das Standardverhalten zu verlassen. Auf diese Weise ändert sich der Wert des Cookie-Attributs „ SameSite “ aufgrund von Konfigurationsänderungen (nämlich „ Always Use HTTPS “) nicht.
session_affinity: Gültige Werte sind cookie, none.
ttl: Zeit in Sekunden, bis das Session-Affinity-Cookie dieses Load Balancers nach seiner Erstellung abläuft. Gültige Werte zwischen ' 1800, ' 604800. Die Standardeinstellung lautet „ 82800 “.
session_affinity_attributes: Cookie-Attribute für ein Session-Affinity-Cookie.
samesite-
Gültige Werte: *
Auto(Standard): Wenn Immer verwenden HTTPS aktiviert ist, verwenden Sitzungsaffinitäts-Cookies den ModusLax; wenn deaktiviert, verwenden Cookies den ModusNone. *None: Bei allen Anfragen werden Cookies mitgeschickt. *Lax: Cookies werden nur an die Apex-Domäne gesendet (z. B. "example.com). *Strict: Cookies werden von der ersten Partei (der besuchten Domain) erstellt. secure-
Gültige Werte: *
Auto(Standard): Wenn "Always Use HTTPS " aktiviert ist, verwenden Sitzungsaffinitäts-Cookiessecureim Attributsamesite; wenn deaktiviert, verwenden Cookies nichtsecure. *Alwayssecureist immer gesetzt, d. h. das Cookie wird nur über HTTPS gesendet. *Neversecurewird nie gesetzt, so dass Cookies sowohl über HTTPS als auch über HTTP gesendet werden können. drain_duration-
Optional. Zeit in Sekunden, in der der Ursprung aktive Sitzungen entleeren wird. Nach Ablauf der Zeit werden alle bestehenden Sitzungen beendet. Dieses Feld wird nur verwendet, wenn die Sitzungsaffinität auf dem Load Balancer aktiviert ist.
zero_downtime_failover-
Optional. Sendet den Datenverkehr bei vorübergehenden Netzwerkproblemen automatisch an Endpunkte innerhalb eines Pools. Die Werte sind: *
none(Standard): Es findet kein Failover statt und Ihre Benutzer erhalten möglicherweise Fehlermeldungen. *temporary: Der Verkehr wird an andere Endpunkte gesendet, bis der ursprünglich festgelegte Endpunkt verfügbar ist. *sticky: Der Sitzungs-Affinitäts-Cookie wird aktualisiert und nachfolgende Anfragen werden bei Bedarf an den neuen Endpunkt gesendet.Sticky Zero-Downtime Failover wird für die Sitzungsaffinität durch den Header „ HTTP “ nicht unterstützt.
Zum Beispiel:
ibmcloud cis glb-update fc72db47cee8290eaef292cda6e1619a 12b68758126546e0d129c7bbadfa87f0 --json '{"session_affinity":"cookie","session_affinity_ttl":1800,"session_affinity_attributes":{"samesite":"Auto","secure":"Auto"}}'
Festlegen der Sitzungsaffinität mit der API
Die Sitzungsaffinität ist eine Eigenschaft von globalen Load Balancern, die Sie mit den folgenden Endpunkten einstellen können:
Passen Sie das Verhalten der Sitzungsaffinität mit den Parametern ' session_affinity, ' session_affinity_ttl und ' session_affinity_attributes ' an.
Um die Sitzungsaffinität über HTTP zu aktivieren, setzen Sie den Wert session_affinity auf header und fügen Sie Ihre HTTP zu session_affinity_attributes.headers hinzu.
Wenn Sie eine globale Lastausgleichsfunktion mithilfe der API erstellen, führen Sie die folgenden Schritte aus, um die Sitzungsaffinität festzulegen:
-
Richten Sie Ihre API-Umgebung mit den richtigen Variablen ein.
-
Speichern Sie die folgenden Werte in Variablen, damit diese im API-Befehl verwendet werden können:
session_affinitygibt den Typ der Sitzungsaffinität an, die von der Lastausgleichsfunktion verwendet wird, sofern nicht "none" oder "default" angegeben ist. Gültige Werte sind 'none', 'cookie' undip_cookie.session_affinity_ttlist die Lebensdauer der Sitzungsaffinität.session_affinity_attributes, zu denen Folgendes gehört:-
samesitekonfiguriert das Attribut SameSite für das Affinitätscookie. Gültige Werte sind 'Auto, 'Lax, 'None, 'Strict; Standardwert 'Auto. -
securekonfiguriert das Attribut "Secure" im Sitzungsaffinitätscookie. Gültige Werte sind 'Auto, 'Always, 'Never; Standardwert 'Auto. -
drain_durationist der Wert der Bereinigungsdauer in Sekunden. -
zero_downtime_failover(optional) sendet bei vorübergehenden Netzwerkproblemen automatisch Datenverkehr an Endpunkte innerhalb eines Pools. Die Werte sind "temporaryund "sticky; Standardwert "none.Sticky Zero-Downtime Failover wird für die Sitzungsaffinität durch den Header „ HTTP “ nicht unterstützt.
-
-
Wenn alle Variablen initialisiert wurden, erstellen Sie die globale Lastausgleichsfunktion mit Sitzungsaffinität:
curl -X POST https://api.cis.cloud.ibm.com/v1/:crn/zones/:zone_id/load_balancers -H 'content-type: application/json' -H 'x-auth-user-token: Bearer xxxxxx' -d '{
"description": "",
"proxied": true,
"enabled": true,
"name": "www.example.com",
"session_affinity": "none",
"session_affinity_ttl": 5000,
"steering_policy": "geo",
"fallback_pool": "4112ba6c2974ec43886f90736968e838",
"default_pools": [
"6563ebae141638f92ebbdc4a821bef8c",
"4112ba6c2974ec43886f90736968e838"
],
"pop_pools": {},
"region_pools": {
"EEU": [
"4112ba6c2974ec43886f90736968e838"
],
"ENAM": [
"6563ebae141638f92ebbdc4a821bef8c"
],
"WEU": [
"4112ba6c2974ec43886f90736968e838"
],
"WNAM": [
"6563ebae141638f92ebbdc4a821bef8c"
]
}
}'
Wenn Sie in Ihrer API-Anfrage samesite auf None setzen, können Sie secure nicht auf Never setzen.