Condividi tramite


Panoramica dell'affinità di sessione del gateway applicazione per contenitori

L'affinità di sessione, nota anche come persistenza della sessione o sessioni permanenti, è una tecnica usata nel bilanciamento del carico per garantire che le richieste di un client vengano sempre inviate allo stesso server. Questo aspetto è importante per le applicazioni che archiviano i dati utente nelle variabili di sessione o in una cache locale in un determinato server (comunemente definito applicazione con stato).

Con l'affinità di sessione, il gateway applicazione per contenitori presenta un cookie nell'intestazione Set-Cookie della prima risposta. Se il client presenta il cookie nelle richieste future, il gateway applicazione per contenitori riconosce il cookie e inoltra il traffico alla stessa destinazione back-end. Vedere lo scenario di esempio seguente:

Diagramma che illustra l'affinità di sessione del gateway applicativo per contenitori.

I passaggi seguenti sono illustrati nel diagramma precedente:

  1. Un client avvia una richiesta a un front-end del gateway applicativo per contenitori.
  2. Gateway applicativo per contenitori seleziona uno dei numerosi pod disponibili per bilanciare il carico della richiesta. In questo esempio si presuppone che l'opzione Pod C sia selezionata tra i quattro pod disponibili.
  3. Il pod C restituisce una risposta al gateway applicativo per contenitori.
  4. Oltre alla risposta back-end del pod C, Gateway aggiunge un'intestazione Set-Cookie contenente un hash generato in modo univoco usato per il routing.
  5. Il client invia un'altra richiesta a Gateway applicativo per contenitori insieme al cookie di affinità di sessione impostato nel passaggio precedente.
  6. Gateway applicativo per contenitori rileva il cookie e seleziona il pod C per gestire la richiesta.
  7. Il pod C risponde al Gateway applicativo per contenitori.
  8. Gateway applicativo per contenitori restituisce una risposta al client

Usage details (Dettagli di utilizzo)

L'affinità di sessione è definita dalle proprietà e dalle caratteristiche seguenti:

Nome Descrizione
affinityType I valori validi sono cookie applicazione o cookie gestiti.
cookieName Obbligatorio se affinityType è un cookie applicazione. Si tratta del nome del cookie.
cookieDuration Obbligatorio se affinityType è un cookie applicazione. Questa è la durata (durata) del cookie in secondi.

Nel tipo di affinità cookie gestita, il gateway applicazione usa valori predefiniti quando il cookie viene offerto al client.

  • Il nome del cookie è: AGCAffinity.
  • La durata (durata) del cookie è di 86.400 secondi (un giorno).
  • Le proprietà e i valori cookieName e cookieDuration vengono eliminati.

Nel tipo di affinità dell'applicazione, il nome e la durata del cookie (durata) devono essere definiti in modo esplicito.

Come configurare l'affinità di sessione

L'affinità di sessione può essere definita in una risorsa RoutePolicy, destinata a un HTTPRoute definito. È necessario specificare sessionAffinity con un affinityType di application-cookie o di managed-cookie. In questo esempio si usa application-cookie come affinityType e si definiscono in modo esplicito un nome e una durata del cookie.

Comando di esempio per creare un nuovo RoutePolicy con un cookie definito chiamato nomnom con una durata di 3.600 secondi (1 ora).

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