Impostazione dell'affinità sessione (servizi)

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

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

Se abiliti l'affinità sessione, Cloud Run instrada 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 controlla 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 precedente, con l'affinità sessione abilitata, 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 è dedicata a un solo client.

A causa del comportamento di scalabilità automatica di Cloud Run, l'affinità sessione è l'affinità migliore offerta. Se per qualsiasi motivo l'istanza viene terminata o raggiunge la massima contemporaneità delle richieste o il massimo utilizzo della CPU, l'affinità delle sessioni non funziona e le ulteriori richieste vengono instradate a un'istanza diversa.

Anche se puoi memorizzare nella cache i dati delle sessioni client in memoria delle istanze, non puoi dare per scontato che un client si connetta sempre alla stessa istanza, anche quando è abilitata l'affinità sessione.

Se utilizzi Cloud Load Balancing, l'affinità sessione del servizio Cloud Run può essere associata all'affinità sessione dei bilanciatori del carico globali e interni.

Affinità sessione e suddivisione del traffico

Puoi abilitare o disabilitare l'affinità sessione a livello di revisione. Se abiliti l'affinità sessione su una revisione di Cloud Run e utilizzi anche la suddivisione del traffico, l'affinità sessione ha la precedenza su qualsiasi suddivisione del traffico. In casi estremi, se un singolo client che utilizza l'affinità sessione è responsabile della maggior parte di tutte le richieste, tutte possono essere instradate a una determinata revisione, indipendentemente dalla configurazione di suddivisione del traffico.

Se attivi la suddivisione del traffico per le revisioni in cui alcune delle revisioni hanno l'affinità sessione abilitata e altre no, il risultato è che le richieste vengono spostate gradualmente verso revisioni in cui è abilitata l'affinità sessione, anche se non modifichi esplicitamente la configurazione di suddivisione del traffico. Il motivo è che ogni richiesta a cui non è associato un cookie di affinità sessione è soggetta a una suddivisione casuale, in cui alcune verranno assegnate a una revisione con affinità sessione e successivamente quelle richieste rimarranno con quella determinata revisione.

Quando aggiorni la configurazione di suddivisione del traffico per un servizio Cloud Run, le richieste successive con cookie di affinità sessione collegati potrebbero essere assegnate a una revisione diversa. Cloud Run riduce al minimo il numero di client che vengono 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 gestisce il 20% del traffico.

Imposta affinità sessione

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

Puoi impostare l'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. Fai clic su Crea servizio se stai configurando un nuovo servizio in cui stai eseguendo il deployment. Se stai configurando un servizio esistente, fai clic sul servizio e poi su Modifica ed esegui il deployment di nuova revisione.

  3. Se stai configurando un nuovo servizio, compila la pagina iniziale delle impostazioni del servizio in base alle tue esigenze, 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à sessione.
  5. Fai clic su Crea o Esegui il deployment.

Riga di comando

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 rimuovere l'affinità sessione.
  3. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

Visualizza le impostazioni di affinità sessione

Per visualizzare le impostazioni attuali di affinità sessione per il 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 di affinità sessione è elencata nella scheda Networking.

Riga di comando

  1. Utilizza il seguente comando:

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