Questa pagina mostra come abilitare l'affinità sessione per Cloud Run la revisione del servizio.
Come funziona l'affinità sessione
Per impostazione predefinita, l'affinità sessione non è abilitata, quindi le richieste da
lo stesso client potrebbe essere gestito da istanze diverse, come mostrato
qui:
Se abiliti l'affinità sessione, Cloud Run instrada 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
a identificare più richieste dello stesso client e a indirizzare tutte queste richieste
la stessa istanza, come mostrato qui:
Comportamenti chiave da tenere presente
Come mostrato nel diagramma in alto, con l'affinità sessione attivata, un client raggiungerà nella stessa istanza. Tuttavia, tieni presente che l'istanza può ricevere richieste da client diversi. Per affinità sessione non si intende è dedicata a un solo client.
A causa del comportamento della scalabilità automatica di Cloud Run, l'affinità sessione è best effort. Se l'istanza viene terminata per qualsiasi motivo o raggiunge massimo della contemporaneità di richieste o utilizzo massimo della CPU, quindi sessione l'affinità non funziona e ulteriori richieste vengono instradate a un'istanza diversa.
Sebbene sia possibile memorizzare nella cache i dati della sessione client nella memoria delle istanze, non è possibile presumere che un client si riconnetta sempre alla stessa istanza anche quando è attivata l'affinità sessione.
L'affinità sessione di Cloud Load Balancing e l'affinità sessione Cloud Run sono due implementazioni separate e indipendenti dell'affinità 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 abilitare l'affinità sessione di Cloud Load Balancing su un gruppo di endpoint di rete serverless, non supportati.
Affinità sessione e suddivisione del traffico
Puoi abilitare o disabilitare l'affinità sessione a livello di revisione. Se abilitare l'affinità sessione su una revisione di Cloud Run e utilizzare la suddivisione del traffico, affinità sessione ha la precedenza su qualsiasi suddivisione del traffico. In casi estremi, se un solo client che utilizza l'affinità sessione è responsabile della stragrande maggioranza di tutti tutte le richieste possono essere indirizzate a una determinata revisione, indipendentemente la configurazione di suddivisione del traffico.
Se attivi la suddivisione del traffico per le revisioni in cui alcune di queste hanno affinità attivata e altre no, il risultato è che le richieste vengono delle revisioni con un'affinità sessione attivata, anche se non hai esplicitamente impostato modificare la configurazione della suddivisione del traffico. Il motivo è che ogni richiesta a cui non è collegato un cookie di affinità sessione è soggetto a una suddivisione casuale, dove alla fine alcune verranno assegnate a una revisione con affinità sessione in seguito le richieste rimarranno nella revisione specifica.
Quando aggiorni la configurazione di suddivisione del traffico per un Cloud Run richieste successive con affinità sessione i cookie allegati potrebbero essere assegnati a una revisione diversa. Cloud Run riduce al minimo il numero di client viene reindirizzato a una nuova revisione.
Ad esempio, se un servizio divideva il traffico al 90%/10% e il traffico suddivisione viene aggiornata a 80%/20%, il 10% del traffico verrà reindirizzato la revisione che ora gestisce il 20% del traffico.
Imposta affinità sessione
Qualsiasi modifica alla configurazione porta la creazione di una nuova revisione. Anche le revisioni successive ricevono automaticamente di questa configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.
Puoi impostare l'affinità sessione utilizzando la console Google Cloud, gcloud o l'utilizzo di un file .yaml quando esegui crea un nuovo servizio o esegui il deployment di una nuova revisione:
Console
Nella console Google Cloud, vai a Cloud Run:
Fai clic su Esegui il deployment del container e seleziona Servizio per nuovo servizio. Se stai configurando un servizio esistente, fai clic sul servizio, quindi fai clic su Modifica ed esegui il deployment di una nuova revisione.
Se stai configurando un nuovo servizio, compila il servizio iniziale delle impostazioni, poi fai clic su Container, volumi, networking, sicurezza per espandere di configurazione del servizio.
Fai clic sulla scheda Networking.
- Fai clic sulla casella di testo Affinità sessione.
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
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
Aggiungi l'annotazione
run.googleapis.com/sessionAffinity:
:spec: template: metadata: annotations: run.googleapis.com/sessionAffinity: 'BOOL'
Sostituisci
- "BOOL" con valore "
true
" per impostare l'affinità sessione o "false
" per rimuovere l'affinità sessione.
- "BOOL" con valore "
Crea o aggiorna il servizio utilizzando il comando seguente:
gcloud run services replace service.yaml
Visualizza le impostazioni di affinità sessione
Per visualizzare le impostazioni di affinità sessione corrente per Servizio Cloud Run:
Console
Nella console Google Cloud, vai a Cloud Run:
Fai clic sul servizio che ti interessa per aprire Dettagli servizio. .
Fai clic sulla scheda Revisioni.
Nel riquadro dei dettagli a destra, l'impostazione Affinità sessione è elencato nella scheda Networking.
gcloud
Utilizza questo comando:
gcloud run services describe SERVICE
Individua l'impostazione di affinità sessione nel configurazione.