Lo svuotamento delle connessioni è un processo che garantisce che alle richieste esistenti in corso venga concesso il tempo per essere completate quando una VM viene rimossa da un gruppo di istanze o quando un endpoint viene rimosso dai gruppi di endpoint di rete (NEG) che rientrano nell'ambito di una zona.
Le informazioni su questa pagina si applicano solo ai gruppi di istanze e ai seguenti tipi di NEG con ambito a livello di zona:
Per abilitare lo svuotamento della connessione, imposta un timeout per lo svuotamento della connessione sul servizio di backend. La durata del timeout deve essere compresa tra 0 e 3600 secondi inclusi.
Per la durata specificata del timeout, alle richieste esistenti alla VM o all'endpoint rimosso viene concesso il tempo di completamento. Il bilanciatore del carico non invia nuove connessioni TCP alla VM rimossa. Una volta raggiunta la durata del timeout, tutte le connessioni TCP rimanenti alla VM vengono chiuse.
Lo svuotamento della connessione inizia ogni volta che esegui una delle seguenti operazioni:
- Puoi rimuovere una VM da un gruppo di istanze manualmente.
- Puoi rimuovere un'istanza da un gruppo di istanze gestite eseguendo una chiamata
resize()
,deleteInstances()
,recreateInstances()
oabandonInstances()
. - Un gruppo di istanze viene rimosso da un servizio di backend. Non è supportato per i bilanciatori del carico di rete passthrough interni.
- Google Cloud elimina un'istanza nell'ambito della scalabilità automatica.
- Puoi eseguire un aggiornamento del gruppo di istanze gestite utilizzando il programma di aggiornamento dei gruppi di istanze gestite.
- Devi rimuovere manualmente un endpoint da un NEG a livello di zona.
L'arresto dell'istanza può richiedere fino a 60 secondi una volta trascorsa la durata di timeout specificata.
Se abiliti lo svuotamento della connessione su più servizi di backend che condividono gli stessi gruppi di istanze o NEG, viene utilizzato il valore di timeout più alto. Supponiamo, ad esempio, che lo stesso gruppo di istanze o NEG a livello di zona sia un backend per due servizi di backend, dove un servizio di backend ha un timeout per lo svuotamento della connessione di 100 secondi e l'altro ha un timeout per lo svuotamento della connessione di 200 secondi. Google Cloud utilizza 200 secondi come timeout effettivo per lo svuotamento della connessione, in modo che le connessioni esistenti possano esistere per 200 secondi prima che Google Cloud le chiuda. Se il backend è un gruppo di istanze gestite, le operazioni che eliminano l'istanza vengono ritardate di almeno 200 secondi.
Di seguito è riportato un elenco di specifiche relative allo svuotamento della connessione:
Lo svuotamento della connessione è disponibile per i servizi di backend che fanno parte dei seguenti bilanciatori del carico:
- Bilanciatore del carico delle applicazioni esterno globale
- Bilanciatore del carico delle applicazioni esterno regionale
- Bilanciatore del carico delle applicazioni classico
- Bilanciatore del carico di rete proxy esterno
- Bilanciatore del carico di rete proxy interno regionale
- Bilanciatore del carico di rete proxy interno tra regioni
- Bilanciatore del carico delle applicazioni interno regionale
- Bilanciatore del carico delle applicazioni interno tra regioni
- Bilanciatore del carico di rete passthrough interno
- Bilanciatore del carico di rete passthrough esterno basato su servizi di backend
Lo svuotamento delle connessioni è disponibile anche per i servizi di backend che fanno parte dei deployment di Traffic Director.
Quando è impostato un timeout per lo svuotamento della connessione e un'istanza viene rimossa dal gruppo di istanze o un endpoint viene rimosso da un NEG a livello di zona, i bilanciatori del carico di Google Cloud e Traffic Director si comportano nel seguente modo:
Nessuna nuova connessione viene inviata all'istanza o all'endpoint rimosso.
Le sessioni attive che supportano le connessioni esistenti all'istanza o all'endpoint rimossi possono rimanere finché non è trascorso il timeout per svuotamento della connessione configurato. Al termine del periodo di timeout, Google Cloud termina le connessioni esistenti sull'istanza o sull'endpoint rimosso.
Se non imposti un timeout per lo svuotamento della connessione o se il timeout per lo svuotamento della connessione è impostato su zero (0), Google Cloud termina le connessioni esistenti sull'istanza o sull'endpoint rimossi il più rapidamente possibile.
Se utilizzi il pool di connessioni, potresti notare che le nuove richieste, che utilizzano una connessione TCP stabilita in precedenza, vengono ancora ricevute sulle VM in fase di svuotamento, causando errori di connessione quando le VM vengono alla fine eliminate.
Per abilitare lo svuotamento della connessione, completa i seguenti passaggi.
Console
Aggiorna un bilanciatore del carico
- Vai alla pagina Bilanciamento del carico nella console Google Cloud.
Vai a Bilanciamento del carico - Fai clic su Modifica per il bilanciatore del carico o crea un nuovo bilanciatore del carico.
- Fai clic su Configurazione backend.
- Fai clic su Configurazioni avanzate nella parte inferiore del servizio di backend.
- Nel campo Timeout per svuotamento della connessione, inserisci un valore compreso tra
0
e3600
. L'impostazione0
disattiva lo svuotamento della connessione.
Aggiorna Traffic Director
- Vai alla pagina Traffic Director nella console Google Cloud.
Vai a Traffic Director - Fai clic sul nome del servizio.
- Fai clic su Configurazioni avanzate nella parte inferiore del servizio.
- Nel campo Timeout per svuotamento della connessione, inserisci un valore compreso tra
0
e3600
. L'impostazione0
disattiva lo svuotamento della connessione. - Fai clic su Salva.
gcloud
Abilita lo svuotamento della connessione su un servizio di backend nuovo o esistente utilizzando il flag --connection-draining-timeout
. I seguenti esempi mostrano come modificare il timeout per lo svuotamento della connessione:
Per un bilanciatore del carico globale o tra regioni esistente:
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --connection-draining-timeout=CONNECTION_TIMEOUT_SECS
Per un bilanciatore del carico a livello di regione esistente:
gcloud compute backend-services update BACKEND_SERVICE \ --region=REGION \ --connection-draining-timeout=CONNECTION_TIMEOUT_SECS
Sostituisci i segnaposto con valori validi:
- BACKEND_SERVICE: il servizio di backend che stai aggiornando.
- REGION: se applicabile, l'area geografica del servizio di backend che stai aggiornando
CONNECTION_TIMEOUT_SECS: numero di secondi da attendere prima che le connessioni esistenti alle istanze o agli endpoint vengano terminate, compreso tra
0
e3600
secondi. L'impostazione0
disattiva lo svuotamento della connessione. Il timeout per lo svuotamento della connessione si applica a tutti i backend del servizio di backend.Puoi anche usare il comando
gcloud compute backend-services edit
per aggiornare un servizio di backend esistente.
API
Per abilitare lo svuotamento della connessione nell'API durante la creazione o l'aggiornamento di un'istanza o di un endpoint, effettua una richiesta al rispettivo URI API per includere il campo connectionDraining
nel corpo della richiesta. I seguenti esempi mostrano come impostare quell'attributo modificando un servizio di backend esistente. Per informazioni sugli altri attributi obbligatori, consulta la documentazione relativa a ciascun bilanciatore del carico.
Per un bilanciatore del carico globale o tra regioni esistente:
PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
Per un bilanciatore del carico a livello di regione esistente:
PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/region/REGION/backendServices
{
"name": "BACKEND_SERVICE",
"connectionDraining": {
"drainingTimeoutSec": CONNECTION_TIMEOUT_SECS
}
}
dove:
PROJECT_ID
è l'ID progetto che contiene il deployment del bilanciatore del carico o di Traffic Director.BACKEND_SERVICE
è il servizio di backend utilizzato dal bilanciatore del carico o dal deployment di Traffic Director.CONNECTION_TIMEOUT_SECS
è il numero di secondi da attendere prima che le istanze o gli endpoint vengano rimossi dal gruppo di istanze o dal NEG, compreso tra 0 e 3600 secondi inclusi. Questa durata del timeout si applica a tutti i gruppi di istanze o ai NEG a cui il servizio di backend fa riferimento.
Passaggi successivi
Per informazioni generali sui servizi di backend, consulta Panoramica dei servizi di backend.