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:

  1. Melden Sie sich bei Ihrem IBM Cloud-Konto an.
  2. Erstellen Sie eine globale Lastausgleichsfunktion.
  3. 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 Modus Lax ; wenn deaktiviert, verwenden Cookies den Modus None. * 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-Cookies secure im Attribut samesite ; wenn deaktiviert, verwenden Cookies nicht secure. * Always secure ist immer gesetzt, d. h. das Cookie wird nur über HTTPS gesendet. * Never secure wird 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:

  1. Richten Sie Ihre API-Umgebung mit den richtigen Variablen ein.

  2. Speichern Sie die folgenden Werte in Variablen, damit diese im API-Befehl verwendet werden können:

    • session_affinity gibt 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' und ip_cookie.
    • session_affinity_ttl ist die Lebensdauer der Sitzungsaffinität.
    • session_affinity_attributes, zu denen Folgendes gehört:
      • samesite konfiguriert das Attribut SameSite für das Affinitätscookie. Gültige Werte sind ' Auto, ' Lax, ' None, ' Strict; Standardwert ' Auto.

      • secure konfiguriert das Attribut "Secure" im Sitzungsaffinitätscookie. Gültige Werte sind ' Auto, ' Always, ' Never; Standardwert ' Auto.

      • drain_duration ist 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 " temporary und " sticky; Standardwert " none.

        Sticky Zero-Downtime Failover wird für die Sitzungsaffinität durch den Header „ HTTP “ nicht unterstützt.

  3. 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.