INTEGRITY Dokumentace

Session affinity

Když zapnete session affinity, váš load balancer nasměruje všechny požadavky konkrétního koncového uživatele na jeden endpoint. Díky této kontinuitě se zachovávají informace o uživatelské relaci, například obsah nákupního košíku, které by se jinak mohly ztratit, kdyby se požadavky rozkládaly mezi více serverů.

Session affinity může také pomoci snížit počet síťových požadavků, což přináší úspory zákazníkům s fakturací podle využití.

Typy

Session affinity určuje typ session affinity, který má load balancer použít, pokud není uvedeno jinak jako "none" nebo "" (výchozí).

Při prvním požadavku na proxovaný load balancer se vygeneruje cookie, která obsahuje informaci o tom, na který koncový bod bude požadavek přesměrován. Další požadavky od stejného klienta na stejný load balancer se po dobu platnosti cookie posílají na koncový bod, který je v ní zakódovaný, dokud tento koncový bod zůstává zdravý. Jakmile cookie vyprší nebo koncový bod přestane být zdravý, vypočítá se a použije nový koncový bod.

Jak to funguje?

Session affinity automaticky směruje požadavky od stejného klienta na stejný koncový bod:

  1. Když klient odešle svůj první požadavek, Cloudflare nastaví __cflb cookie u klienta (aby bylo možné sledovat přiřazený koncový bod).
  2. Následující požadavky od stejného klienta jsou přesměrovány na daný endpoint po dobu platnosti cookie, dokud zůstává endpoint healthy.
  3. Pokud cookie vyprší nebo se endpoint stane nezdravým, Cloudflare nastaví nový cookie sledující nový failoverový endpoint.
    flowchart LR
      accTitle: Session affinity process
      accDescr: Session affinity directs requests from the same client to the same server.
     A[Client] --Request--> B{<code>__cflb</code> cookie set?}
     B -->|Yes| C[Route to previous endpoint]
     C --> O2
     B ---->|No| E[Follow normal routing]
     E --> O2
     E --Set <code>__cflb</code> cookie--> A
     subgraph P1 [Pool 1]
        O1[Endpoint 1]
        O2[Endpoint 2]
     end

Všechny relace založené na souborech cookie mají ve výchozím nastavení délku 23 hodin, pokud si nenastavíte vlastní délku relace Doba životnosti (TTL).

Relační cookie je zabezpečené, když Always Use HTTPS je povoleno. Atribut HttpOnly je navíc u cookie vždy povolen, aby se zabránilo útokům typu cross-site scripting.

Chová se podobně jako cookie s tím rozdílem, že počáteční výběr koncového bodu je stabilní a vychází z IP adresy klienta.

Pomocí HTTP hlavičky

Při prvním požadavku na proxovaný load balancer se vygeneruje klíč relace na základě nakonfigurovaných HTTP hlaviček. Tento klíč relace obsahuje hlavičky požadavku, podle kterých se ve stavu relace load balanceru ukládá informace o tom, na který koncový bod se má požadavek přesměrovat. Další požadavky na load balancer se stejnými hlavičkami se posílají na stejný koncový bod, dokud relace trvá a koncový bod zůstává zdravý. Pokud je relace neaktivní po dobu odpovídající TTL session affinity v sekundách nebo pokud koncový bod přestane být zdravý, vypočítá se a použije nový koncový bod.

Určete, jak se používají hlavičky

Ve výchozím nastavení musí být v požadavcích odesílaných na váš load balancer přítomna alespoň jedna z HTTP hlaviček, které jste nakonfigurovali pro session affinity podle HTTP hlavičky, aby mohly vzniknout relace založené na hlavičkách. Pokud klient ve svých požadavcích přidá nebo odebere HTTP hlavičky a relaci již má navázanou, vytvoří se nová relace na základě nových HTTP hlaviček nalezených v následujících požadavcích, pokud jsou uvedeny ve vaší konfiguraci.

Pokud chcete, aby byly pro vytvoření relace vyžadovány všechny vámi nakonfigurované HTTP hlavičky v požadavcích, nastavte session_affinity_attributes.require_all_headers na true přes Cloudflare API nebo přepněte Require all headers na enabled v dashboardu Cloudflare při úpravě load balanceru.


Aktivace Session Affinity na dashboardu Cloudflare

Povolte Session Affinity, když vytvořit nebo upravit load balancer, během Hostname krok.

Pokud povolíte Session Affinity, vyberte jednu z následujících možností:


Aktivace Session Affinity přes API Cloudflare

Session affinity je vlastnost load balancerů, kterou lze nastavit pomocí následujících koncových bodů:

Přizpůsobte chování session affinity pomocí session_affinity, session_affinity_ttl, a session_affinity_attributes parametry.

Chcete-li povolit session affinity podle HTTP hlavičky, nastavte session_affinity hodnotu na header a přidejte názvy vašich HTTP hlaviček do session_affinity_attributes.headers.

Podrobnosti o příkazech API v kontextu najdete v Vytvoření load balanceru pomocí API.


Endpoint Drain

Pomocí funkce endpoint drain můžete z endpointu odčerpat nebo úplně odstranit veškerý provoz, aniž by to ovlivnilo aktivní zákazníky. Další podrobnosti o funkci endpoint drain najdete v Provádění plánované údržby.

Zero-Downtime Failover

Zero-Downtime Failover automaticky směruje provoz na endpointy v rámci poolu při dočasných síťových problémech. Díky tomu se snižuje počet chyb zobrazených uživatelům, pokud k problému dojde mezi jednotlivými aktivními kontrolami stavu.

Můžete zapnout jednu ze tří možností: