Um balanceador de carga de rede de proxy externo regional é um balanceador de carga regional de camada 4 baseado em proxy que lhe permite executar e dimensionar o tráfego de serviço TCP numa única região por detrás de um endereço IP regional externo. Estes balanceadores de carga distribuem o tráfego TCP externo da Internet para back-ends na mesma região.
Este guia contém instruções para configurar um balanceador de carga de rede de proxy externo regional com um back-end de grupo de instâncias gerido (MIG).
Antes de começar, leia a Vista geral do balanceador de carga de rede de proxy externo.
Neste exemplo, vamos usar o balanceador de carga para distribuir o tráfego TCP por VMs de back-end em dois grupos de instâncias geridas zonais na região A. Para efeitos do exemplo, o serviço é um conjunto de servidores Apache configurados para responder na porta 110. Muitos navegadores não permitem a porta 110, pelo que a secção de testes usa curl.
Neste exemplo, configura a implementação apresentada no diagrama seguinte.
Um balanceador de carga de rede de proxy externo regional é um balanceador de carga regional. Todos os componentes do balanceador de carga (grupo de instâncias de back-end, serviço de back-end, proxy de destino e regra de encaminhamento) têm de estar na mesma região.
Autorizações
Para seguir este guia, tem de conseguir criar instâncias e modificar uma rede num projeto. Tem de ser proprietário ou editor do projeto, ou ter todas as funções do IAM do Compute Engine seguintes.
| Tarefa | Função necessária |
|---|---|
| Crie redes, sub-redes e componentes do balanceador de carga | Administrador de rede de Calcular
(roles/compute.networkAdmin) |
| Adicione e remova regras de firewall | Administrador de segurança da computação
(roles/compute.securityAdmin) |
| Crie instâncias | Administrador de instância de computação
(roles/compute.instanceAdmin) |
Para mais informações, consulte os seguintes guias:
Configure a rede e as sub-redes
Precisa de uma rede VPC com duas sub-redes, uma para os back-ends do equilibrador de carga e outra para os proxies do equilibrador de carga. Este balanceador de carga é regional. O tráfego na rede da VPC é encaminhado para o balanceador de carga se a origem do tráfego estiver numa sub-rede na mesma região que o balanceador de carga.
Este exemplo usa a seguinte rede de VPC, região e sub-redes:
Rede: uma rede VPC no modo personalizado denominada
lb-networkSub-rede para back-ends: uma sub-rede denominada
backend-subnetna região A que usa10.1.2.0/24para o respetivo intervalo de endereços IP principalSub-rede para proxies: uma sub-rede denominada
proxy-only-subnetna região B que usa10.129.0.0/23para o respetivo intervalo de endereços IP principal
Crie a rede e as sub-redes
Consola
Na Google Cloud consola, aceda à página Redes VPC.
Clique em Criar rede de VPC.
Em Nome, introduza
lb-network.Na secção Sub-redes, defina o Modo de criação de sub-redes como Personalizado.
Crie uma sub-rede para os back-ends do balanceador de carga. Na secção Nova sub-rede, introduza as seguintes informações:
- Nome:
backend-subnet - Região:
REGION_A - Intervalo de endereços IP:
10.1.2.0/24
- Nome:
Clique em Concluído.
Clique em Criar.
gcloud
Para criar a rede VPC personalizada, use o comando
gcloud compute networks create:gcloud compute networks create lb-network --subnet-mode=custom
Para criar uma sub-rede na rede
lb-networkna regiãoREGION_A, use o comandogcloud compute networks subnets create:gcloud compute networks subnets create backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=REGION_A
Crie a sub-rede só de proxy
Uma sub-rede apenas de proxy fornece um conjunto de endereços IP que a Google usa para executar proxies do Envoy em seu nome. Os proxies terminam as ligações do cliente e criam novas ligações aos backends.
Esta sub-rede apenas de proxy é usada por todos os equilibradores de carga baseados no Envoy na região A da rede VPC lb-network.
Consola
Se estiver a usar a Google Cloud consola, pode aguardar e criar a sub-rede apenas de proxy mais tarde na página Equilíbrio de carga.
Se quiser criar a sub-rede apenas de proxy agora, siga estes passos:
Na Google Cloud consola, aceda à página Redes VPC.
Clique no nome da rede da VPC:
lb-network.Clique em Adicionar sub-rede.
Em Nome, introduza
proxy-only-subnet.Para Região, selecione
REGION_A.Defina Purpose como Regional Managed Proxy.
Para o Intervalo de endereços IP, introduza
10.129.0.0/23.Clique em Adicionar.
gcloud
Para criar a sub-rede só de proxy, use o comando gcloud compute networks subnets
create:
gcloud compute networks subnets create proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=REGION_A \
--network=lb-network \
--range=10.129.0.0/23
Crie regras de firewall
Neste exemplo, cria as seguintes regras de firewall:
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 TCP22a 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 inicia sessões SSH. Este exemplo usa a etiqueta de destinoallow-ssh.fw-allow-health-check. Uma regra de entrada, aplicável às instâncias com balanceamento de carga, que permite todo o tráfego TCP dos sistemas de verificação de funcionamento (em130.211.0.0/22e35.191.0.0/16). Este exemplo usa a etiqueta de destinoallow-health-check. Google Cloudfw-allow-proxy-only-subnet. Uma regra de entrada que permite que as ligações da sub-rede só de proxy alcancem os back-ends.
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.
As etiquetas de destino definem as instâncias de back-end. Sem as etiquetas de destino, as regras da firewall aplicam-se a todas as instâncias de back-end na rede VPC. Quando criar as VMs de back-end, certifique-se de que inclui as etiquetas de destino especificadas, conforme mostrado em Crie um grupo de instâncias gerido.
Consola
Na Google Cloud consola, aceda à página Políticas de firewall.
Clique em Criar regra de firewall para criar a regra que permite ligações SSH de entrada. Preencha os seguintes campos:
- Nome:
fw-allow-ssh - Rede:
lb-network - Direção do tráfego: entrada
- Ação na correspondência: Permitir
- Objetivos: etiquetas de destino 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.
- Selecione a caixa de verificação TCP e, de seguida, introduza
22para o número da porta.
- Nome:
Clique em Criar.
Clique em Criar regra de firewall uma segunda vez para criar a regra que permite as Google Cloud verificações de funcionamento:
- Nome:
fw-allow-health-check - Rede:
lb-network - Direção do tráfego: entrada
- Ação na correspondência: Permitir
- Objetivos: etiquetas de destino 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:
- Escolha Protocolos e portas especificados.
- Selecione a caixa de verificação TCP e, de seguida, introduza
80para o número da porta.
Como prática recomendada, limite esta regra apenas aos protocolos e às portas que correspondam aos usados pela sua verificação de funcionamento. Se usar
tcp:80para o protocolo e a porta, Google Cloud pode usar o HTTP na porta80para contactar as suas VMs, mas não pode usar o HTTPS na porta443para as contactar.
- Nome:
Clique em Criar.
Clique em Criar regra de firewall pela terceira vez para criar a regra que permite que os servidores proxy do balanceador de carga se liguem aos back-ends:
- Nome:
fw-allow-proxy-only-subnet - Rede:
lb-network - Direção do tráfego: entrada
- Ação na correspondência: Permitir
- Objetivos: etiquetas de destino especificadas
- Etiquetas de segmentação:
allow-proxy-only-subnet - Filtro de origem: intervalos IPv4
- Intervalos IPv4 de origem:
10.129.0.0/23 - Protocolos e portas:
- Escolha Protocolos e portas especificados.
- Selecione a caixa de verificação TCP e, de seguida, introduza
80para o número da porta.
- Nome:
Clique em Criar.
gcloud
Crie 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. Este exemplo permite todo o tráfego TCP de sondas de verificação de estado. No entanto, pode configurar um conjunto mais restrito de portas para satisfazer as suas necessidades.gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80Crie a regra
fw-allow-proxy-only-subnetpara permitir que os proxies do Envoy da região se liguem aos seus back-ends. Defina--source-rangespara os intervalos atribuídos da sua sub-rede só de proxy. Neste exemplo,10.129.0.0/23.gcloud compute firewall-rules create fw-allow-proxy-only-subnet \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.129.0.0/23 \ --target-tags=allow-proxy-only-subnet \ --rules=tcp:80
Reserve o endereço IP do balanceador de carga
Reserve um endereço IP estático para o balanceador de carga.
Consola
Na Google Cloud consola, aceda à página Reserve um endereço estático.
Escolha um nome para a nova morada.
Para Nível de serviço de rede, selecione Padrão.
Para Versão do IP, selecione IPv4. Os endereços IPv6 não são suportados.
Para Tipo, selecione Regional.
Para Região, selecione
REGION_A.Deixe a opção Anexado a definida como Nenhum. Depois de criar o balanceador de carga, este endereço IP é anexado à regra de encaminhamento do balanceador de carga.
Clique em Reservar para reservar o endereço IP.
gcloud
Para reservar um endereço IP externo estático, use o comando
gcloud compute addresses create:gcloud compute addresses create ADDRESS_NAME \ --region=REGION_A \ --network-tier=STANDARDSubstitua
ADDRESS_NAMEpelo nome que quer dar a esta morada.Para ver o resultado, use o comando
gcloud compute addresses describe:gcloud compute addresses describe ADDRESS_NAME
Crie um grupo de instâncias geridas
Esta secção mostra como criar dois back-ends de grupo de instâncias gerido (MIG) na região A para o equilibrador de carga. O MIG fornece instâncias de VMs que executam os servidores Apache de back-end para este exemplo. Normalmente, um balanceador de carga de rede de proxy externo regional não é usado para tráfego HTTP, mas o software Apache é usado frequentemente para testes.
Consola
Crie um modelo de instância
Na Google Cloud consola, aceda à página Modelos de instâncias.
Clique em Criar modelo de instância.
Em Nome, introduza
ext-reg-tcp-proxy-backend-template.Certifique-se de que o Disco de arranque está definido para uma imagem Debian, como Debian GNU/Linux 12 (bookworm). Estas instruções usam comandos que só estão disponíveis no Debian, como
apt-get.Clique em Opções avançadas.
Clique em Rede e configure os seguintes campos:
- Para etiquetas de rede, introduza
allow-ssh,allow-health-check, eallow-proxy-only-subnet. - Para Interfaces de rede, selecione o seguinte:
- Rede:
lb-network - Subnet:
backend-subnet
- Rede:
- Para etiquetas de rede, introduza
Clique em Gestão. Introduza o seguinte script no campo Script de arranque:
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl 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 systemctl restart apache2
Clique em Criar.
Crie um grupo de instâncias geridas
Na Google Cloud consola, aceda à página Grupos de instâncias.
Clique em Criar grupo de instâncias.
Selecione Novo grupo de instâncias gerido (sem estado). Para mais informações, consulte o artigo Crie um MIG com discos com estado.
Em Nome, introduza
mig-a.Para Localização, selecione Zona única.
Para Região, selecione
REGION_A.Para Zona, selecione
ZONE_A.Para Modelo de instância, selecione
ext-reg-tcp-proxy-backend-template.Especifique o número de instâncias que quer criar no grupo.
Para este exemplo, especifique as seguintes opções para o dimensionamento automático:
- Para o Modo de ajuste automático de escala, selecione
Off:do not autoscale. - Para Número máximo de instâncias, introduza
2.
- Para o Modo de ajuste automático de escala, selecione
Para Mapeamento de portas, clique em Adicionar porta.
- Em Nome da portabilidade, introduza
tcp80. - Em Número da porta, introduza
80.
- Em Nome da portabilidade, introduza
Clique em Criar.
Para criar um segundo grupo de instâncias gerido, repita os passos Crie um grupo de instâncias gerido e use as seguintes definições:
- Nome:
mig-b - Zona:
ZONE_B
Mantenha todas as outras definições inalteradas.
- Nome:
gcloud
As instruções da CLI do Google Cloud neste guia pressupõem que está a usar a Cloud Shell ou outro ambiente com o bash instalado.
Para criar um modelo de instância de VM com um servidor HTTP, use o comando
gcloud compute instance-templates create:gcloud compute instance-templates create ext-reg-tcp-proxy-backend-template \ --region=REGION_A \ --network=lb-network \ --subnet=backend-subnet \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl 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 systemctl restart apache2'Crie um grupo de instâncias geridas na zona
ZONE_A:gcloud compute instance-groups managed create mig-a \ --zone=ZONE_A \ --size=2 \ --template=ext-reg-tcp-proxy-backend-templateCrie um grupo de instâncias geridas na zona
ZONE_B:gcloud compute instance-groups managed create mig-b \ --zone=ZONE_B \ --size=2 \ --template=ext-reg-tcp-proxy-backend-template
Configure o balanceador de carga
Consola
Inicie a configuração
Na Google Cloud consola, aceda à página Equilíbrio de carga.
- Clique em Criar equilibrador de carga.
- Para Tipo de balanceador de carga, selecione Balanceador de carga de rede (TCP/UDP/SSL) e clique em Seguinte.
- Para Proxy ou passagem, selecione Proxy de balanceamento de carga e clique em Seguinte.
- Para Público ou interno, selecione Público (externo) e clique em Seguinte.
- Para a Implementação global ou de região única, selecione Melhor para cargas de trabalho regionais e clique em Seguinte.
- Clique em Configurar.
Configuração básica
- Em Nome, introduza
my-ext-tcp-lb. - Para Região, selecione
REGION_A. - Para Rede, selecione
lb-network.
Reserve uma sub-rede só de proxy
- Clique em Reservar.
- No campo Nome, introduza
proxy-only-subnet. - No campo Intervalo de endereços IP, introduza
10.129.0.0/23. - Clique em Adicionar.
Configure os back-ends
- Clique em Configuração de back-end.
- Na lista Tipo de back-end, selecione Grupo de instâncias.
- Na lista Protocolo, selecione TCP.
- No campo Porta com nome, introduza
tcp80. - Configure a verificação de estado:
- Na lista Verificação de funcionamento, selecione Criar uma verificação de funcionamento.
- No campo Nome, introduza
tcp-health-check. - Na lista Protocolo, selecione TCP.
- No campo Porta, introduza
80. - Clique em Criar.
- Configure o primeiro back-end:
- Para Novo back-end, selecione o grupo de instâncias
mig-a. - Para Transferir números, introduza
80. - Mantenha os restantes valores predefinidos e, de seguida, clique em Concluído.
- Para Novo back-end, selecione o grupo de instâncias
- Configure o segundo back-end:
- Clique em Adicionar back-end.
- Para Novo back-end, selecione o grupo de instâncias
mig-b. - Para Transferir números, introduza
80. - Mantenha os restantes valores predefinidos e, de seguida, clique em Concluído.
- Mantenha os restantes valores predefinidos e, de seguida, clique em Guardar.
- Na Google Cloud consola, verifique se existe uma marca de verificação junto a Configuração de back-end. Caso contrário, verifique novamente se concluiu todos os passos.
Configure a interface
- Clique em Configuração do front-end.
- Em Nome, introduza
ext-reg-tcp-forwarding-rule. - Para Nível de serviço de rede, selecione Padrão.
- Para Endereço IP, selecione o endereço IP reservado anteriormente: LB_IP_ADDRESS
- Em Número da porta, introduza
110. A regra de encaminhamento apenas encaminha pacotes com uma porta de destino correspondente. - Para o protocolo PROXY, selecione Desativado porque o protocolo PROXY não funciona com o software Apache HTTP Server. Para mais informações, consulte o protocolo PROXY.
- Clique em Concluído.
- Na Google Cloud consola, verifique se existe uma marca de verificação junto a Configuração do front-end. Caso contrário, verifique novamente se concluiu todos os passos anteriores.
Reveja e finalize
- Clique em Rever e finalizar.
- Reveja as definições de configuração do equilibrador de carga.
- Opcional: clique em Código equivalente para ver o pedido da API REST que é usado para criar o balanceador de carga.
- Clique em Criar.
gcloud
Crie uma verificação de funcionamento regional:
gcloud compute health-checks create tcp tcp-health-check \ --region=REGION_A \ --use-serving-portCrie um serviço de back-end:
gcloud compute backend-services create ext-reg-tcp-proxy-bs \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=TCP \ --port-name=tcp80 \ --region=REGION_A \ --health-checks=tcp-health-check \ --health-checks-region=REGION_AAdicione grupos de instâncias ao seu serviço de back-end:
gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \ --region=REGION_A \ --instance-group=mig-a \ --instance-group-zone=ZONE_A \ --balancing-mode=UTILIZATION \ --max-utilization=0.8gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \ --region=REGION_A \ --instance-group=mig-b \ --instance-group-zone=ZONE_B \ --balancing-mode=UTILIZATION \ --max-utilization=0.8Crie um proxy TCP de destino:
gcloud compute target-tcp-proxies create ext-reg-tcp-target-proxy \ --backend-service=ext-reg-tcp-proxy-bs \ --proxy-header=NONE \ --region=REGION_ASe quiser ativar o cabeçalho do proxy, defina-o como
PROXY_V1em vez deNONE. Neste exemplo, não ative o protocolo PROXY porque não funciona com o software do servidor HTTP Apache. Para mais informações, consulte o protocolo PROXY.Crie a regra de encaminhamento. Para
--ports, especifique um único número de porta entre 1 e 65535. Este exemplo usa a porta110. A regra de encaminhamento apenas encaminha pacotes com uma porta de destino correspondente.gcloud compute forwarding-rules create ext-reg-tcp-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=lb-network \ --region=REGION_A \ --target-tcp-proxy=ext-reg-tcp-target-proxy \ --target-tcp-proxy-region=REGION_A \ --address=LB_IP_ADDRESS \ --ports=110
Teste o balanceador de carga
Agora que configurou o equilibrador de carga, pode testar o envio de tráfego para o endereço IP do equilibrador de carga.
Obtenha o endereço IP do balanceador de carga.
Para obter o endereço IPv4, execute o seguinte comando:
gcloud compute addresses describe ADDRESS_NAME
Envie tráfego para o balanceador de carga executando o seguinte comando. Substitua
LB_IP_ADDRESSpela morada IPv4 do seu equilibrador de carga.curl -m1 LB_IP_ADDRESS:9090
Opções de configuração adicionais
Esta secção expande o exemplo de configuração para oferecer opções de configuração alternativas e adicionais. Todas as tarefas são opcionais. Pode realizá-las por qualquer ordem.
Ative a afinidade de sessão
A configuração de exemplo cria um serviço de back-end sem afinidade de sessão.
Estes procedimentos mostram como atualizar um serviço de back-end para o exemplo de equilibrador de carga criado anteriormente, de modo que o serviço de back-end use a afinidade de IP do cliente ou a afinidade de cookies gerada.
Quando a afinidade de IP do cliente está ativada, o balanceador de carga direciona os pedidos de um cliente específico para a mesma VM de back-end com base num hash criado a partir do endereço IP do cliente e do endereço IP do balanceador de carga (o endereço IP interno de uma regra de encaminhamento interno).
Para ativar a afinidade de sessão de IP do cliente, conclua os seguintes passos.
Consola
Na Google Cloud consola, aceda à página Equilíbrio de carga.
Clique em Back-ends.
Clique em
ext-reg-tcp-proxy-bs(o nome do serviço de back-end que criou para este exemplo) e, de seguida, clique em Editar.Na página Detalhes do serviço de back-end, clique em Configuração avançada.
Para Afinidade de sessão, selecione IP do cliente.
Clique em Atualizar.
gcloud
Para atualizar o serviço de back-end ext-reg-tcp-proxy-bs e especificar a afinidade de sessão do IP do cliente, use o comando gcloud compute backend-services update ext-reg-tcp-proxy-bs:
gcloud compute backend-services update ext-reg-tcp-proxy-bs \
--region=REGION_A \
--session-affinity=CLIENT_IP
O que se segue?
- Converta o Network Load Balancer de proxy para IPv6
- Vista geral do balanceador de carga de rede de proxy externo.
- Registo e monitorização do balanceador de carga de rede por proxy.
- Limpe a configuração do balanceador de carga.