Ativar a diminuição da conexão

A diminuição da conexão é um processo que garante que as solicitações atuais em andamento tenham tempo para serem concluídas quando uma instância de máquina virtual (VM) é removida de um grupo de instâncias ou quando um endpoint é removido de grupos de endpoints de rede (NEGs) que são zonais no escopo.

As informações nesta página se aplicam somente a grupos de instâncias e aos seguintes tipos de NEGs zonais no escopo:

Para ativar a diminuição da conexão, defina um tempo limite de diminuição da conexão no serviço de back-end. A duração do tempo limite precisa ser de 0 a 3.600 segundos inclusive.

Para a duração especificada do tempo limite, as solicitações atuais da VM removida ou endpoint precisam de tempo para serem concluídas. O balanceador de carga não envia novas conexões para a VM ou o endpoint removido. Depois que o tempo limite é atingido, o balanceador de carga para de enviar todo o tráfego para a VM ou o endpoint removido.

A diminuição da conexão começa sempre que você faz o seguinte:

Pode levar até 60 segundos após decorrer o tempo limite especificado para a instância ser encerrada.

Quando você ativa a diminuição de conexão em vários serviços de back-end que compartilham os mesmos grupos de instâncias ou NEGs, o maior tempo limite é usado. Por exemplo, suponha que o mesmo grupo de instâncias ou NEG zonal seja um back-end para dois serviços de back-end, em que um serviço de back-end tem um tempo limite de diminuição de conexão de 100 segundos e o outro tem um tempo limite de diminuição de 200 segundos. O Google Cloud usa 200 segundos como tempo limite de diminuição da conexão efetiva para que as conexões existentes possam existir por 200 segundos antes de serem encerradas pelo Google Cloud. Se o back-end for um grupo de instâncias gerenciadas, as operações que excluírem a instância terão um atraso de pelo menos 200 segundos.

Veja a seguir uma lista de especificações sobre a diminuição da conexão:

  • A diminuição da conexão está disponível para serviços de back-end que fazem parte dos seguintes balanceadores de carga:

    Os balanceadores de carga de rede de passagem interna e externa oferecem suporte ao esgotamento de conexão para TCP, UDP (pré-lançamento) e outros protocolos que não são TCP.

  • A diminuição da conexão também está disponível para serviços de back-end que fazem parte das implantações do Cloud Service Mesh.

  • Quando um tempo limite de diminuição da conexão é definido e uma instância é removida do grupo de instâncias ou um endpoint é removido de um NEG zonal, os balanceadores de carga do Google Cloud e o Cloud Service Mesh se comportam da seguinte maneira:

    • Nenhuma nova conexão é enviada para a instância ou o endpoint removido.

    • As sessões TCP ativas compatíveis com conexões existentes com a instância ou endpoint removido podem persistir até que o tempo limite de diminuição da conexão tenha acabado. Depois que o período de tempo limite terminar, o Google Cloud encerrará as conexões atuais na instância ou no endpoint removidos.

  • Se você não definir um tempo limite de diminuição da conexão ou se o tempo limite de diminuição da conexão estiver definido como zero (0), o Google Cloud encerrará as conexões atuais na instância ou no endpoint o mais rápido possível.

  • Se você estiver usando o pool de conexões, poderá notar que novas solicitações, usando uma conexão estabelecida anteriormente, ainda estão sendo recebidas em VMs que estão sendo consumidas, causando erros de conexão quando elas forem excluídas.

Para ativar a diminuição da conexão, siga estas etapas.

Console

Atualizar um balanceador de carga

  1. Acesse a página Balanceamento de carga no Console do Google Cloud.
    Acesse balanceamento de carga
  2. Clique em Editar no balanceador de carga ou crie um novo.
  3. Clique em Configuração de back-end.
  4. Clique em Configurações avançadas, no final do seu serviço de back-end.
  5. No campo Tempo limite de diminuição da conexão, insira um valor de 0 a 3600. A configuração 0 desativa a diminuição da conexão.

Atualizar Cloud Service Mesh

  1. Acesse a página do Cloud Service Mesh no console do Google Cloud.
    Acesse o Cloud Service Mesh
  2. Clique no Nome do serviço.
  3. Clique em Configurações avançadas, no final do seu serviço.
  4. No campo Tempo limite de diminuição da conexão, insira um valor de 0 a 3600. A configuração 0 desativa a diminuição da conexão.
  5. Clique em Salvar.

gcloud

Ative a diminuição da conexão em um serviço de back-end novo ou existente usando a sinalização --connection-draining-timeout. Os exemplos a seguir demonstram como alterar o tempo limite de diminuição da conexão:

  • Para um balanceador de carga regional existente:

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

Substitua os marcadores por valores válidos:

  • BACKEND_SERVICE: o serviço de back-end que você está atualizando.
  • REGION: se aplicável, a região do serviço de back-end que você está atualizando
  • CONNECTION_TIMEOUT_SECS: o número de segundos de espera antes que as conexões atuais de instâncias ou endpoints sejam encerradas, entre 0 e 3600 segundos, inclusive. A configuração 0 desativa a diminuição da conexão. O tempo limite de diminuição da conexão se aplica a todos os back-ends do serviço de back-end.

    Também é possível usar o comando gcloud compute backend-services edit para atualizar um serviço de back-end existente.

API

Para ativar a diminuição da conexão na API ao criar ou atualizar uma instância ou endpoint, faça uma solicitação ao respectivo URI da API para incluir o campo connectionDraining no corpo da solicitação. Os exemplos a seguir demonstram como definir esse atributo editando um serviço de back-end existente. Para informações sobre outros atributos obrigatórios, consulte a documentação de cada balanceador de carga.

  • Para um balanceador de carga global ou entre regiões atual:

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

  • Para um balanceador de carga regional existente:

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

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

    em que:

    • PROJECT_ID é o ID do projeto que contém a implantação do balanceador de carga ou do Cloud Service Mesh.
    • BACKEND_SERVICE é o serviço de back-end usado pelo balanceador de carga ou pela implantação do Cloud Service Mesh.
    • CONNECTION_TIMEOUT_SECS é o tempo em segundos que será aguardado antes de as instâncias ou os endpoints serem removidos do grupo de instâncias ou NEG, entre 0 a 3.600 segundos, inclusive. Esse tempo limite se aplica a todos os grupos de instâncias ou NEGs referenciados pelo serviço de back-end.

A seguir

Para informações gerais sobre serviços de back-end, consulte Visão geral dos serviços de back-end.