Este guia mostra como implementar um Network Load Balancer de encaminhamento interno com back-ends de grupo de pontos finais de rede (NEG) zonais. Os NEGs zonais são recursos zonais que representam coleções de endereços IP ou combinações de endereço IP/porta para recursos Google Cloud numa única sub-rede. Os NEGs permitem-lhe criar agrupamentos lógicos de endereços IP ou combinações de endereços IP/portas que representam serviços de software em vez de VMs inteiras.
Antes de seguir este guia, familiarize-se com o seguinte:
Os equilibradores de carga de passagem internos só suportam NEGs zonais com GCE_VM_IP
pontos finais.
Autorizações
Para seguir este guia, tem de criar instâncias e modificar uma rede num projeto. Deve ser proprietário ou editor do projeto, ou ter todas as seguintes funções IAM do Compute Engine:
| Tarefa | Função necessária | 
|---|---|
| Crie redes, sub-redes e componentes do balanceador de carga | Administrador da rede | 
| Adicione e remova regras de firewall | Administrador de segurança | 
| Crie instâncias | Administrador de instâncias do Compute | 
Para mais informações, consulte os seguintes guias:
Vista geral da configuração
Este guia mostra como configurar e testar um Network Load Balancer de encaminhamento interno com back-ends de NEG zonais.GCE_VM_IP Os passos nesta secção descrevem como
configurar o seguinte:
- Uma rede VPC de exemplo denominada 
lb-networkcom uma sub-rede personalizada - Regras de firewall que permitem ligações recebidas a VMs de back-end
 - Quatro VMs:
- VMs 
vm-a1evm-a2na zonaus-west1-a - VMs 
vm-c1evm-c2na zonaus-west1-c 
 - VMs 
 - Dois NEGs zonais de back-end, 
neg-ana zonaus-west1-aeneg-cna zonaus-west1-c. Cada NEG tem os seguintes pontos finais:neg-acontém estes dois pontos finais:- Endereço IP interno da VM 
vm-a1 - Endereço IP interno da VM 
vm-a2 
- Endereço IP interno da VM 
 neg-ccontém estes dois pontos finais:- Endereço IP interno da VM 
vm-c1 - Endereço IP interno da VM 
vm-c2 
- Endereço IP interno da VM 
 
 - Uma VM cliente (
vm-client) emus-west1-apara testar as ligações - Os seguintes componentes do balanceador de carga de rede de encaminhamento interno:
- Um serviço de back-end interno na região de 
us-west1para gerir a distribuição de ligações aos dois NEGs zonais - Uma regra de encaminhamento interna e um endereço IP interno para o front-end do balanceador de carga
 
 - Um serviço de back-end interno na região de 
 
A arquitetura para este exemplo tem o seguinte aspeto:
Configure uma rede, uma região e uma sub-rede
O exemplo de balanceador de carga de rede de encaminhamento interno descrito nesta página é criado numa rede VPC de modo personalizado denominada lb-network.
As VMs de back-end, os NEGs zonais e os componentes do balanceador de carga deste exemplo estão localizados nesta região e sub-rede:
- Região: 
us-west1 - Sub-rede: 
lb-subnet, com o intervalo de endereços IP principal10.1.2.0/24 
Para criar a rede e a sub-rede de exemplo, siga estes passos.
Consola
- Aceda à página Redes VPC na Google Cloud consola. 
Aceda à página da rede VPC - Clique em Criar rede de VPC.
 - Introduza um Nome de 
lb-network. - Na secção Sub-redes:
- Defina o Subnet creation mode (Modo de criação de sub-rede) como Custom (Personalizado).
 - Na secção Nova sub-rede, introduza as seguintes informações:
- Nome: 
lb-subnet - Região: 
us-west1 - Intervalo de endereços IP: 
10.1.2.0/24 - Clique em Concluído.
 
 - Nome: 
 
 - Clique em Criar.
 
gcloud
Crie a rede VPC personalizada:
gcloud compute networks create lb-network --subnet-mode=custom
- Na rede 
lb-network, crie uma sub-rede para VMs de back-end na regiãous-west1: 
gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1- Na rede 
 
Configure regras de firewall
Este exemplo usa as seguintes regras de firewall:
fw-allow-lb-access: uma regra de entrada, aplicável a todos os destinos na rede VPC, que permite o tráfego de origens no intervalo10.1.2.0/24. Esta regra permite o tráfego de entrada de qualquer cliente localizado emlb-subnet.fw-allow-ssh: Uma regra de entrada, aplicável às instâncias com balanceamento de carga, que permite a conetividade SSH de entrada na porta TCP 22 a partir de qualquer endereço. Pode escolher um intervalo de IPs de origem mais restritivo para esta regra. Por exemplo, pode especificar apenas os intervalos de IPs do sistema a partir do qual vai iniciar sessões SSH. Este exemplo usa a etiqueta de destinoallow-sshpara identificar as VMs às quais deve ser aplicada.
Sem estas regras de firewall, a regra de negação predefinida de entrada bloqueia o tráfego de entrada para as instâncias de back-end.
Consola
- Na Google Cloud consola, aceda à página Políticas de firewall. 
Aceder a Políticas de firewall - Clique em Criar regra de firewall e introduza as seguintes informações para criar a regra que permite o tráfego da sub-rede:
- Nome: 
fw-allow-lb-access - Rede: 
lb-network - Prioridade: 
1000 - Direção do tráfego: entrada
 - Ação na correspondência: permitir
 - Alvos: todas as instâncias na rede
 - Filtro de origem: intervalos IPv4
 - Intervalos IPv4 de origem: 
10.1.2.0/24 - Protocolos e portas: permitir tudo
 
 - Nome: 
 - Clique em Criar.
 - Clique novamente em Criar regra de firewall para criar a regra que permite ligações SSH
de entrada:
- Nome: 
fw-allow-ssh - Rede: 
lb-network - Prioridade: 
1000 - Direção do tráfego: entrada
 - Ação na correspondência: permitir
 - Objetivos: etiquetas de objetivo especificadas
 - Etiquetas de segmentação: 
allow-ssh - Filtro de origem: intervalos IPv4
 - Intervalos IPv4 de origem: 
0.0.0.0/0 - Protocolos e portas: escolha Protocolos e portas especificados e, em seguida,
escreva: 
tcp:22 
 - Nome: 
 - Clique em Criar.
 - Clique em Criar regra de firewall pela terceira vez para criar a regra que permite as
Google Cloud verificações de funcionamento:
- Nome: 
fw-allow-health-check - Rede: 
lb-network - Prioridade: 
1000 - Direção do tráfego: entrada
 - Ação na correspondência: permitir
 - Objetivos: etiquetas de objetivo especificadas
 - Etiquetas de segmentação: 
allow-health-check - Filtro de origem: intervalos IPv4
 - Intervalos de IPv4 de origem: 
130.211.0.0/22e35.191.0.0/16 - Protocolos e portas: permitir tudo
 
 - Nome: 
 - Clique em Criar.
 
gcloud
Crie a regra de firewall
fw-allow-lb-accesspara permitir a comunicação de com a sub-rede:gcloud compute firewall-rules create fw-allow-lb-access \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.1.2.0/24 \ --rules=tcp,udp,icmpCrie a regra de firewall
fw-allow-sshpara permitir a conetividade SSH a VMs com a etiqueta de redeallow-ssh. Quando omitesource-ranges, Google Cloud interpreta a regra como qualquer origem.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22Crie a regra
fw-allow-health-checkpara permitir Google Cloud verificações de funcionamento.gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp,udp,icmp
Crie back-ends de NEG
Para demonstrar a natureza regional dos balanceadores de carga de rede de passagem interna, este exemplo usa dois back-ends NEG zonais, neg-a e neg-c, nas zonas us-west1-a e us-
west1-c. O tráfego é equilibrado entre ambos os NEGs e entre os pontos finais em cada NEG.
Crie VMs
Para suportar este exemplo, cada uma das quatro VMs executa um servidor Web Apache que ouve nas seguintes portas TCP: 80, 8008, 8080, 8088, 443 e 8443.
A cada VM é atribuído um endereço IP interno no intervalo lb-subnet e um endereço IP externo (público) efémero. Pode remover os endereços IP externos mais tarde.
Os endereços IP externos não são necessários para VMs de back-end. No entanto, são úteis para este exemplo porque permitem que as VMs transfiram o Apache da Internet e permitem que se ligue através de SSH. Por predefinição, o Apache está configurado para ser associado a qualquer endereço IP. Os balanceadores de carga de rede de encaminhamento interno entregam pacotes preservando o IP de destino.
Certifique-se de que o software do servidor em execução nas VMs está a ouvir no endereço IP da regra de encaminhamento interno do balanceador de carga.
Para simplificar as instruções, estas VMs de back-end executam o Debian GNU Linux 10.
Consola
Crie VMs
- Aceda à página de instâncias de VM na Google Cloud consola. 
Aceda à página de instâncias de VM - Repita os passos seguintes para criar quatro VMs, usando as seguintes combinações de nomes e zonas.
- Nome: 
vm-a1, zona:us-west1-a - Nome: 
vm-a2, zona:us-west1-a - Nome: 
vm-c1, zona:us-west1-c - Nome: 
vm-c2, zona:us-west1-c 
 - Nome: 
 - Clique em Criar instância.
 - Defina o Nome conforme indicado no passo 2.
 - Para a Região, escolha 
us-west1e escolha uma Zona, conforme indicado no passo 2. - Na secção Disco de arranque, certifique-se de que a opção Debian GNU/Linux 12 (bookworm) está selecionada para as opções do disco de arranque. Clique em Escolher para alterar a imagem, se necessário.
 Clique em Opções avançadas e faça as seguintes alterações:
- Clique em Rede e adicione as seguintes etiquetas de rede:
allow-ssheallow-health-check - Clique em Editar  em
Interfaces de rede, faça as seguintes alterações e, de seguida, clique em
Concluído:
- Rede: 
lb-network - Subnet: 
lb-subnet - IP interno principal: efémero (automático)
 - IP externo: efémero
 
 - Rede: 
 Clique em Gestão. No campo Script de arranque, copie e cole o seguinte conteúdo do script. O conteúdo do script é idêntico para todas as quatro VMs:
#! /bin/bash if [ -f /etc/startup_script_completed ]; then exit 0 fi apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl file_ports="/etc/apache2/ports.conf" file_http_site="/etc/apache2/sites-available/000-default.conf" file_https_site="/etc/apache2/sites-available/default-ssl.conf" http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088" http_vh_prts="*:80 *:8008 *:8080 *:8088" https_listen_prts="Listen 443\nListen 8443" https_vh_prts="*:443 *:8443" vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html prt_conf="$(cat "$file_ports")" prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")" prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")" echo "$prt_conf" | tee "$file_ports" http_site_conf="$(cat "$file_http_site")" http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")" echo "$http_site_conf_2" | tee "$file_http_site" https_site_conf="$(cat "$file_https_site")" https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")" echo "$https_site_conf_2" | tee "$file_https_site" systemctl restart apache2 touch /etc/startup_script_completed
- Clique em Rede e adicione as seguintes etiquetas de rede:
 Clique em Criar.
gcloud
Crie as quatro VMs executando o seguinte comando quatro vezes, usando estas quatro combinações para [VM-NAME] e [ZONE]. O conteúdo do script
 é idêntico para todas as quatro VMs.
[VM-NAME]devm-a1e[ZONE]deus-west1-a[VM-NAME]devm-a2e[ZONE]deus-west1-a[VM-NAME]devm-c1e[ZONE]deus-west1-c[VM-NAME]devm-c2e[ZONE]deus-west1-cgcloud compute instances create VM-NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check \ --subnet=lb-subnet \ --metadata=startup-script='#! /bin/bash if [ -f /etc/startup_script_completed ]; then exit 0 fi apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl file_ports="/etc/apache2/ports.conf" file_http_site="/etc/apache2/sites-available/000-default.conf" file_https_site="/etc/apache2/sites-available/default-ssl.conf" http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088" http_vh_prts="*:80 *:8008 *:8080 *:8088" https_listen_prts="Listen 443\nListen 8443" https_vh_prts="*:443 *:8443" vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html prt_conf="$(cat "$file_ports")" prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")" prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")" echo "$prt_conf" | tee "$file_ports" http_site_conf="$(cat "$file_http_site")" http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")" echo "$http_site_conf_2" | tee "$file_http_site" https_site_conf="$(cat "$file_https_site")" https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")" echo "$https_site_conf_2" | tee "$file_https_site" systemctl restart apache2 touch /etc/startup_script_completed'
Crie NEGs zonais GCE_VM_IP
Os NEGs (neg-a e neg-c) têm de ser criados nas mesmas zonas que as VMs criadas no passo anterior.
Consola
Para criar um grupo de pontos finais de rede zonal:
- Aceda à página Grupos de pontos finais de rede na Google Cloud consola. 
Aceda à página Grupos de pontos finais da rede - Clique em Criar grupo de pontos finais de rede.
 - Introduza um Nome para o NEG zonal: 
neg-a. - Selecione o Tipo de grupo de pontos finais da rede: Grupo de pontos finais da rede (zonal).
 - Selecione a rede: lb-network
 - Selecione a Sub-rede: lb-subnet
 - Selecione a zona: us-west1-a
 - Clique em Criar.
 - Repita estes passos para criar um segundo NEG zonal denominado 
neg-cna zona us-west1-c. 
Adicione pontos finais ao NEG zonal:
- Aceda à página Grupos de pontos finais de rede na Google Cloud consola. 
Aceda aos grupos de pontos finais da rede - Clique no Nome do primeiro grupo de pontos finais de rede criado no passo anterior (neg-a). É apresentada a página Detalhes do grupo de pontos finais da rede.
 Na secção Pontos finais de rede neste grupo, clique em Adicionar ponto final de rede. É apresentada a página Adicionar ponto final de rede.
- Clique em Instância de VM e selecione vm-a1 para adicionar os respetivos endereços IP internos como pontos finais de rede.
 - Clique em Criar.
 - Clique novamente em Adicionar ponto final de rede e, em Instância de VM, selecione vm-a2.
 - Clique em Criar.
 
Clique no Nome do segundo grupo de pontos finais de rede criado no passo anterior (neg-c). É apresentada a página Detalhes do grupo de pontos finais da rede.
Na secção Pontos finais de rede neste grupo, clique em Adicionar ponto final de rede. É apresentada a página Adicionar ponto final de rede.
- Clique em Instância de VM e selecione vm-c1 para adicionar os respetivos endereços IP internos como pontos finais de rede.
 - Clique em Criar.
 - Clique novamente em Adicionar ponto final de rede e, em Instância de VM, selecione vm-c2.
 - Clique em Criar.
 
gcloud
Crie um NEG zonal denominado
neg-aemus-west1-acom o comandogcloud compute network-endpoint-groups create:GCE_VM_IPgcloud compute network-endpoint-groups create neg-a \ --network-endpoint-type=gce-vm-ip \ --zone=us-west1-a \ --network=lb-network \ --subnet=lb-subnetAdicione pontos finais a
neg-a:gcloud compute network-endpoint-groups update neg-a \ --zone=us-west1-a \ --add-endpoint='instance=vm-a1' \ --add-endpoint='instance=vm-a2'Crie um NEG zonal denominado
neg-cemus-west1-ccom o comandogcloud compute network-endpoint-groups create:GCE_VM_IPgcloud compute network-endpoint-groups create neg-c \ --network-endpoint-type=gce-vm-ip \ --zone=us-west1-c \ --network=lb-network \ --subnet=lb-subnetAdicione pontos finais a
neg-c:gcloud compute network-endpoint-groups update neg-c \ --zone=us-west1-c \ --add-endpoint='instance=vm-c1' \ --add-endpoint='instance=vm-c2'
Configure os componentes do balanceador de carga
Estes passos configuram todos os componentes do balanceador de carga de rede de encaminhamento interno:
Serviço de back-end: para este exemplo, tem de transmitir tráfego HTTP através do balanceador de carga. Por isso, tem de usar o protocolo TCP e não o UDP.
Regra de encaminhamento: este exemplo cria uma única regra de encaminhamento interno.
Endereço IP interno: neste exemplo, especifica um endereço IP interno,
10.1.2.99, quando cria a regra de encaminhamento.
Consola
gcloud
Crie uma nova verificação de funcionamento de HTTP regional.
gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80Crie o serviço de back-end:
gcloud compute backend-services create bs-ilb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1Adicione os dois NEGs zonais,
neg-aeneg-c, ao serviço de back-end:gcloud compute backend-services add-backend bs-ilb \ --region=us-west1 \ --network-endpoint-group=neg-a \ --network-endpoint-group-zone=us-west1-agcloud compute backend-services add-backend bs-ilb \ --region=us-west1 \ --network-endpoint-group=neg-c \ --network-endpoint-group-zone=us-west1-cCrie uma regra de encaminhamento para o serviço de back-end. Quando criar a regra de encaminhamento, especifique
10.1.2.99para o endereço IP interno na sub-rede.gcloud compute forwarding-rules create fr-ilb \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=10.1.2.99 \ --ip-protocol=TCP \ --ports=80,8008,8080,8088 \ --backend-service=bs-ilb \ --backend-service-region=us-west1
Teste o balanceador de carga
Este teste contacta o balanceador de carga a partir de uma VM cliente separada, ou seja, não a partir de uma VM de back-end do balanceador de carga. O comportamento esperado é que o tráfego seja distribuído entre as quatro VMs de back-end porque não foi configurada nenhuma afinidade de sessão.
Crie uma VM de cliente de teste
Este exemplo cria uma VM de cliente (vm-client) na mesma região que as VMs de back-end (servidor). O cliente é usado para validar a configuração do equilibrador de carga
e demonstrar o comportamento esperado, conforme descrito na secção de
testes.
Consola
- Aceda à página de instâncias de VM na Google Cloud consola. 
Aceda à página de instâncias de VM - Clique em Criar instância.
 - Defina o Nome como 
vm-client. - Defina a Zona como 
us-west1-a. - Clique em Opções avançadas e faça as seguintes alterações:
- Clique em Rede e adicione o 
allow-ssha Etiquetas de rede. - Clique no botão de edição em Interfaces de rede e faça as seguintes alterações. Em seguida, clique em Concluído:
- Rede: 
lb-network - Subnet: 
lb-subnet - IP interno principal: efémero (automático)
 - IP externo: efémero
 
 - Rede: 
 
 - Clique em Rede e adicione o 
 - Clique em Criar.
 
gcloud
A VM do cliente pode estar em qualquer zona na mesma região que o balanceador de carga e pode usar qualquer sub-rede nessa região. Neste exemplo, o cliente está na zona us-west1-a e usa a mesma sub-rede que as VMs de back-end.
gcloud compute instances create vm-client \
    --zone=us-west1-a \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=lb-subnet
Envie tráfego para o balanceador de carga
Execute os seguintes passos para estabelecer ligação ao equilibrador de carga.
Ligue-se à instância de VM do cliente.
gcloud compute ssh vm-client --zone=us-west1-a
Faça um pedido Web ao equilibrador de carga através de
curlpara contactar o respetivo endereço IP. Repita o pedido para poder ver que as respostas provêm de VMs de back-end diferentes. O nome da VM que gera a resposta é apresentado no texto na resposta HTML, em virtude do conteúdo de/var/www/html/index.htmlem cada VM de back-end. As respostas esperadas têm o seguinte aspeto:Page served from: vm-a1ePage served from: vm-a2.curl http://10.1.2.99
A regra de encaminhamento está configurada para servir as portas
80,8008,8080e8088. Para enviar tráfego para essas outras portas, anexe dois pontos (:) e o número da porta após o endereço IP, da seguinte forma:curl http://10.1.2.99:8008
O que se segue?
- Para configurar opções de configuração adicionais, como ativar o acesso global, aceitar tráfego em todas as portas e aceitar tráfego em várias portas através de duas regras de encaminhamento, consulte as opções de configuração adicionais para equilibradores de carga de rede de encaminhamento interno.
 - Consulte a Vista geral do balanceador de carga de rede de encaminhamento interno para ver os princípios importantes.
 - Consulte Conceitos de comutação por falha para equilibradores de carga de rede de passagem interna para ver informações importantes sobre a comutação por falha.
 - Consulte o artigo Registo e monitorização do balanceador de carga de rede de encaminhamento interno para obter informações sobre a configuração do registo e da monitorização para balanceadores de carga de rede de encaminhamento interno.
 - Consulte o artigo Balanceadores de carga de rede de encaminhamento interno e redes ligadas para ver informações sobre o acesso a balanceadores de carga de rede de encaminhamento interno a partir de redes de pares ligadas à sua rede VPC.
 - Consulte o artigo Resolva problemas com balanceadores de carga de rede de encaminhamento interno para ver informações sobre como resolver problemas com o seu balanceador de carga de rede de encaminhamento interno.