Visão geral do balanceamento de carga TCP/UDP interno

O balanceamento de carga TCP/UDP interno do Google Cloud é um balanceador de carga regional criado na pilha de virtualização de rede Andromeda.

O balanceamento de carga TCP/UDP interno distribui o tráfego entre instâncias de máquina virtual (VM) interna na mesma região em uma rede de nuvem privada virtual (VPC). Com ela, é possível executar e escalonar serviços em um endereço IP interno que seja acessível apenas para sistemas na mesma rede VPC ou sistemas conectados à sua rede VPC.

Um serviço de balanceamento de carga TCP/UDP interno tem um front-end (a regra de encaminhamento) e um back-end (o serviço de back-end). Use grupos de instâncias ou NEGs zonais GCE_VM_IP como back-ends no serviço de back-end. Neste exemplo, mostramos os back-ends de grupos de instâncias.

Exemplo geral de balanceador de carga TCP/UDP interno de alto nível.
Exemplo geral de balanceador de carga TCP/UDP interno de alto nível (clique para ampliar)

Conheça as diferenças entre os balanceadores de carga do Google Cloud nos documentos a seguir:

Casos de uso

Use o balanceamento de carga TCP/UDP interno nas seguintes circunstâncias:

  • Você precisa de um balanceador de carga de alto desempenho de camada 4 para tráfego TCP ou UDP.
  • Se você estiver veiculando tráfego por meio de TLS (SSL), é aceitável fazer com que o tráfego SSL encerrado pelos back-ends em vez de no balanceador de carga. O balanceador de carga TCP/UDP interno não pode encerrar o tráfego SSL.

  • Você precisa encaminhar os pacotes originais sem proxy. Por exemplo, se você precisa que o endereço IP de origem do cliente seja preservado.

  • Você tem uma configuração atual que usa um balanceador de carga de passagem e quer migrá-lo sem alterações.

Os balanceadores de carga TCP/UDP internos lidam com muitos casos de uso. Nesta seção, veremos alguns exemplos detalhados.

Exemplos de acesso

Acesse um balanceador de carga TCP/UDP interno na rede VPC por uma rede conectada usando o seguinte:

  • Peering de rede VPC
  • Cloud VPN e Cloud Interconnect

Para exemplos detalhados, consulte Balanceamento de carga TCP/UDP interno e redes conectadas.

Exemplo de serviço da Web de três camadas

Use o balanceamento de carga TCP/UDP interno com outros balanceadores de carga. Por exemplo, se você incorporar balanceadores de carga HTTP externos, o balanceador de carga HTTP(S) externo será a camada da Web e dependerá dos serviços por trás do balanceador de carga TCP/UDP interno.

No diagrama a seguir, você verá o exemplo de uma configuração de três camadas que usa balanceadores de carga HTTP(S) externos e balanceadores de carga TCP/UDP internos:

Aplicativo da Web de três camadas com balanceamento de carga de HTTP(S) e balanceamento de carga TCP/UDP interno
Aplicativo da Web de três camadas com balanceamento de carga de HTTP(S) e balanceamento de carga TCP/UDP interno (clique para ampliar)

Serviço da Web de três camadas com exemplo de acesso global

Se você ativar o acesso global, as VMs da Web podem estar em outra região, como mostrado no diagrama a seguir.

Este exemplo de aplicativo multicamada mostra:

  • Uma camada da Web voltada para a Internet disponível globalmente que equilibra a carga do tráfego com balanceamento de carga HTTP(S)
  • Uma camada interna de banco de dados de balanceamento de carga de back-end na região us-east1 acessada pela camada global da Web.
  • Uma VM cliente que faz parte da camada da Web na região europe-west1 com acesso à camada do banco de dados de balanceamento de carga interno localizada em us-east1.
Aplicativo da Web de três camadas com balanceamento de carga de HTTP(S), acesso global e
         balanceamento de carga TCP/UDP interno
Aplicativo da Web de três camadas com balanceamento de carga de HTTP(S), acesso global e balanceamento de carga TCP/UDP interno (clique para ampliar)

Como usar balanceadores de carga TCP/UDP internos como próximos saltos

Use um balanceador de carga TCP/UDP interno como o próximo gateway a que os pacotes serão encaminhados no caminho até o destino final. Para fazer isso, defina o balanceador de carga como o próximo salto em uma rota estática personalizada.

Um balanceador de carga TCP/UDP interno implantado como próximo salto em uma rota personalizada processa todo o tráfego, independentemente do protocolo (TCP, UDP ou ICMP).

Veja uma arquitetura de amostra usando um balanceador de carga TCP/UDP interno como o próximo salto para um gateway NAT. É possível rotear o tráfego para os back-ends de firewall ou appliance virtual de gateway por meio de um balanceador de carga TCP/UDP interno.

Caso de uso de NAT (clique para ampliar)
Caso de uso de NAT (clique para ampliar)

Outros casos de uso incluem:

  • "Hub and spoke": como trocar rotas de próximo salto usando o peering de rede VPC: é possível configurar uma topologia "hub-and-spoke" com seus appliances virtuais de firewall de próximo salto localizados na rede VPC hub. Rotas que usam o balanceador de carga como próximo salto na rede VPC hub podem ser usadas em cada rede spoke.
  • Balanceamento de carga para várias NICs nas VMs de back-end.

Para mais informações sobre esses casos de uso, consulte Balanceadores de carga TCP/UDP internos como próximos saltos.

Como funciona o balanceamento de carga TCP/UDP interno

Os balanceadores de carga TCP/UDP internos têm as seguintes características:

  • São um serviço gerenciado.
  • Não são um proxy.
  • São implementados em redes virtuais.

Ao contrário de um balanceador de carga de proxy, um balanceador de carga TCP/UDP interno não encerra conexões de clientes e depois abre novas conexões com back-ends. Em vez disso, um balanceador de carga TCP/UDP interno roteia as conexões originais diretamente dos clientes para os back-ends íntegros, sem nenhuma interrupção.

  • Não há dispositivo intermediário ou ponto único de falha.
  • As solicitações do cliente para o endereço IP do balanceador de carga vão diretamente para as VMs de back-end íntegras.
  • As respostas das VMs de back-end vão diretamente para os clientes, e não voltam pelo balanceador de carga. As respostas TCP usam retorno direto do servidor. Para mais informações, consulte Pedidos TCP e UDP e pacotes de retorno.

O balanceador de carga monitora a integridade da VM usando sondagens de verificação de integridade. Para mais informações, consulte a seção Verificação de integridade.

O ambiente de convidado do Linux, o do Windows ou um processo equivalente do Google Cloud configura cada VM de back-end com o endereço IP do balanceador de carga. Para VMs criadas a partir de imagens do Google Cloud, o agente de convidado (antigo ambiente de convidado do Windows ou Linux) instala a rota local do endereço IP do balanceador de carga. As instâncias do Google Kubernetes Engine baseadas no Container-Optimized OS implementam isso usando iptables.

A rede virtual do Google Cloud gerencia o fornecimento de tráfego, escalonando conforme apropriado.

Protocolos, esquema e escopo

Cada balanceador de carga TCP/UDP interno é compatível com:

  • Um serviço de back-end com esquema de balanceamento de carga INTERNAL e o protocolo TCP ou UDP (mas não ambos)
  • VMs de back-end especificadas como:
  • Uma ou mais regras de encaminhamento, cada uma usando o protocolo TCP ou UDP, correspondendo ao protocolo do serviço de back-end
  • Cada regra de encaminhamento com o próprio endereço IP exclusivo ou várias regras de encaminhamento que compartilham um endereço IP comum
  • Cada regra de encaminhamento com até cinco portas ou todas as portas
  • Se o acesso global estiver ativado, os clientes em qualquer região
  • Se o acesso global estiver desativado, os clientes na mesma região do balanceador de carga

Os balanceadores de carga TCP/UDP internos não são compatíveis com:

Acesso de cliente

A VM cliente precisa estar na mesma rede ou em uma rede VPC conectada usando peering da rede VPC. Ative o acesso global para que as instâncias de VMs clientes de qualquer região acessem o balanceador de carga TCP/UDP interno.

Na tabela a seguir, é possível ver um resumo do acesso do cliente.

Acesso global desativado Acesso global ativado
Os clientes precisam estar na mesma região que o balanceador de carga. Também precisam estar na mesma rede VPC do balanceador de carga ou em uma conectada à do balanceador usando o peering da rede VPC. Os clientes podem estar em qualquer região. Ainda precisam estar na mesma rede VPC do balanceador de carga ou em uma conectada à do balanceador usando peering da rede VPC.
Os clientes locais podem acessar o balanceador de carga por meio de túneis do Cloud VPN ou anexos de interconexão (VLANs). Esses túneis ou anexos precisam estar na mesma região do balanceador de carga. Os clientes locais podem acessar o balanceador de carga por meio de túneis do Cloud VPN ou anexos de interconexão (VLANs). Esses túneis ou anexos podem estar em qualquer região.

Endereços IP para pacotes de solicitação e retorno

Quando um sistema cliente envia um pacote TCP ou UDP para um balanceador de carga TCP/UDP interno, a origem e o destino do pacote são os seguintes:

  • Origem: o endereço IP interno principal do cliente ou o endereço IP de um dos intervalos de IP do alias do cliente.
  • Destino: o endereço IP da regra de encaminhamento do balanceador de carga.

Portanto, os pacotes chegam às VMs de back-end do balanceador de carga com o endereço IP de destino do próprio balanceador de carga. Esse tipo de balanceador de carga não é um proxy e esse é o comportamento esperado. Assim, o software em execução nas VMs de back-end do balanceador de carga precisa fazer o seguinte:

  • Detectar (vincular a) o endereço IP do balanceador de carga ou qualquer endereço IP (0.0.0.0 ou ::)
  • Detectar (vincular a) uma porta incluída na regra de encaminhamento do balanceador de carga.

Os pacotes de retorno são enviados diretamente das VMs de back-end do balanceador de carga para o cliente. Os endereços IP de origem e de destino do pacote de retorno dependem do protocolo:

  • O TCP é orientado por conexão, e os balanceadores de carga TCP/UDP internos usam retorno direto do servidor. Assim, os pacotes de resposta são enviados do endereço IP da regra de encaminhamento do balanceador de carga.
  • Por outro lado, o UDP não tem conexão. Por padrão, os pacotes de retorno são enviados do endereço IP interno principal da interface de rede da instância de back-end. De qualquer maneira, esse comportamento pode ser alterado. Por exemplo, configurar um servidor UDP para se vincular ao endereço IP da regra de encaminhamento faz com que os pacotes de resposta sejam enviados do endereço IP da regra de encaminhamento.

Nesta tabela, há um resumo das origens e dos destinos dos pacotes de resposta:

Tipo de tráfego Origem Destino
TCP O endereço IP da regra de encaminhamento do balanceador de carga A origem do pacote solicitante
UDP Depende do software servidor UDP A origem do pacote solicitante

Arquitetura

Um balanceador de carga TCP/UDP interno com vários back-ends distribui conexões entre todos esses back-ends. Para informações sobre o método de distribuição e as opções de configuração, consulte Distribuição de tráfego.

É possível usar grupos de instâncias ou NEGs zonais, mas não uma combinação de ambos, como back-ends para um balanceador de carga TCP/UDP interno:

  • Se você escolher grupos de instâncias, será possível usar grupos não gerenciados de instâncias, grupos gerenciados de instâncias zonais, grupos gerenciados de instâncias regionais ou uma combinação desses tipos de grupo de instâncias.
  • Se você escolher NEGs zonais, use NEGs zonais GCE_VM_IP.

Em Alta disponibilidade, você encontra instruções sobre como projetar um balanceador de carga interno que não dependa de uma única zona.

As instâncias que participam como VMs de back-end para balanceadores de carga TCP/UDP internos precisam executar o ambiente de convidado do Linux ou do Windows apropriado ou outros processos que proporcionem funcionalidade equivalente. Esse ambiente de convidado precisa contatar o servidor de metadados (metadata.google.internal e 169.254.169.254) para ler os metadados da instância a fim de gerar rotas locais para aceitar o tráfego enviado ao endereço IP interno do balanceador de carga.

Neste diagrama, ilustramos a distribuição de tráfego entre VMs localizadas em dois grupos de instâncias separados. O tráfego enviado da instância do cliente para o endereço IP do balanceador de carga (10.10.10.9) é distribuído entre as VMs de back-end em qualquer um dos grupos de instâncias. As respostas enviadas de qualquer uma das VMs de back-end exibidas são entregues diretamente à VM cliente.

O balanceamento de carga TCP/UDP interno pode ser usado com uma rede VPC de modo personalizado ou automático. Também é possível criar balanceadores de carga TCP/UDP internos com uma rede legada disponível.

Os balanceadores de carga TCP/UDP internos consistem nos seguintes componentes do Google Cloud.

Componente Motivo Requisitos
Endereço IP interno Este é o endereço do balanceador de carga. É preciso que o endereço IP interno esteja na mesma sub-rede que a regra de encaminhamento interno. A sub-rede precisa estar na mesma região e na mesma rede VPC do serviço de back-end.
Regra de encaminhamento interno Uma regra de encaminhamento interno, combinada ao endereço IP interno, é o front-end do balanceador de carga. Ela define o protocolo e as portas que o balanceador de carga aceita e direciona o tráfego para um serviço de back-end interno regional. As regras de encaminhamento para balanceadores de carga TCP/UDP internos precisam:
• ter um load-balancing-scheme de INTERNAL;
• usar ip-protocol de TCP ou UDP, correspondendo ao protocol do serviço de back-end;
• referenciar subnet na mesma rede VPC e na mesma região do serviço de back-end.
Serviço de back-end interno regional O serviço de back-end interno regional define o protocolo usado para a comunicação com os back-ends e especifica uma verificação de integridade. Os back-ends podem ser grupos não gerenciados de instâncias, grupos gerenciados de instâncias zonais, grupos gerenciados de instâncias regionais ou NEGs zonais com endpoints GCE_VM_IP. O serviço de back-end precisa:
• ter load-balancing-scheme de INTERNAL;
• usar protocol de TCP ou UDP, correspondendo ao ip-protocol da regra de encaminhamento;
• ter uma verificação de integridade vinculada;
• ter uma região vinculada. A regra de encaminhamento e todos os back-ends precisam estar na mesma região que o serviço de back-end
• Estar associados a uma única rede VPC. Quando não especificada, a rede é inferida com base na que é usada pela interface de rede padrão de cada VM de back-end (nic0).

Mesmo que o serviço de back-end não esteja vinculado a uma sub-rede específica, a sub-rede da regra de encaminhamento precisa estar na mesma rede VPC do serviço de back-end.
Verificação de integridade Cada serviço de back-end precisa ter uma verificação de integridade vinculada. A verificação de integridade define os parâmetros sob os quais o Google Cloud considera os back-ends que gerencia qualificados para receber tráfego. Somente VMs de back-end íntegras recebem o tráfego enviado de VMs do cliente para o endereço IP do balanceador de carga.
Por mais que a regra de encaminhamento e o serviço de back-end possam usar TCP ou UDP, o Google Cloud não tem uma verificação de integridade para o tráfego UDP. Para mais informações, consulte verificações de integridade e tráfego UDP.

Endereço IP interno

O balanceamento de carga TCP/UDP interno usa um endereço IPv4 interno do intervalo de IP principal da sub-rede selecionado ao criar a regra de encaminhamento interno. O endereço IP não pode ser de um intervalo de IP secundário da sub-rede.

Especifique o endereço IP de um balanceador de carga TCP/UDP interno ao criar a regra de encaminhamento. Escolha receber um endereço IP temporário ou usar um endereço IP reservado.

Regras de firewall

Seu balanceador de carga TCP/UDP interno requer as seguintes regras de firewall:

O exemplo em Como configurar regras de firewall mostra como criar ambos.

Regras de encaminhamento

Uma regra de encaminhamento especifica o protocolo e as portas em que o balanceador de carga aceita tráfego. Como os balanceadores de carga TCP/UDP internos não são proxies, passam o tráfego para back-ends no mesmo protocolo e na mesma porta.

Um balanceador de carga TCP/UDP interno exige, no mínimo, uma regra de encaminhamento interno. Defina várias regras de encaminhamento para o mesmo balanceador de carga.

A regra de encaminhamento precisa referenciar uma sub-rede específica na mesma rede VPC e na mesma região dos componentes de back-end do balanceador de carga. Esse requisito tem as seguintes implicações:

  • A sub-rede especificada para a regra de encaminhamento não precisa ser igual a uma das usadas pelas VMs de back-end. No entanto, a sub-rede precisa estar na mesma região da regra de encaminhamento.
  • Quando você cria uma regra de encaminhamento interno, o Google Cloud escolhe um endereço IP interno regional disponível pelo intervalo de endereços IP principal da sub-rede selecionada. Como alternativa, especifique um endereço IP interno no intervalo de IP principal da sub-rede.

Regras de encaminhamento e acesso global

As regras de encaminhamento dos balanceadores de carga TCP/UDP internos são regionais, mesmo quando o acesso global está ativado. Depois de ativar o acesso global, a sinalização allowGlobalAccess da regra de encaminhamento interno regional é definida como true.

Regras de encaminhamento e especificações de porta

Ao criar uma regra de encaminhamento interno, escolha uma das seguintes especificações de porta:

  • Especifique entre uma e cinco portas, por número.
  • Especifique ALL para encaminhar tráfego a todas as portas.

Com uma regra de encaminhamento interno compatível com todas as portas TCP ou UDP, é possível fazer com que as VMs de back-end executem vários aplicativos, cada um na própria porta. O tráfego enviado para uma determinada porta é entregue ao aplicativo correspondente, e todos os aplicativos usam o mesmo endereço IP.

Quando precisar encaminhar o tráfego em mais de cinco portas específicas, combine regras de firewall com as regras de encaminhamento. Ao criar a regra de encaminhamento, especifique todas as portas e crie regras de firewall de entrada allow que tenham apenas tráfego para as portas correspondentes. Aplique as regras de firewall às VMs de back-end.

Não modifique regras de encaminhamento depois de criá-las. Se precisar alterar as portas especificadas ou o endereço IP interno de uma regra de encaminhamento interno, será necessário excluí-lo e recriá-lo.

Várias regras de encaminhamento para um único serviço de back-end

É possível configurar várias regras de encaminhamento interno que fazem referência ao mesmo serviço de back-end interno. Um balanceador de carga TCP/UDP interno exige, no mínimo, uma regra de encaminhamento interno.

Configurar várias regras de encaminhamento para o mesmo serviço de back-end permite fazer o seguinte, usando TCP ou UDP (não os dois):

  • Atribua vários endereços IP ao balanceador de carga. É possível criar várias regras de encaminhamento, cada uma usando um endereço IP exclusivo. Cada regra de encaminhamento pode especificar todas as portas ou um conjunto de até cinco portas.

  • Atribua um conjunto específico de portas, usando o mesmo endereço IP, ao balanceador de carga. É possível criar várias regras de encaminhamento que compartilham o mesmo endereço IP, em que cada regra de encaminhamento usa um conjunto específico de até cinco portas. Essa é uma alternativa à configuração de uma única regra de encaminhamento que especifica todas as portas.

Para mais informações sobre cenários que envolvem duas ou mais regras de encaminhamento interno que compartilham um endereço IP interno comum, consulte Várias regras de encaminhamento com o mesmo endereço IP.

Ao usar várias regras de encaminhamento interno, configure o software em execução nas VMs de back-end para vincular a todos os endereços IP da regra de encaminhamento ou a qualquer endereço (0.0.0.0/0). O endereço IP de destino de um pacote entregue pelo balanceador de carga é o endereço IP interno associado à regra de encaminhamento interno correspondente. Para mais informações, consulte Pedidos TCP e UDP e pacotes de retorno.

Serviço de back-end

Cada balanceador de carga TCP/UDP interno tem um serviço de back-end interno regional que define parâmetros e comportamento de back-end. O nome do serviço de back-end é o nome do balanceador de carga TCP/UDP interno mostrado no Console do Google Cloud.

Todo os serviços de back-end definem os seguintes parâmetros de back-end:

  • Protocolo. Um serviço de back-end aceita tráfego TCP ou UDP, mas não ambos, nas portas especificadas por uma ou mais regras de encaminhamento interno. Com o serviço de back-end, é possível direcionar tráfego às VMs de back-end nas mesmas portas para que o tráfego foi enviado. O protocolo do serviço de back-end precisa corresponder ao protocolo da regra de encaminhamento.

  • Distribuição de tráfego. Com um serviço de back-end, é possível fazer com que o tráfego seja distribuído de acordo com uma afinidade de sessão configurável.

  • Verificação de integridade. Os serviços de back-end precisam ter uma verificação de integridade vinculada.

Cada serviço de back-end opera em uma única região e distribui o tráfego para VMs de back-end em uma única rede VPC:

  • Região. Os back-ends são grupos de instâncias ou NEGs por zona (com endpoints GCE_VM_IP na mesma região do serviço de back-end e regra de encaminhamento). Os back-ends de grupos de instâncias podem ser grupos não gerenciados de instâncias, grupos gerenciados de instâncias zonais ou grupos gerenciados de zonas regionais. Os back-ends de NEG zonais só podem usar endpoints GCE_VM_IP.

  • Rede VPC. Todas as VMs de back-end precisam ter uma interface de rede na rede VPC vinculada ao serviço de back-end. Como opção, especifique explicitamente a rede de um serviço de back-end ou use uma rede implícita. Em ambos os casos, cada sub-rede da regra de encaminhamento interno precisa estar na rede VPC do serviço de back-end.

Serviços de back-end e interfaces de rede

Cada serviço de back-end opera em uma única rede VPC e na região do Google Cloud. A rede VPC pode ser implícita ou especificada explicitamente com a sinalização --network no comando gcloud compute backend-services create:

  • Quando especificada explicitamente, a sinalização de VPC --network do serviço de back-end identifica a interface de rede em cada VM de back-end em que a carga do tráfego esteja balanceada. Cada VM de back-end precisa ter uma interface de rede na rede VPC especificada. Nesse caso, os identificadores da interface de rede (de nic0 a nic7) podem ser diferentes entre as VMs de back-end. Há outros pontos a serem considerados, dependendo do tipo de back-end:

    Back-ends de grupo de instâncias

    • Diferentes VMs de back-end no mesmo grupo de instâncias não gerenciadas podem usar identificadores de interface diferentes se cada VM tiver uma interface na rede VPC especificada.
    • O identificador de interface não precisa ser o mesmo em todos os grupos de instâncias de back-end. Pode ser nic0 para VMs de back-end em um grupo de instâncias de back-end e nic2 para VMs de back-end em outro grupo.

    Back-ends de NEG zonal

    • Diferentes endpoints no mesmo NEG zonal GCE_VM_IP podem usar identificadores de interface diferentes.
    • Se você especificar um nome de VM e um endereço IP ao adicionar um endpoint ao NEG zonal, o Google Cloud validará que o endpoint é um endereço IP interno primário da placa de rede (NIC, na sigla em inglês) da VM localizada na rede VPC selecionada do NEG. As validações com falha apresentam mensagens de erro indicando que o endpoint não corresponde ao endereço IP primário da placa de rede (NIC, na sigla em inglês) da VM na rede do NEG.
    • Se você não especificar endereços IP ao adicionar endpoints ao NEG zonal, o Google Cloud selecionará o endereço IP interno principal da placa de rede (NIC, na sigla em inglês) na rede VPC selecionada do NEG.
  • Se você não incluir o sinalizador --network ao criar o serviço de back-end, será escolhida uma rede com base na rede da interface da rede inicial (ou única) usada por todas as VMs de back-end. Isso significa que nic0 precisa estar na mesma rede VPC para todas as VMs em todos os grupos de instâncias de back-end.

Verificação de integridade

O serviço de back-end do balanceador de carga precisa estar associado a uma verificação de integridade global ou regional. Rotas especiais fora da rede VPC facilitam a comunicação entre os sistemas de verificação de integridade e os back-ends.

Use uma verificação de integridade atual ou defina uma nova. Os balanceadores de carga TCP/UDP internos usam status de verificação de integridade para determinar como rotear novas conexões, conforme descrito em Distribuição de tráfego.

Use qualquer um dos seguintes protocolos de verificação de integridade. O protocolo da verificação de integridade não precisa corresponder ao protocolo do balanceador de carga:

  • HTTP, HTTPS ou HTTP/2. Se as VMs de back-end enviarem tráfego usando HTTP, HTTPS ou HTTP/2, é melhor usar uma verificação de integridade que corresponda a esse protocolo, porque as que têm como base o HTTP oferecem opções adequadas ao protocolo em questão. Se a disponibilização de tráfego de HTTP for feita por meio de um balanceador de carga TCP/UDP, o protocolo do balanceador de carga será TCP.
  • SSL ou TCP. Se as VMs de back-end não enviarem tráfego do tipo HTTP, será necessário usar uma verificação de integridade SSL ou TCP.

Independentemente do tipo de verificação de integridade que você criar, o Google Cloud enviará sondagens de verificação de integridade para o endereço IP da regra de encaminhamento do balanceador de carga TCP/UDP interno, para a interface de rede na VPC selecionada pelo serviço de back-end do balanceador de carga. Isso simula como o tráfego com carga balanceado é entregue. O software em execução nas suas VMs de back-end precisa responder ao tráfego com balanceamento de carga e às sondagens de verificação de integridade enviadas ao endereço IP do balanceador de carga. Para mais informações, consulte Destino dos pacotes de sondagem.

Verificações de integridade e tráfego UDP

O Google Cloud não oferece uma verificação de integridade que use o protocolo UDP. Ao usar o balanceamento de carga TCP/UDP interno com tráfego UDP, você precisa executar um serviço baseado em TCP nas suas VMs de back-end para fornecer informações de verificação de integridade.

Nessa configuração, as solicitações de clientes são balanceadas com carga usando o protocolo UDP e um serviço TCP é usado para enviar informações a quem faz as sondagens de verificação de integridade do Google Cloud. Por exemplo, é possível usar um servidor HTTP simples em cada VM de back-end que gera uma resposta HTTP 200 para o Google Cloud. Neste exemplo, é preciso usar a própria lógica em execução na VM de back-end para garantir que o servidor HTTP exiba 200 apenas se o serviço UDP estiver configurado e em execução corretamente.

Arquitetura de alta disponibilidade

Por design, o balanceador de carga TCP/UDP interno tem alta disponibilidade. Não há etapas especiais para deixar o balanceador de carga altamente disponível porque o mecanismo não depende de um único dispositivo ou instância de VM.

Para garantir que as instâncias de VM de back-end sejam implantadas em várias zonas, siga estas recomendações de implantação:

  • Use grupos de instâncias regionais gerenciados se puder implantar o software usando modelos de instância. Os grupos de instâncias gerenciadas por região distribuem automaticamente o tráfego entre várias zonas, fornecendo a melhor opção para evitar possíveis problemas em qualquer zona.

  • Se você usar grupos de instâncias gerenciadas por zona ou não gerenciadas, use vários grupos em zonas diferentes (na mesma região) para o mesmo serviço de back-end. O uso de várias zonas é uma proteção contra possíveis problemas que possam ocorrer em qualquer zona.

Arquitetura da VPC compartilhada

A tabela a seguir resume os requisitos do componente para o balanceamento de carga TCP/UDP interno usado com uma rede VPC compartilhada. Para um exemplo, consulte como criar um balanceador de carga TCP/UDP interno na página "Como provisionar a VPC compartilhada".

Endereço IP Regra de encaminhamento Componentes de back-end
Um endereço IP interno precisa ser definido no mesmo projeto que as VMs de back-end.

Para que o balanceador de carga esteja disponível em uma rede VPC compartilhada, o endereço IP interno do Google Cloud precisa ser definido no mesmo projeto de serviço em que as VMs de back-end estão localizadas e precisa referenciar uma sub-rede na rede VPC compartilhada do projeto host. O endereço vem do intervalo de IP principal da sub-rede referenciada.

Se você criar um endereço IP interno em um projeto de serviço e a sub-rede do endereço IP estiver na rede VPC do projeto de serviço, o balanceador de carga TCP/UDP interno será local para o projeto de serviço. Ele não é local para nenhum projeto host de VPC compartilhada.
Uma regra de encaminhamento interna precisa ser definida no mesmo projeto das VMs de back-end.

Para que o balanceador de carga esteja disponível em uma rede VPC compartilhada, a regra de encaminhamento interno precisa ser definida no mesmo projeto de serviço das VMs de back-end, e precisa referenciar a mesma sub-rede (na rede VPC compartilhada) que o endereço IP interno associado.

Se você criar uma regra de encaminhamento interno em um projeto de serviço e a sub-rede da regra de encaminhamento estiver na rede VPC do projeto de serviço, o balanceador de carga TCP/UDP interno será local para o projeto de serviço. Ele não é local para nenhum projeto host de VPC compartilhada.
Em um cenário de VPC compartilhada, as VMs de back-end estão localizadas em um projeto de serviço. Um serviço de back-end interno regional e uma verificação de integridade precisam ser definidos nesse projeto de serviço.

Distribuição de tráfego

A maneira como um balanceador de carga TCP/UDP interno distribui novas conexões depende de você ter configurado o failover:

  • Se você não tiver configurado o failover, um balanceador de carga TCP/UDP interno distribuirá novas conexões com as VMs de back-end íntegras se pelo menos uma VM de back-end estiver nesse estado. Quando todas as VMs de back-end não estiverem íntegras, o balanceador de carga distribuirá novas conexões entre todos os back-ends como última alternativa. Nessa situação, o balanceador de carga roteia cada nova conexão para uma VM de back-end não íntegra.

  • Se tiver configurado o failover, um balanceador de carga TCP/UDP interno distribuirá novas conexões entre VMs no pool ativo, de acordo com uma política de failover que pode ser configurada. Quando todas as VMs de back-end não estiverem íntegras, poderá escolher um dos seguintes comportamentos:

    • (Padrão) O balanceador de carga distribui o tráfego apenas para as VMs primárias. Isso é feito como último recurso. As VMs de backup são excluídas dessa distribuição de conexões mais recente.
    • O balanceador de carga está configurado para descartar o tráfego.

O método de distribuição de novas conexões depende da configuração da afinidade de sessão do balanceador de carga.

O estado da verificação de integridade controla a distribuição de novas conexões. Uma sessão TCP estabelecida persiste em uma VM de back-end não íntegra se a VM de back-end não íntegra ainda interferir na conexão.

Opções de afinidade de sessão

A afinidade de sessão controla a distribuição de novas conexões de clientes para as VMs de back-end do balanceador de carga. Você define a afinidade de sessão quando as VMs de back-end precisam acompanhar as informações de estado dos clientes. Esse é um requisito comum para aplicativos que precisam manter o estado, incluindo aplicativos da Web.

A afinidade de sessão funciona com base no melhor esforço.

Os balanceadores de carga TCP/UDP internos são compatíveis com as seguintes opções de afinidade de sessão, que você especifica para todo o serviço de back-end interno, não por grupo de instâncias de back-end:

Tipo Significado Protocolos compatíveis
Nenhum Essa é a configuração padrão.

Ele funciona da mesma forma que o IP, o protocolo e a porta do cliente.

Tráfego TCP e UDP
IP do cliente As conexões do mesmo endereço IP de origem e de destino vão para a mesma instância, com base em um hash de duas tuplas dos itens a seguir:
  • Endereço de origem no pacote IP
  • Endereço de destino no pacote I
Tráfego TCP e UDP
IP cliente e protocolo As conexões com o mesmo protocolo e endereço IP de origem e destino vão para a mesma instância, com base em um hash de três tuplas do seguinte:
  • Endereço de origem no pacote IP
  • Endereço de destino no pacote I
  • Protocolo (TCP ou UDP)
Tráfego TCP e UDP
IP, protocolo e porta do cliente Os pacotes são enviados aos back-ends usando um hash criado a partir das seguintes informações:
  • Endereço IP de origem do pacote
  • Porta de origem do pacote (se houver)
  • Endereço IP de destino do pacote
  • Porta de destino do pacote (se houver)
  • protocolo
As informações de endereço de origem, de destino e de protocolo são obtidas no cabeçalho do pacote IP. As portas de origem e de destino, se houver, são extraídas do cabeçalho da camada 4.
Por exemplo, os segmentos TCP e os datagramas UDP não fragmentados sempre incluem uma porta de origem e uma porta de destino. Os datagramas UDP fragmentados não incluem informações de porta.
Quando as informações da porta não estão presentes, o hash de cinco tuplas é efetivamente um hash de três tuplas.
Somente tráfego TCP

O endereço IP de destino é o endereço IP da regra de encaminhamento do balanceador de carga, a menos que os pacotes sejam transmitidos ao balanceador de carga devido a uma rota estática personalizada. Se um balanceador de carga TCP/UDP interno for o próximo salto de uma rota, veja a seção seguinte, Afinidade de sessão e balanceador de carga TCP/UDP interno do próximo salto.

Afinidade de sessão e balanceador de carga TCP/UDP interno do próximo salto

Independentemente da opção de afinidade de sessão escolhida, o Google Cloud usa o destino do pacote. Ao enviar um pacote diretamente ao balanceador de carga, o destino do pacote corresponde ao endereço IP da regra de encaminhamento do balanceador de carga.

No entanto, ao usar um balanceador de carga TCP/UDP interno como próximo salto para uma rota estática personalizada, é provável que o destino do pacote não seja o endereço IP da regra de encaminhamento do balanceador de carga. Para pacotes com um destino que esteja no intervalo de destino da rota, a rota é direcionada para o balanceador de carga.

Para usar um balanceador de carga TCP/UDP interno como o próximo salto de uma rota estática personalizada, consulte Conceitos do próximo salto para balanceamento de carga TCP/UDP interno.

Afinidade de sessão e estado de verificação de integridade

A alteração dos estados de integridade das VMs de back-end pode causar perda de afinidade de sessão. Por exemplo, se uma VM de back-end não estiver íntegra e houver pelo menos outra VM de back-end íntegra, um balanceador de carga TCP/UDP interno não distribuirá novas conexões à VM não íntegra. Se um cliente tiver afinidade de sessão com a VM não íntegra, será direcionado para a VM de back-end íntegra, perdendo a afinidade de sessão.

Como testar conexões de cliente único

Ao testar conexões com o endereço IP de um balanceador de carga TCP/UDP interno de um único sistema cliente, lembre-se do seguinte:

  • Se o sistema cliente não for uma VM que está sendo balanceada, isto é, nem é uma VM de back-end, novas conexões serão enviadas às VMs de back-end íntegras do balanceador de carga. No entanto, como todas as opções de afinidade de sessão dependem de, no mínimo, o endereço IP do sistema cliente, as conexões do mesmo cliente podem ser distribuídas para a mesma VM com mais frequência do que o esperado.

    Na prática, isso quer dizer é que não é possível monitorar com precisão a distribuição de tráfego por meio de um balanceador de carga TCP/UDP interno que se conecta de um único cliente. O número necessário de clientes para monitorar a distribuição de tráfego varia de acordo com o tipo do balanceador de carga, o tipo de tráfego e o número de back-ends íntegros.

  • Se a VM cliente for uma VM de back-end do balanceador de carga, as conexões enviadas ao endereço IP da regra de encaminhamento do balanceador de carga serão sempre respondidas pela VM de cliente/back-end. Isso acontece independentemente de a VM de back-end estar íntegra. Isso acontece para todo o tráfego enviado ao endereço IP do balanceador de carga, não apenas o tráfego no protocolo e as portas especificadas na regra de encaminhamento interno do balanceador de carga.

    Para mais informações, consulte Como enviar solicitações a partir de VMs submetidas a balanceamento de carga.

Failover

O balanceamento de carga TCP/UDP interno permite designar alguns back-ends como back-ends de failover. Esses back-ends só são usados quando o número de VMs íntegras nos grupos de instâncias de back-end primários está abaixo de um limite configurável. Por padrão, se todas as VMs primárias e de failover não estiverem íntegras, como um último recurso, o Google Cloud distribuirá novas conexões somente entre todas as VMs primárias.

Ao adicionar um back-end a um serviço de back-end do balanceador de carga TCP/UDP interno, por padrão, ele é um back-end primário. Para designar um back-end como sendo de failover, faça isso quando adicioná-lo ao serviço de back-end do balanceador de carga ou edite esse serviço posteriormente.

Para uma visão geral conceitual detalhada do failover no balanceamento de carga interno TCP/UDP, consulte visão geral de failover para balanceamento de carga interno TCP/UDP.

Subconfiguração

A criação de subconjuntos para balanceadores de carga TCP/UDP internos permite que você dimensione o balanceador de carga TCP/UDP interno para aceitar um número maior de instâncias de VM de back-end por serviço de back-end interno.

Para informações sobre como a criação de subconjuntos afeta esse limite, consulte a seção "Serviços de back-end" de cotas e limites de recursos de balanceamento de carga.

Por padrão, a subconfiguração está desativada, o que limita o serviço de back-end a distribuir até até 250 instâncias ou endpoints de back-end. Se seu serviço de back-end precisar ser compatível com mais de 250 back-ends, será possível ativar a criação de subconjuntos. Quando a criação de subconjuntos é ativada, um subconjunto de instâncias de back-end é selecionado para cada conexão de cliente.

No diagrama a seguir, mostramos um modelo de diferença reduzida entre esses dois modos de operação.

Comparação de um balanceador de carga TCP/UDP interno sem e com subconfiguração (clique para ampliar)
Comparação de um balanceador de carga TCP/UDP interno sem e com subconfiguração (clique para ampliar)

Sem subconfiguração, o conjunto completo de back-ends íntegros é melhor utilizado e novas conexões de clientes são distribuídas entre todos os back-ends íntegros de acordo com a distribuição de tráfego. A criação implica restrições de balanceamento de carga, mas permite que o balanceador de carga aceite mais de 250 back-ends.

Para mais instruções de configuração, consulte Como configurar.

Advertências relacionadas à criação de subconjuntos

  • Quando a criação de subconjuntos estiver ativada, nem todos os back-ends receberão tráfego de um determinado remetente, mesmo quando o número de back-ends for pequeno.
  • Consulte a página de cotas para o número máximo de instâncias de back-end quando a criação de subconjuntos está ativada.
  • Somente a afinidade da sessão de cinco tuplas é compatível com a criação de subconjuntos.
  • O espelhamento de pacotes não é compatível com a criação de subconjuntos.
  • A ativação e a desativação da criação de subconjuntos interrompe as conexões existentes.
  • Ao usar a criação de subconjuntos usando o Cloud VPN ou o Cloud Interconnect e quando não houver gateways VPN suficientes (< 10) no lado do Google Cloud, você provavelmente usará apenas o subconjunto de back-ends do balanceador de carga. Se os pacotes de uma única conexão TCP forem redirecionados para um gateway de VPN diferente, você terá redefinições de conexão. É preciso que haja gateways VPN suficientes no Google Cloud para usar todos os pools de back-end. Se o tráfego de uma única conexão TCP redirecionar para um gateway de VPN diferente, você terá redefinições de conexão.

Limites

Para informações sobre cotas e limites, consulte Cotas para recursos de balanceamento de carga.

A seguir