Ative a drenagem de ligações

A drenagem de ligações é um processo que garante que os pedidos existentes em curso têm tempo para serem concluídos quando uma instância de máquina virtual (VM) é removida de um grupo de instâncias ou quando um ponto final é removido de grupos de pontos finais de rede (NEGs) que estão no âmbito zonal.

As informações nesta página aplicam-se apenas a grupos de instâncias e aos seguintes tipos de NEGs que são zonais no âmbito:

A drenagem da ligação começa sempre que faz o seguinte:

A drenagem de ligações não se aplica quando desliga um back-end (grupo de instâncias ou NEG zonal) do serviço de back-end de um balanceador de carga.

Como funciona a drenagem da ligação

Para ativar a drenagem da ligação, define um tempo limite de drenagem da ligação no serviço de back-end. A duração do limite de tempo tem de estar compreendida entre 0 e 3600 segundos, inclusive.

A instância pode demorar até 60 segundos a ser terminada após a duração do limite de tempo especificada.

Segue-se uma lista de especificações sobre a drenagem de ligações:

  • A drenagem de ligações está disponível para serviços de back-end que fazem parte dos seguintes balanceadores de carga:

    Os balanceadores de carga de rede de encaminhamento interno e os balanceadores de carga de rede de encaminhamento externo suportam a drenagem de ligações para TCP, UDP e outros protocolos não TCP.

  • A drenagem de ligações também está disponível para serviços de back-end que fazem parte das implementações da malha de serviços na nuvem.

  • Quando é definido um limite de tempo de esgotamento de ligações e uma instância é removida do grupo de instâncias ou um ponto final é removido de um NEG zonal, os balanceadores de carga e a malha de serviços na nuvem comportam-se da seguinte forma:Trusted Cloud

    • Não são enviadas novas associações para a instância ou o ponto final removido.

    • Equilibradores de carga de aplicações: durante o período especificado do limite de tempo, os pedidos existentes à VM ou ao ponto final marcado para remoção têm tempo para serem concluídos. O balanceador de carga não envia novas ligações a esta VM ou a este ponto final. Quando a duração do limite de tempo é atingida, o equilibrador de carga deixa de enviar todo o tráfego para a VM ou o ponto final removido.

    • Balanceadores de carga de rede de proxy: durante a duração especificada do limite de tempo, as ligações TCP existentes à VM ou ao ponto final marcado para remoção continuam a funcionar durante o período de esgotamento de ligações configurado. O equilibrador de carga não envia novas ligações a esta VM nem a este ponto final. Quando a duração do limite de tempo é atingida, as ligações TCP existentes à VM ou ao ponto final removido permanecem ativas, e o proxy fecha todas as ligações TCP existentes no prazo de 10 minutos, que é o limite de tempo de inatividade predefinido.

    • Balanceadores de carga de rede de passagem: durante a duração especificada do limite de tempo de esgotamento da ligação, os pacotes pertencentes a ligações existentes são encaminhados para a VM ou o ponto final marcado para remoção. Quando a duração do limite de tempo é atingida, a entrada de conntrack para a VM ou o ponto final removido é removida. Qualquer pacote não SYN de uma ligação existente leva à criação de uma nova entrada conntrack para o back-end em bom estado. Quando o pacote vai para um novo back-end em bom estado, o back-end envia um RST ao cliente, uma vez que não tem nenhum registo do pacote que acabou de receber. Os balanceadores de carga de rede de encaminhamento interno e externo não enviam um TCP-RST nem um TCP-FIN para terminar as ligações existentes após o tempo limite de esgotamento de ligações expirar.

  • Se ativar a drenagem de ligações em vários serviços de back-end que partilham os mesmos grupos de instâncias ou NEGs, é usado o maior valor de limite de tempo. Por exemplo, suponhamos que o mesmo grupo de instâncias ou NEG zonal é um back-end para dois serviços de back-end, em que um serviço de back-end tem um limite de tempo limite de esgotamento de ligações de 100 segundos e o outro serviço de back-end tem um limite de tempo limite de esgotamento de ligações de 200 segundos.O Google Cloud Load Balancing usa 200 segundos como o limite de tempo limite de esgotamento de ligações eficaz antes de as terminar. Trusted Cloud Se o back-end for um grupo de instâncias gerido, as operações que eliminam a instância são atrasadas, pelo menos, 200 segundos.

  • Se não definir um limite de tempo limite de esgotamento de ligações ou se o limite de tempo limite de esgotamento de ligações estiver definido como zero (0), Trusted Cloud termina as ligações existentes na instância ou no ponto final removido o mais rapidamente possível.

  • Se estiver a usar o agrupamento de ligações, pode ver que os novos pedidos, que usam uma ligação estabelecida anteriormente, continuam a ser recebidos em VMs que estão a ser esgotadas, o que causa erros de ligação quando essas VMs são eliminadas.

Ative a drenagem de ligações

Para ativar a drenagem de ligações, conclua os passos seguintes.

Consola

Atualize um balanceador de carga

  1. Aceda à página Balanceamento de carga na Trusted Cloud consola.
    Aceda a Balanceamento de carga
  2. No separador Equilibradores de carga, para o equilibrador de carga que quer atualizar, clique em more_vert e, de seguida, em Editar .
  3. Clique em Configuração de back-end.
  4. No painel Configuração de back-end, clique em .
  5. Na parte inferior do painel Editar serviço de back-end, clique em Configurações avançadas.
  6. No campo Limite de tempo de esgotamento da ligação, introduza um valor de 0 a 3600. Uma definição de 0 desativa a drenagem da ligação.

gcloud

Ative a drenagem de ligações num serviço de back-end novo ou existente através da flag --connection-draining-timeout. Os exemplos seguintes demonstram como alterar o limite de tempo da eliminação gradual de ligações:

  • 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 de posição por valores válidos:

  • BACKEND_SERVICE: o serviço de back-end que está a atualizar
  • REGION: se aplicável, a região do serviço de back-end que está a atualizar
  • CONNECTION_TIMEOUT_SECS: o número de segundos a aguardar antes de as ligações existentes a instâncias ou pontos finais serem terminadas, entre 0 e 3600 segundos, inclusive. Uma definição de 0 desativa a drenagem da ligação. O tempo limite de drenagem da ligação aplica-se a todos os back-ends do serviço de back-end.

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

API

Para ativar a drenagem de ligações na API ao criar ou atualizar uma instância ou um ponto final, faça um pedido ao URI da API respetivo para incluir o campo connectionDraining no corpo do pedido. Os exemplos seguintes demonstram como definir esse atributo editando um serviço de back-end existente. Para obter informações sobre outros atributos obrigatórios, consulte a documentação de cada equilibrador de carga.

  • 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
       }
    }
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto que contém o balanceador de carga ou a implementação do Cloud Service Mesh
    • BACKEND_SERVICE: o serviço de back-end usado pelo balanceador de carga ou pela implementação do Cloud Service Mesh
    • CONNECTION_TIMEOUT_SECS: o número de segundos a aguardar antes de as instâncias ou os pontos finais serem removidos do grupo de instâncias ou do NEG, entre 0 e 3600 segundos, inclusive. Esta duração do limite de tempo aplica-se a todos os grupos de instâncias ou NEGs referenciados pelo serviço de back-end.

O que se segue?

Para obter informações gerais sobre os serviços de back-end, consulte a vista geral dos serviços de back-end.