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:
A diminuição da conexão começa sempre que você faz o seguinte:
- Você remove uma VM do grupo de instâncias manualmente.
- Você remove uma instância de um grupo de instâncias gerenciadas realizando uma
chamada
resize()
,deleteInstances()
,recreateInstances()
ouabandonInstances()
. - Você remove uma NIC dinâmica de uma VM que faz parte de um back-end de grupo de instâncias.
- Você remove um grupo de instâncias ou NEG de um serviço de back-end. Isso não é compatível com balanceadores de carga de rede de passagem interna e externa.
- Trusted Cloud exclui uma instância como parte do escalonamento automático.
- Para executar uma atualização no grupo de instâncias gerenciadas usando o Atualizador de grupos de instâncias gerenciadas.
- Você remove manualmente um endpoint de um NEG zonal.
A diminuição da conexão não se aplica quando você desconecta um back-end (grupo de instâncias ou NEG zonal) do serviço de back-end de um balanceador de carga.
Como funciona o encerramento de conexões
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.
Pode levar até 60 segundos após decorrer o tempo limite especificado para a instância ser encerrada.
Confira 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:
- Balanceador de carga de aplicativo externo
- Balanceador de carga de aplicativo interno
- Balanceador de carga de rede de proxy externo
- Balanceador de carga de rede de proxy interno
- Balanceador de carga de rede de passagem interna
- Balanceador de carga de rede de passagem externa baseado em serviço de back-end
Os balanceadores de carga de rede de passagem interna e externa são compatíveis com a diminuição da conexão para TCP, UDP e outros protocolos nã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 doTrusted Cloud e o Cloud Service Mesh se comportam da seguinte maneira:
Nenhuma nova conexão é enviada para a instância ou o endpoint removido.
Balanceadores de carga de aplicativo: para a duração especificada do tempo limite, as solicitações atuais da VM ou do endpoint marcados para remoção têm tempo para serem concluídas. O balanceador de carga não envia novas conexões para essa VM ou endpoint. Depois que a duração do tempo limite for atingida, o balanceador de carga vai parar de enviar todo o tráfego para a VM ou o endpoint removido.
Balanceadores de carga de rede de proxy: durante o período especificado do tempo limite, as conexões TCP atuais com a VM ou o endpoint marcado para remoção continuam funcionando durante o período configurado de esgotamento de conexão. O balanceador de carga não envia novas conexões para essa VM ou endpoint. Depois que a duração do tempo limite é atingida, as conexões TCP atuais com a VM ou o endpoint removido permanecem ativas, e o proxy fecha todas as conexões TCP em até 10 minutos, o tempo limite de inatividade padrão.
Balanceadores de carga de rede de transferência: durante o período especificado do tempo limite de diminuição da conexão, os pacotes pertencentes às conexões atuais são encaminhados para a VM ou o endpoint marcado para remoção. Depois que a duração do tempo limite for atingida, a entrada conntrack da VM ou do endpoint removido será excluída. Qualquer pacote não SYN de uma conexão existente leva à criação de uma nova entrada conntrack para o back-end íntegro. Quando o pacote vai para um novo back-end íntegro, ele envia um RST ao cliente porque não tem nenhum registro do pacote que acabou de receber. Os balanceadores de carga de rede de passagem interna e externa não enviam um TCP-RST ou TCP-FIN para encerrar as conexões atuais após o tempo limite de diminuição da conexão expirar.
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 200 segundos. Trusted Cloud usa 200 segundos como o tempo limite de diminuição de conexão efetivo antes de encerrá-los. 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.
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 Trusted Cloud encerrará as conexões atuais na instância ou no endpoint removido o mais rápido possível.
Se você estiver usando pool de conexões, poderá ver 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.
Ativar a diminuição da conexão
Para ativar a diminuição da conexão, siga estas etapas.
Console
Atualizar um balanceador de carga
- Acesse a página "Balanceamento de carga" no console Trusted Cloud .
Acessar balanceamento de carga - Na guia Balanceadores de carga, clique em more_vert e em Editar para o balanceador de carga que você quer atualizar.
- Clique em Configuração de back-end.
- No painel Configuração de back-end, clique em .
- Na parte de baixo do painel Editar serviço de back-end, clique em Configurações avançadas.
- No campo Tempo limite de diminuição da conexão, insira um valor de
0
a3600
. A configuração0
desativa a diminuição da conexão.
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á atualizandoCONNECTION_TIMEOUT_SECS
: o número de segundos de espera antes que as conexões atuais de instâncias ou endpoints sejam encerradas, entre0
e3600
segundos, inclusive. A configuração0
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 regional existente:
PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/region/REGION/backendServices { "name": "BACKEND_SERVICE", "connectionDraining": { "drainingTimeoutSec": CONNECTION_TIMEOUT_SECS } }
Substitua:
PROJECT_ID
: o ID do projeto que contém a implantação do balanceador de carga ou do Cloud Service MeshBACKEND_SERVICE
: o serviço de back-end usado pelo balanceador de carga ou pela implantação do Cloud Service Mesh.CONNECTION_TIMEOUT_SECS
: o número de segundos que serão aguardados antes de as instâncias ou os endpoints serem removidos do grupo de instâncias ou NEG, entre 0 e 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.