Lo svuotamento della connessione è un processo che garantisce che i dati in corso Il completamento delle richieste viene concesso quando una VM viene rimossa da un gruppo di istanze o quando un endpoint viene rimosso dai gruppi di endpoint di rete (NEG) che sono a livello di zona.
Le informazioni in questa pagina si applicano solo ai gruppi di istanze e seguenti tipi di NEG a livello di zona:
Per attivare lo svuotamento della connessione, imposta un timeout per lo svuotamento della connessione nella di servizio di backend. La durata del timeout deve essere compresa tra 0 e 3600 secondi inclusi.
Per la durata specificata del timeout, le richieste esistenti alla VM rimossa o endpoint hanno il tempo di completarle. Il bilanciatore del carico non invia un nuovo protocollo TCP alla VM rimossa. Una volta raggiunta la durata del timeout, le connessioni TCP rimanenti alla VM vengono chiuse.
Lo svuotamento della connessione inizia ogni volta che esegui queste operazioni:
- Devi rimuovere manualmente una VM da un'istanza .
- Per rimuovere un'istanza da un gruppo di istanze gestite, esegui una
resize()
,deleteInstances()
,recreateInstances()
, oabandonInstances()
chiamata. - Un gruppo di istanze viene rimosso da un backend Google Cloud. Questo non è supportato per i bilanciatori del carico di rete passthrough interni.
- Google Cloud elimina un'istanza come parte di scalabilità automatica.
- Esegui un aggiornamento del gruppo di istanze gestite utilizzando Autore aggiornamento gruppi di istanze gestite.
- Devi rimuovere manualmente un endpoint da un account NEG.
Possono essere necessari fino a 60 secondi una volta trascorsa la durata del timeout specificata per la terminazione dell'istanza.
Se abiliti lo svuotamento della connessione su più servizi di backend che condividono degli stessi gruppi di istanze o NEG, viene utilizzato il valore di timeout più grande. Per Supponiamo, ad esempio, che lo stesso gruppo di istanze o NEG a livello di zona sia un backend per di backend, dove uno di servizio di backend ha un timeout per svuotamento della connessione di per 100 secondi e l'altro servizio di backend ha un timeout per svuotamento della connessione 200 secondi. Google Cloud utilizza 200 secondi come connessione effettiva timeout per svuotamento in modo che le connessioni esistenti possano esistere per 200 secondi prima che Google Cloud li termini. Se il backend è un servizio gestito gruppo di istanze, le operazioni che eliminano l'istanza sono 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 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 della connessione è disponibile anche per i servizi di backend che fanno parte di Deployment di Cloud Service Mesh.
Quando viene impostato un timeout per lo svuotamento della connessione e un'istanza viene rimossa un gruppo di istanze o un endpoint viene rimosso da un NEG a livello di zona, I bilanciatori del carico Google Cloud e Cloud Service Mesh si comportano nel seguente modo:
Nessuna nuova connessione viene inviata all'istanza o all'endpoint rimosso.
Sessioni attive con supporto delle connessioni esistenti all'istanza rimossa o l'endpoint può rimanere invariato finché il timeout per lo svuotamento della connessione configurato non trascorso il periodo in esame. Al termine del periodo di timeout, Google Cloud termina connessioni sull'istanza o sull'endpoint rimosso.
Se non imposti un timeout per lo svuotamento della connessione o se lo svuotamento della connessione il timeout è impostato su zero (0), Google Cloud termina le connessioni esistenti il più rapidamente possibile l'istanza o l'endpoint rimosso.
Se utilizzi il pool di connessioni, potresti notare che le nuove richieste, utilizzando connessione TCP stabilita in precedenza, vengono ancora ricevuti sulle VM vengono svuotati, causando errori di connessione quando queste VM vengono eliminati.
Per attivare 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 carico con il bilanciatore del carico di rete passthrough esterno regionale.
- Fai clic su Configurazione backend.
- Fai clic su Configurazioni avanzate nella parte inferiore del backend. completamente gestito di Google Cloud.
- Nel campo Timeout per svuotamento della connessione, inserisci un valore da
0
-3600
. L'impostazione0
disattiva lo svuotamento della connessione.
Aggiorna Cloud Service Mesh
- Vai alla pagina Cloud Service Mesh nella console Google Cloud.
Vai a Cloud Service Mesh - Fai clic sul nome del servizio.
- Fai clic su Configurazioni avanzate nella parte inferiore dello completamente gestito di Google Cloud.
- Nel campo Timeout per svuotamento della connessione, inserisci un valore da
0
-3600
. 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 dimostrano
come modificare il timeout per lo svuotamento della connessione:
Per un carico globale o tra regioni esistente :
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --connection-draining-timeout=CONNECTION_TIMEOUT_SECS
Per un carico regionale 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, la regione del servizio di backend che stai aggiornando
CONNECTION_TIMEOUT_SECS: il numero di secondi di attesa prima le connessioni esistenti a istanze o endpoint vengono terminate tra il giorno
0
e il giorno3600
secondi, inclusi. L'impostazione0
disattiva lo svuotamento della connessione. Il timeout per lo svuotamento della connessione si applica a tutti i backend del backend completamente gestito di Google Cloud.Puoi anche utilizzare 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 endpoint, effettua una richiesta al rispettivo URI dell'API per includere
il campo connectionDraining
nel corpo della richiesta. I seguenti esempi
dimostrare come impostare quell'attributo modificando un backend esistente
completamente gestito di Google Cloud. Per informazioni sugli altri requisiti
consulta la documentazione di ciascun bilanciatore del carico.
Per un carico globale o tra regioni esistente :
PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
Per un carico regionale 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 del bilanciatore del carico o del deployment di Cloud Service Mesh.BACKEND_SERVICE
è il servizio di backend utilizzata dal bilanciatore del carico o dal deployment Cloud Service Mesh.CONNECTION_TIMEOUT_SECS
è il numero di secondi di attesa prima che le istanze o gli endpoint vengano rimossi gruppo di istanze o NEG, compreso tra 0 e 3600 secondi (inclusi). Questo il timeout si applica a tutti i gruppi di istanze o NEG a cui fa riferimento il servizio di backend.
Passaggi successivi
Per informazioni generali sui servizi di backend, consulta Backend Panoramica dei servizi.