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-network
com uma sub-rede personalizada - Regras de firewall que permitem ligações recebidas a VMs de back-end
- Quatro VMs:
- VMs
vm-a1
evm-a2
na zonaus-west1-a
- VMs
vm-c1
evm-c2
na zonaus-west1-c
- VMs
- Dois NEGs zonais de back-end,
neg-a
na zonaus-west1-a
eneg-c
na zonaus-west1-c
. Cada NEG tem os seguintes pontos finais:neg-a
conté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-c
conté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-a
para 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-west1
para 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-ssh
para 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/22
e35.191.0.0/16
- Protocolos e portas: permitir tudo
- Nome:
- Clique em Criar.
gcloud
Crie a regra de firewall
fw-allow-lb-access
para 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,icmp
Crie a regra de firewall
fw-allow-ssh
para 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:22
Crie a regra
fw-allow-health-check
para 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-west1
e 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-ssh
eallow-health-check
- Clique em Editar
- Rede:
lb-network
- Subnet:
lb-subnet
- IP interno principal: efémero (automático)
- IP externo: efémero
em
Interfaces de rede, faça as seguintes alterações e, de seguida, clique em
Concluído:
- 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-a1
e[ZONE]
deus-west1-a
[VM-NAME]
devm-a2
e[ZONE]
deus-west1-a
[VM-NAME]
devm-c1
e[ZONE]
deus-west1-c
[VM-NAME]
devm-c2
e[ZONE]
deus-west1-c
gcloud 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-c
na 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-a
emus-west1-a
com o comandogcloud compute network-endpoint-groups create
:GCE_VM_IP
gcloud compute network-endpoint-groups create neg-a \ --network-endpoint-type=gce-vm-ip \ --zone=us-west1-a \ --network=lb-network \ --subnet=lb-subnet
Adicione 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-c
emus-west1-c
com o comandogcloud compute network-endpoint-groups create
:GCE_VM_IP
gcloud compute network-endpoint-groups create neg-c \ --network-endpoint-type=gce-vm-ip \ --zone=us-west1-c \ --network=lb-network \ --subnet=lb-subnet
Adicione 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=80
Crie 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-west1
Adicione os dois NEGs zonais,
neg-a
eneg-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-a
gcloud compute backend-services add-backend bs-ilb \ --region=us-west1 \ --network-endpoint-group=neg-c \ --network-endpoint-group-zone=us-west1-c
Crie uma regra de encaminhamento para o serviço de back-end. Quando criar a regra de encaminhamento, especifique
10.1.2.99
para 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-ssh
a 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
curl
para 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.html
em cada VM de back-end. As respostas esperadas têm o seguinte aspeto:Page served from: vm-a1
ePage served from: vm-a2
.curl http://10.1.2.99
A regra de encaminhamento está configurada para servir as portas
80
,8008
,8080
e8088
. 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.