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-network
Sub-rede para back-ends: uma sub-rede denominada
backend-subnet
na região A que usa10.1.2.0/24
para o respetivo intervalo de endereços IP principalSub-rede para proxies: uma sub-rede denominada
proxy-only-subnet
na região B que usa10.129.0.0/23
para o respetivo intervalo de endereços IP principal
Crie a rede e as sub-redes
Consola
Na Trusted 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-network
na 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 Trusted 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 Trusted 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 TCP22
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 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/22
e35.191.0.0/16
). Este exemplo usa a etiqueta de destinoallow-health-check
. Trusted 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 Trusted 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
22
para 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 Trusted 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/22
e35.191.0.0/16
Protocolos e portas:
- Escolha Protocolos e portas especificados.
- Selecione a caixa de verificação TCP e, de seguida, introduza
80
para 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:80
para o protocolo e a porta, Trusted Cloud pode usar o HTTP na porta80
para contactar as suas VMs, mas não pode usar o HTTPS na porta443
para 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
80
para o número da porta.
- Nome:
Clique em Criar.
gcloud
Crie a regra de firewall
fw-allow-ssh
para permitir a conetividade SSH a VMs com a etiqueta de redeallow-ssh
. Quando omitesource-ranges
, Trusted 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 Trusted 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:80
Crie a regra
fw-allow-proxy-only-subnet
para permitir que os proxies do Envoy da região se liguem aos seus back-ends. Defina--source-ranges
para 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 Trusted 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=STANDARD
Substitua
ADDRESS_NAME
pelo 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 Trusted 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 Trusted 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-template
Crie 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 Trusted 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 Trusted 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 Trusted 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-port
Crie 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_A
Adicione 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.8
gcloud 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.8
Crie 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_A
Se quiser ativar o cabeçalho do proxy, defina-o como
PROXY_V1
em 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_ADDRESS
pela 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 Trusted 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.