Attivare lo svuotamento della connessione

Lo svuotamento delle connessioni è un processo che garantisce che le richieste esistenti in corso abbiano il tempo di essere completate quando un'istanza di macchina virtuale (VM) viene rimossa da un gruppo di istanze o quando un endpoint viene rimosso da gruppi di endpoint di rete (NEG) di ambito zonale.

Le informazioni riportate in questa pagina si applicano solo ai gruppi di istanze e ai seguenti tipi di NEG a livello di zona:

Per attivare svuotamento della connessione, imposta un timeout per lo svuotamento delle connessioni 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 rimossi viene concesso il tempo per il completamento. Il bilanciatore del carico non invia nuove connessioni alla VM o all'endpoint rimossi. Una volta raggiunta la durata del timeout, il bilanciatore del carico interrompe l'invio di tutto il traffico alla VM o all'endpoint rimosso.

Lo svuotamento della connessione inizia quando esegui le seguenti operazioni:

Potrebbero essere necessari fino a 60 secondi dopo il superamento della durata del timeout specificata per l'interruzione dell'istanza.

Se attivi svuotamento della connessione su più servizi di backend che condividono gli stessi gruppi di istanze o NEG, viene utilizzato il valore di timeout più elevato. Ad esempio, supponiamo che lo stesso gruppo di istanze o NEG zonale sia un backend per due servizi di backend, in cui un servizio di backend ha un timeout di svuotamento della connessione di 100 secondi e l'altro servizio di backend ha un timeout di svuotamento della connessione di 200 secondi. Google Cloud utilizza 200 secondi come timeout per lo svuotamento delle connessioni effettive, in modo che le connessioni esistenti possano esistere per 200 secondi prima che Google Cloud le interrompa. Se il backend è un gruppo di istanze gestite, le operazioni di eliminazione dell'istanza vengono ritardate di almeno 200 secondi.

Di seguito è riportato un elenco di specifiche relative svuotamento della connessione:

  • Lo svuotamento della connessione è disponibile per i servizi di backend che fanno parte dei seguenti bilanciatori del carico:

    Sia i bilanciatori del carico di rete passthrough interni che quelli esterni supportano lo svuotamento della connessione per TCP, UDP (anteprima) e altri protocolli non TCP.

  • Lo scarico delle connessioni è disponibile anche per i servizi di backend che fanno parte dei deployment di Cloud Service Mesh.

  • 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 zonale, i bilanciatori del carico di Google Cloud e Cloud Service Mesh si comportano nel seguente modo:

    • Non vengono inviate nuove connessioni all'istanza o all'endpoint rimosso.

    • Le sessioni attive che supportano le connessioni esistenti all'istanza o all'endpoint rimossi possono persistere fino al timeout 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 rimosso il più rapidamente possibile.

  • Se utilizzi il pooling delle connessioni, potresti notare che le nuove richieste, che utilizzano una connessione stabilita in precedenza, vengono ancora ricevute sulle VM che vengono svuotate, causando errori di connessione quando queste VM vengono eliminate.

Per attivare lo svuotamento della connessione, completa i seguenti passaggi.

Console

Aggiorna un bilanciatore del carico

  1. Vai alla pagina Bilanciamento del carico nella console Google Cloud.
    Vai a Bilanciamento del carico
  2. Fai clic su Modifica per il bilanciatore del carico o crea un nuovo bilanciatore del carico.
  3. Fai clic su Configurazione backend.
  4. Fai clic su Configurazioni avanzate nella parte inferiore del servizio di backend.
  5. Nel campo Timeout per svuotamento connessioni, inserisci un valore compreso tra 0 e 3600. Un'impostazione di 0 disattiva lo svuotamento della connessione.

Aggiorna Cloud Service Mesh

  1. Vai alla pagina Cloud Service Mesh nella console Google Cloud.
    Vai a Cloud Service Mesh
  2. Fai clic sul nome del servizio.
  3. Fai clic su Configurazioni avanzate nella parte inferiore del servizio.
  4. Nel campo Timeout per svuotamento connessioni, inserisci un valore compreso tra 0 e 3600. Un'impostazione di 0 disattiva lo svuotamento della connessione.
  5. Fai clic su Salva.

gcloud

Attiva lo svuotamento della connessione su un servizio di backend nuovo o esistente utilizzando il flag --connection-draining-timeout. Gli esempi riportati di seguito mostrano come modificare il timeout di svuotamento della connessione:

  • Per un bilanciatore del 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 da attendere prima di terminare le connessioni esistenti a istanze o endpoint, compreso tra 0 e 3600 secondi. Un'impostazione di 0 disattiva lo svuotamento della connessione. Il timeout per lo svuotamento della connessione si applica a tutti i backend del servizio di backend.

    Puoi anche utilizzare il comando gcloud compute backend-services edit per aggiornare un servizio di backend esistente.

API

Per attivare svuotamento della connessione nell'API durante la creazione o l'aggiornamento di un'istanza o un endpoint, effettua una richiesta al rispettivo URI dell'API in modo da includere il campo connectionDraining nel corpo della richiesta. Gli esempi riportati di seguito mostrano come impostare questo attributo modificando un servizio di backend esistente. Per informazioni sugli altri attributi obbligatori, consulta la documentazione di 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 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 il tuo bilanciatore del carico o il tuo deployment di Cloud Service Mesh.
    • BACKEND_SERVICE è il servizio di backend utilizzato dal bilanciatore del carico o dal deployment di Cloud Service Mesh.
    • 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. Questa durata del timeout si applica a tutti i gruppi di istanze o NEG a cui viene fatto riferimento dal servizio di backend.

Passaggi successivi

Per informazioni generali sui servizi di backend, consulta la Panoramica dei servizi di backend.