Impostare l'affinità sessione per i servizi

Questa pagina mostra come attivare l'affinità sessione per la revisione del servizio Cloud Run.

Come funziona l'affinità sessione

Per impostazione predefinita, l'affinità sessione non è abilitata, quindi le richieste dello stesso client potrebbero essere gestite da istanze diverse, come mostrato di seguito: immagine

Se abiliti l'affinità sessione, Cloud Run indirizza le richieste sequenziali per un determinato client alla stessa istanza di revisione. Cloud Run utilizza un cookie di affinità sessione con un TTL di 30 giorni e ne ispeziona il valore per identificare più richieste dello stesso client e indirizza tutte queste richieste alla stessa istanza, come mostrato qui: immagine

Comportamenti chiave da tenere presenti

Come mostrato nel diagramma sopra riportato, con l'affinità sessione attivata, un client raggiungerà la stessa istanza. Tuttavia, tieni presente che l'istanza può ricevere richieste da client diversi. L'affinità sessione non significa che l'istanza sia dedicata a un solo client.

A causa del comportamento di scalabilità automatica di Cloud Run, l'affinità sessione è al meglio delle possibilità. Se l'istanza viene terminata per qualsiasi motivo o raggiunge la concorrenza massima delle richieste o l'utilizzo massimo della CPU, l'affinità sessione viene interrotta e le richieste successive vengono indirizzate a un'altra istanza.

Sebbene tu possa memorizzare nella cache i dati della sessione client nella memoria delle istanze, non puoi presupporre che un client si riconnetta sempre alla stessa istanza, anche quando l&#3affinità sessionene è abilitata.

L'affinità di sessione di Cloud Load Balancing e l'affinità sessione di Cloud Run sono due implementazioni separate e indipendenti dellaffinità sessione. Puoi abilitare l'affinità sessione di Cloud Run su un servizio Cloud Run, anche se si trova dietro un bilanciatore del carico. Tuttavia, non devi abilitare la affinità sessione di Cloud Load Balancing su un gruppo di endpoint di rete serverless, poiché non è supportata.

Affinità sessione e suddivisione del traffico

Puoi attivare o disattivare l'affinità sessione a livello di revisione. Se attivi l'affinità sessione in una revisione di Cloud Run e utilizzi anche la divisione del traffico, l'affinità sessione ha la precedenza su qualsiasi divisione del traffico. In casi estremi, se un singolo client che utilizzaaffinità sessioneà è responsabile della stragrande maggioranza di tutte le richieste, tutte queste richieste possono essere indirizzate a una determinata revisione indipendentemente dalla configurazione della suddivisione del traffico.

Se abiliti la suddivisione del traffico per le revisioni in cui alcune hanno l'affinità sessione abilitata e altre no, il risultato è che le richieste vengono spostate gradualmente verso le revisioni che hanno l'affinità sessione abilitata, anche se non modifichi esplicitamente la configurazione della suddivisione del traffico. Il motivo è che ogni richiesta a cui non è associato un cookie diaffinità sessionee è soggetta a una suddivisione casuale, in cui alcune verranno assegnate a una revisione coaffinità sessionene e successivamente queste richieste rimarranno associate a quella revisione specifica.

Quando aggiorni la configurazione della suddivisione del traffico per un servizio Cloud Run, le richieste successive con i cookie di affinità sessione allegati potrebbero essere assegnate a una revisione diversa. Cloud Run riduce al minimo il numero di client reindirizzati a una nuova revisione.

Ad esempio, se un servizio suddivideva il traffico al 90%/10% e la suddivisione del traffico viene aggiornata all'80%/20%, il 10% del traffico verrà reindirizzato alla revisione che ora pubblica il 20% del traffico.

Impostare l'affinità sessione

Qualsiasi modifica alla configurazione comporta la creazione di una nuova revisione. Anche le revisioni successive riceveranno automaticamente questa impostazione di configurazione, a meno che tu non apporti aggiornamenti espliciti per modificarla.

Puoi impostare affinità sessione utilizzando la console Google Cloud , la riga di comando gcloud o un file .yaml quando crei un nuovo servizio o esegui il deployment di una nuova revisione:

Console

  1. Nella console Google Cloud , vai a Cloud Run:

    Vai a Cloud Run

  2. Seleziona Servizi dal menu e fai clic su Esegui il deployment del contenitore per configurare un nuovo servizio. Se stai configurando un servizio esistente, fai clic sul servizio, quindi su Modifica ed esegui il deployment della nuova revisione.

  3. Se stai configurando un nuovo servizio, compila la pagina delle impostazioni iniziali del servizio, quindi fai clic su Container, volumi, networking, sicurezza per espandere la pagina di configurazione del servizio.

  4. Fai clic sulla scheda Networking.

    immagine

    • Fai clic sulla casella di testo Affinità di sessione.
  5. Fai clic su Crea o Esegui il deployment.

gcloud

Per specificare l'affinità sessione, utilizza il comando seguente:

gcloud run services update SERVICE --session-affinity

Sostituisci

  • SERVICE con il nome del servizio che stai aggiornando.

Per rimuovere l'affinità sessione, utilizza il comando

gcloud run services update SERVICE --no-session-affinity

YAML

  1. Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aggiungi l'annotazione run.googleapis.com/sessionAffinity::

    spec:
     template:
       metadata:
         annotations:
           run.googleapis.com/sessionAffinity: 'BOOL'

    Sostituisci

    • "BOOL" con il valore "true" per impostare l'affinità sessione o "false" per rimuoverla.
  3. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Aggiungi quanto segue a una risorsa google_cloud_run_v2_service nella configurazione Terraform:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-aff"
  location = "REGION"
  deletion_protection = false
  ingress = "INGRESS_TRAFFIC_ALL"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    session_affinity = BOOL
  }
}

Sostituisci:

  • REGION con la regione Google Cloud . Ad esempio europe-west1.
  • BOOL con valore true per impostare l'affinità sessione o false per rimuoverla.

Visualizza le impostazioni di affinità sessione

Per visualizzare le impostazioni di affinità sessione correnti per il tuo servizio Cloud Run:

Console

  1. Nella console Google Cloud , vai a Cloud Run:

    Vai a Cloud Run

  2. Fai clic sul servizio che ti interessa per aprire la pagina Dettagli servizio.

  3. Fai clic sulla scheda Revisioni.

  4. Nel riquadro dei dettagli a destra, l'impostazione dell'affinità sessione è elencata nella scheda Networking.

gcloud

  1. Utilizza questo comando:

    gcloud run services describe SERVICE
  2. Individua l'impostazione di affinità sessione nella configurazione restituita.