Como 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 VM é removida de um grupo de instâncias.

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 1 a 3.600 segundos.

Para a duração especificada do tempo limite, as solicitações atuais da VM removida precisam de tempo para serem concluídas. O balanceador de carga não envia novas solicitações para a VM removida. Depois que a duração do tempo limite for atingida, todas as conexões restantes com a VM serão fechadas.

A diminuição da conexão é ativada sempre que uma instância é removida ou excluída de um grupo. Especificamente, nos seguintes cenários:

Pode levar até 60 segundos do 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, o maior tempo limite é usado. Por exemplo, se o serviço de back-end A tem um tempo limite de conexão definido como 100 segundos, e o serviço de back-end B tem esse tempo definido como 200 segundos, o sistema aguarda 200 segundos antes de encerrar as instâncias no grupo compartilhado.

Restrições

Como ativar a diminuição da conexão

Console

  1. Acesse a página "Balanceamento de carga" no Console do Google Cloud.
    Acessar a página "Balanceamento de carga"
  2. Clique no botão Editar do seu balanceador de carga ou crie um novo balanceador.
  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 entre 0 e 3600. A configuração 0 desativa a diminuição da conexão.

gcloud

Ative a diminuição da conexão em um serviço de back-end novo ou atual usando a sinalização --connection-draining-timeout. Por exemplo, ao atualizar um serviço de back-end, utilize essa sinalização com sua solicitação:

gcloud compute backend-services update [BACKEND_SERVICE] \
        --connection-draining-timeout [CONNECTION_TIMEOUT_SECS]
    

em que:

  • [BACKEND_SERVICE] é o serviço de back-end dessa solicitação;
  • [CONNECTION_TIMEOUT_SECS] é o número de segundos de espera antes que as instâncias sejam encerradas, entre 0 e 3600 segundos, inclusive. A configuração 0 desativa a diminuição da conexão. Esse tempo limite se aplica a todos os grupos de instâncias que fazem parte do serviço de back-end.

Se você atualizar a instância usando o subcomando backend-services edit, adicione connectionDraining como parte do corpo do recurso:

# You can edit the resource below. Lines beginning with "#" are
    # ignored.
    #
    # If you introduce a syntactic error, you will be given the
    # opportunity to edit the file again. You can abort by closing this
    # file without saving it.
    #
    # At the bottom of this file, you will find an example resource.
    #
    # Only fields that can be modified are shown. The original resource
    # with all of its fields is reproduced in the comment section at the
    # bottom of this document.

    description: ''
    healthChecks:
    - https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/healthChecks/[HEALTH_CHECK]
    port: 80
    portName: [PORT_NAME]
    protocol: [PROTOCOL]
    timeoutSec: 30
    connectionDraining:
      drainingTimeoutSec: [CONNECTION_TIMEOUT_SEC]
    

API

Para ativar a diminuição da conexão na API ao criar ou atualizar uma instância, faça uma solicitação ao respectivo URI de API e inclua o campo connectionDraining no corpo da solicitação. Por exemplo, para criar um novo serviço de back-end, faça uma solicitação POST para o seguinte URI:

Para balanceamento de carga do proxy HTTP(S) ou SSL:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/backendServices
    

Para balanceamento de carga interno:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/region/[REGION]/backendServices

    {  "healthChecks": [
         "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/healthChecks/[HEALTH_CHECK_NAME]"
        ],
       "name": "[BACKEND_SERVICE]",
       "port": 80,
       "portName": "[PORT_NAME]",
       "protocol": "[PROTOCOL]",
       "timeoutSec": 30,
       "connectionDraining": {
         "drainingTimeoutSec": [CONNECTION_TIMEOUT_SECS]
       }
    }
    

em que:

  • [PROJECT_ID] é o ID do projeto da solicitação;
  • [BACKEND_SERVICE] é o serviço de back-end dessa solicitação;
  • [CONNECTION_TIMEOUT_SECS] é o tempo em segundos que será aguardado antes de as instâncias serem removidas do grupo de instâncias, entre 1 e 3.600 segundos, inclusive. Esse tempo limite se aplica a todos os grupos de instâncias que fazem parte do serviço de back-end.

A seguir

Para informações gerais sobre os serviços de back-end, consulte esta página.