Habilita el vaciado de conexiones

El vaciado de conexiones es un proceso que garantiza que las solicitudes existentes en curso tengan tiempo para completarse cuando se quita una VM de un grupo de instancias o cuando se quita un extremo de un NEG zonal.

Si deseas habilitar el vaciado de conexiones, debes establecer un tiempo de espera de vaciado de conexiones en el servicio de backend. La duración del tiempo de espera debe ser entre 0 y 3,600 segundos.

Durante la duración especificada del tiempo de espera, las solicitudes existentes de la VM que se quitó tienen tiempo para completarse. El balanceador de cargas no envía solicitudes nuevas a la VM que se quitó. Una vez que transcurre el tiempo de espera, se cierran todas las conexiones restantes a la VM.

El vaciado de conexiones se inicia en los siguientes casos:

Pueden pasar hasta 60 segundos a partir de que transcurrió el tiempo de espera especificado para que se cierre la instancia.

Si habilitas el vaciado de conexiones en varios servicios de backend que comparten los mismos grupos de instancias o NEG, se usará el valor mayor de tiempo de espera. Por ejemplo, supongamos que el mismo grupo de instancias o NEG zonal es un backend para dos servicios de backend, y que un servicio de backend tiene un tiempo de espera de vaciado de conexiones de 100 segundos, mientras que el otro tiene un tiempo de espera de vaciado de conexiones de 200 segundos. Google Cloud usa 200 segundos como el tiempo de espera de vaciado de conexiones en la práctica para que las conexiones existentes puedan existir durante 200 segundos antes de que Google Cloud las interrumpa. Si el backend es un grupo de instancias administrado, las operaciones que borran la instancia se retrasan al menos 200 segundos.

Especificaciones

  • El vaciado de conexiones está disponible para los servicios de backend que forman parte de los siguientes balanceadores de cargas:

  • Cuando se establece un tiempo de espera para el vaciado de conexiones y se quita una instancia del grupo de instancias o un extremo de un NEG zonal, los balanceadores de cargas de Google Cloud se comportan de la siguiente manera:

    • No se envían conexiones nuevas a la instancia o al extremo que se quitó.

    • Las sesiones TCP activas que admiten conexiones existentes a la instancia o al extremo que se quitó pueden persistir hasta que haya transcurrido el tiempo de espera de vaciado de conexiones configuradas. Una vez que finaliza el tiempo de espera, Google Cloud finaliza las conexiones existentes en la instancia o el extremo que se quitaron.

  • Si no estableces un tiempo de espera para el vaciado de conexiones o si el tiempo de espera para el vaciado de conexiones se establece en cero (0), Google Cloud finaliza las conexiones existentes en la instancia o el extremo que se quitó lo antes posible.

Habilita el vaciado de conexiones

Console

  1. Ve a la página Balanceo de cargas en Google Cloud Console.
    Ir a la página Balanceo de cargas
  2. Haz clic en Editar  para tu balanceador de cargas o crea uno nuevo.
  3. Haz clic en Configuración de backend.
  4. Haz clic en Configuración avanzada en la parte inferior de tu servicio de backend.
  5. En el campo Tiempo de espera para el vaciado de conexiones, ingresa un valor entre 03600. Si ingresas 0, se inhabilita el vaciado de conexiones.

gcloud

Habilita el vaciado de conexiones en un servicio de backend nuevo o existente mediante la marca --connection-draining-timeout. En los siguientes ejemplos, se muestra cómo cambiar el tiempo de espera de vaciado de conexiones:

  • Para un balanceador de cargas de HTTP(S) externo, un balanceador de cargas del proxy SSL o un balanceador de cargas del proxy TCP existente, usa lo siguiente:

    gcloud compute backend-services update BACKEND_SERVICE \
        --global \
        --connection-draining-timeout=CONNECTION_TIMEOUT_SECS
    
  • Para un balanceador de cargas de TCP/UDP interno existente o un balanceador de cargas de HTTP(S) interno, usa lo siguiente:

    gcloud compute backend-services update BACKEND_SERVICE \
        --region=REGION \
        --connection-draining-timeout=CONNECTION_TIMEOUT_SECS
    

Reemplaza los marcadores de posición por valores válidos:

  • BACKEND_SERVICE: Es el servicio de backend del balanceador de cargas.
  • CONNECTION_TIMEOUT_SECS: Es la cantidad de segundos que se espera antes de interrumpir las conexiones existentes a instancias o extremos. El valor puede ser entre 03600 segundos, inclusive. Si ingresas 0, se inhabilita el vaciado de conexiones. El tiempo de espera de vaciado de conexiones se aplica a todos los backends del servicio de backend.

    También puedes usar el comando gcloud compute backend-services edit para actualizar un servicio de backend existente.

API

Para habilitar el vaciado de conexiones en la API cuando creas o actualizas una instancia o un extremo, realiza una solicitud al URI de la API correspondiente y, luego, incluye el campo connectionDraining en el cuerpo de tu solicitud. En los siguientes ejemplos, se muestra cómo configurar ese atributo mediante la edición de un servicio de backend existente. Para obtener información sobre otros atributos obligatorios, consulta la documentación de cada balanceador de cargas.

Para balanceadores de cargas de HTTP(S), balanceadores de cargas del proxy SSL y balanceadores de cargas del proxy TCP, usa lo siguiente:

PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices

Para balanceadores de cargas de TCP/UDP internos y balanceadores de cargas de HTTP(S) internos, usa lo siguiente:

PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/region/REGION/backendServices

{
   "name": "BACKEND_SERVICE",
   "connectionDraining": {
     "drainingTimeoutSec": CONNECTION_TIMEOUT_SECS
   }
}

En el ejemplo anterior, se ilustra lo siguiente:

  • PROJECT_ID: Es el ID del proyecto que contiene tu balanceador de cargas.
  • BACKEND_SERVICE: Es el servicio de backend que usa tu balanceador de cargas.
  • CONNECTION_TIMEOUT_SECS: Es la cantidad de segundos que se espera antes de que se quiten las instancias o los extremos del grupo de instancias o NEG. El valor puede ser entre 0 y 3,600 segundos, inclusive. Esta duración de tiempo de espera se aplica a todos los grupos de instancias o NEG que forman parte del servicio de backend.

Próximos pasos

Para obtener información general sobre los servicios de backend, consulta Descripción general de los servicios de backend.