Um balanceador de carga de rede de proxy regional externo é um balanceador de carga regional de camada 4 baseado em proxy que permite executar e escalonar o tráfego do serviço TCP em uma única região atrás de um endereço IP regional externo. Esses 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 gerenciadas (MIG, na sigla em inglês).
Antes de começar, leia a Visão geral do balanceador de carga de rede de proxy externo.
Neste exemplo, usaremos o balanceador de carga para distribuir o tráfego TCP entre
as VMs de back-end em dois grupos gerenciados de instâncias zonais na região A. Para o propósito deste exemplo, o serviço é um conjunto de servidores Apache configurados para responder na porta 110. Muitos navegadores não permitem a porta 110, portanto, a seção de teste usa curl.
Neste exemplo, você configura a implantação mostrada no diagrama a seguir.
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) precisam estar na mesma região.
Permissões
Para seguir as instruções deste guia, você precisa ser capaz de criar instâncias e modificar uma rede em um projeto. É necessário ser um Proprietário ou Editor de projeto, ou ter todos os seguintes papéis do IAM do Compute Engine:
| Tarefa | Papel necessário | 
|---|---|
| Criar redes, sub-redes e componentes do balanceador de carga | Administrador de rede do Compute
       ( roles/compute.networkAdmin) | 
| Adicionar e remover regras de firewall | Administrador de segurança do Compute
       ( roles/compute.securityAdmin) | 
| Criar instâncias | Administrador da instância do Compute
       ( roles/compute.instanceAdmin) | 
Para mais informações, consulte estes guias:
Configurar a rede e as sub-redes
Você precisa de uma rede VPC compartilhada com duas sub-redes: uma para os back-ends do balanceador de carga e outra para os proxies do balanceador de carga. Esse balanceador de carga é regional. O tráfego na rede VPC será direcionado ao balanceador de carga se a origem do tráfego estiver em uma sub-rede na mesma região que o balanceador de carga.
Neste exemplo, usamos a seguinte rede VPC, região e sub-redes:
- Rede: uma rede VPC de modo personalizado chamada - lb-network
- Sub-rede para back-ends: uma sub-rede chamada - backend-subnetem Região A que usa- 10.1.2.0/24como o intervalo de endereços IP principal
- Sub-rede para proxies: uma sub-rede chamada - proxy-only-subnetno Região B que usa- 10.129.0.0/23como o intervalo de endereços IP principal
Criar a rede e as sub-redes
Console
- No console do Google Cloud , acesse a página Redes VPC. 
- Clique em Criar rede VPC. 
- Em Nome, insira - lb-network.
- Na seção Sub-redes, defina o Modo de criação da sub-rede como Personalizado. 
- Crie uma sub-rede para os back-ends do balanceador de carga. Na seção Nova sub-rede, insira as informações a seguir: - Name: backend-subnet
- Região: REGION_A
- Intervalo de endereços IP: 10.1.2.0/24
 
- Name: 
- 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ão- REGION_A, use o comando- gcloud compute networks subnets create:- gcloud compute networks subnets create backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=REGION_A
Criar a sub-rede somente proxy
Uma sub-rede somente proxy fornece um conjunto de endereços IP que o Google usa para executar proxies Envoy em seu nome. Os proxies encerram as conexões do cliente e criam novas conexões com os back-ends.
Essa sub-rede somente proxy é usada por todos os balanceadores de carga baseados no Envoy na
Região A da rede VPC lb-network.
Console
Se você estiver usando o Google Cloud console, poderá esperar e criar a sub-rede somente proxy depois na página Balanceamento de carga.
Se você quiser criar a sub-rede somente proxy agora, siga estas etapas:
- No console do Google Cloud , acesse a página Redes VPC. 
- Clique no nome da rede VPC: - lb-network.
- Clique em Add subnet. 
- Em Nome, insira - proxy-only-subnet.
- Em Região, selecione - REGION_A.
- Defina Finalidade como Proxy gerenciado regional. 
- Em Intervalo de endereços IP, insira - 10.129.0.0/23.
- Clique em Adicionar. 
gcloud
Para criar a sub-rede somente 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, você cria as regras de firewall a seguir:
- fw-allow-ssh: uma regra de entrada, aplicável às instâncias cuja carga está sendo balanceada, que permite a conectividade SSH de entrada na porta TCP- 22proveniente de qualquer endereço. Escolha um intervalo de IP de origem mais restritivo para esta regra. Por exemplo, é possível especificar apenas os intervalos de IP do sistema do qual você inicia sessões SSH. Neste exemplo, usamos a tag de destino- allow-ssh.
- fw-allow-health-check: uma regra de entrada, aplicável às instâncias submetidas a balanceamento de carga, que permite todo o tráfego TCP dos sistemas de verificação de integridade do Google Cloud(em- 130.211.0.0/22e- 35.191.0.0/16). Este exemplo usa a tag de destino- allow-health-check.
- fw-allow-proxy-only-subnet. uma regra de entrada que permite que as conexões da sub-rede somente proxy alcancem os back-ends.
Sem essas regras de firewall, a regra padrão de negação de entrada bloqueará o tráfego que chega para as instâncias de back-end.
As tags de destino definem as instâncias de back-end. Sem as tags de destino, as regras de firewall se aplicam a todas as instâncias de back-end na rede VPC. Ao criar as VMs de back-end, inclua as tags de destino especificadas, conforme mostrado em Criar um grupo gerenciado de instâncias.
Console
- No console Google Cloud , acesse a página Políticas de firewall. 
- Clique em Criar regra de firewall novamente para criar uma regra que autorize conexões SSH de entrada. Preencha os seguintes campos: - Name: fw-allow-ssh
- Rede: lb-network
- Direção do tráfego: entrada
- Ação na correspondência: permitir
- Destinos: tags de destino especificadas
- Tags de meta: allow-ssh
- Filtro de origem: intervalos IPv4
- Intervalos IPv4 de origem: 0.0.0.0/0
- Protocolos e portas:
- Escolha Protocolos e portas especificados.
- Marque a caixa de seleção tcp e insira 22como o número da porta.
 
 
- Name: 
- Clique em Criar. 
- Clique em Criar regra de firewall pela segunda vez para criar a regra que permite as verificações de integridade doGoogle Cloud : - Nome: fw-allow-health-check
- Rede: lb-network
- Direção do tráfego: entrada
- Ação na correspondência: permitir
- Destinos: tags de destino especificadas
- Tags de meta: allow-health-check
- Filtro de origem: intervalos IPv4
- Intervalos IPv4 de origem: 130.211.0.0/22e35.191.0.0/16
- Protocolos e portas: - Escolha Protocolos e portas especificados.
- Marque a caixa de seleção tcp e insira 80como o número da porta.
 - Como prática recomendada, limite esta regra somente aos protocolos e portas que correspondem aos usados por sua verificação de integridade. Se você usar - tcp:80para o protocolo e a porta, Google Cloud poderá usar HTTP na porta- 80para entrar em contato com suas VMs, mas não poderá usar HTTPS na porta- 443para entrar em contato com elas.
 
- Nome: 
- Clique em Criar. 
- Clique em Criar regra de firewall uma terceira vez para criar a regra que permite que os servidores proxy do balanceador de carga se conectem aos back-ends: - Name: fw-allow-proxy-only-subnet
- Rede: lb-network
- Direção do tráfego: entrada
- Ação na correspondência: permitir
- Destinos: tags de destino especificadas
- Tags de meta: 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.
- Marque a caixa de seleção tcp e insira 80como o número da porta.
 
 
- Name: 
- Clique em Criar. 
gcloud
- Crie a regra de firewall - fw-allow-sshque permita a conectividade SSH para VMs com a tag de rede- allow-ssh. Quando você omite- source-ranges, oGoogle Cloud interpreta a regra como sendo 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-checkpara permitir verificações de integridade do Google Cloud. Neste exemplo, é permitido todo o tráfego TCP de sondagens de verificação de integridade. No entanto, é possível configurar um conjunto mais restrito de portas para atender às 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-subnetpara permitir que os proxies Envoy da região se conectem aos seus back-ends. Defina- --source-rangescomo os intervalos alocados da sua sub-rede somente 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.
Console
- No console do Google Cloud , acesse a página Reservar um endereço estático. 
- Escolha um nome para o novo endereço. 
- Em Nível de serviço de rede, selecione Padrão. 
- Em Versão IP, selecione IPv4. Os endereços IPv6 não são aceitos. 
- Em Tipo, selecione Regional. 
- Em Região, selecione - REGION_A.
- Deixe a opção Anexado a definida como Nenhum. Depois de criar o balanceador de carga, esse endereço IP será anexado à regra de encaminhamento do balanceador de carga. 
- Clique em Reservar para reservar 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_NAMEpelo nome que você quer chamar com esse endereço.
- Para ver o resultado, use o comando - gcloud compute addresses describe:- gcloud compute addresses describe ADDRESS_NAME 
Criar um grupo gerenciado de instâncias
Nesta seção, mostramos como criar dois back-ends de grupos gerenciados de instâncias (MIG, na sigla em inglês) na região A para o balanceador de carga. O MIG fornece instâncias de VM 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 o tráfego HTTP, mas O software Apache é normalmente usado para testes.
Console
Criar um modelo de instância
- No console do Google Cloud , acesse a página Modelos de instância. 
- Clique em Criar modelo de instância. 
- Em Nome, insira - ext-reg-tcp-proxy-backend-template.
- Verifique se Disco de inicialização está definido como uma imagem Debian, como Debian GNU/Linux 12 (bookworm): Estas instruções usam comandos que estão disponíveis apenas no Debian, como - apt-get.
- Clique em Opções avançadas. 
- Clique em Rede e configure os seguintes campos: - Em Tags de rede, insira allow-ssh,allow-health-checkeallow-proxy-only-subnet.
- Em Interfaces de rede, selecione o seguinte:
- Rede: lb-network
- Sub-rede: backend-subnet
 
- Rede: 
 
- Em Tags de rede, insira 
- Clique em Gerenciamento. Insira o script a seguir no campo Script de inicialização: - #! /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. 
Criar um grupo gerenciado de instâncias
- No console Google Cloud , acesse a página Grupos de instâncias. 
- Clique em Criar grupo de instâncias. 
- Selecione Novo grupo gerenciado de instâncias (sem estado). Para mais informações, consulte Criar um MIG com discos com estado. 
- Em Nome, insira - mig-a.
- Em Local, selecione Zona única. 
- Em Região, selecione - REGION_A.
- Em Zona, selecione - ZONE_A.
- Em Modelo de instância, selecione - ext-reg-tcp-proxy-backend-template.
- Especifique o número de instâncias que você quer criar no grupo. - Neste exemplo, especifique as seguintes opções em Escalonamento automático: - Em Modo de escalonamento automático, selecione Off:do not autoscale.
- Em Número máximo de instâncias, insira 2.
 
- Em Modo de escalonamento automático, selecione 
- Em Mapeamento de portas, clique em Adicionar porta. - Em Nome da porta, insira tcp80.
- Em Número da porta, digite 80.
 
- Em Nome da porta, insira 
- Clique em Criar. 
- Para criar um segundo grupo de instâncias gerenciadas, repita as etapas Criar um grupo de instâncias gerenciadas e use as configurações a seguir: - Name: mig-b
- Zona: ZONE_B
 - Mantenha todas as outras configurações iguais. 
- Name: 
gcloud
As instruções da Google Cloud CLI neste guia pressupõem que você esteja usando o Cloud Shell ou outro ambiente com bash instalado.
- Para criar um modelo de instância de VM com o 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'
- Criar um grupo gerenciado de instâncias na zona - ZONE_A:- gcloud compute instance-groups managed create mig-a \ --zone=ZONE_A \ --size=2 \ --template=ext-reg-tcp-proxy-backend-template
- Criar um grupo gerenciado de instâncias na zona - ZONE_B:- gcloud compute instance-groups managed create mig-b \ --zone=ZONE_B \ --size=2 \ --template=ext-reg-tcp-proxy-backend-template
Configurar o balanceador de carga
Console
Iniciar a configuração
- No console do Google Cloud , acesse a página Balanceamento de carga. 
- Clique em Criar balanceador de carga.
- Em Tipo de balanceador de carga, selecione Balanceador de carga de rede (TCP/UDP/SSL) e clique em Próxima.
- Em Proxy ou passagem, selecione Balanceador de carga de proxy e clique em Próxima.
- Em Voltado ao público ou interno, selecione Voltado ao público (externo) e clique em Próxima.
- Em Implantação global ou de região única, selecione Melhor para cargas de trabalho regionais e clique em Próxima.
- Clique em Configurar.
Configuração básica
- Em Nome, insira my-ext-tcp-lb.
- Em Região, selecione REGION_A.
- Em Rede, selecione lb-network.
Reservar uma sub-rede somente proxy
- Clique em Reservar.
- No campo Nome, use proxy-only-subnet.
- No campo Intervalo de endereços IP, insira 10.129.0.0/23.
- Clique em Adicionar.
Configurar 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 nomeada, insira tcp80.
- Configure a verificação de integridade:
- Na lista Verificação de integridade, selecione Criar verificação de integridade.
- No campo Nome, use tcp-health-check.
- Na lista Protocolo, selecione TCP.
- No campo Porta, digite 80.
- Clique em Criar.
 
- Configure o primeiro back-end:
- Em Novo back-end, selecione o grupo de instâncias mig-a.
- Em Números de portas, insira 80.
- Mantenha os valores padrão restantes e clique em Concluído.
 
- Em Novo back-end, selecione o grupo de instâncias 
- Configure o segundo back-end:
- Clique em Adicionar back-end.
- Em Novo back-end, selecione o grupo de instâncias mig-b.
- Em Números de portas, insira 80.
- Mantenha os valores padrão restantes e clique em Concluído.
 
- Mantenha os valores padrão restantes e clique em Salvar.
- No console Google Cloud , verifique se há uma marca de seleção ao lado de Configuração de back-end. Se não houver, verifique se você concluiu todas as etapas.
Configure o front-end
- Clique em Configuração de front-end.
- Em Nome, insira ext-reg-tcp-forwarding-rule.
- Em Nível de serviço de rede, selecione Padrão.
- Em Endereço IP, selecione o endereço IP reservado anteriormente: LB_IP_ADDRESS
- Em Número da porta, digite 110. A regra de encaminhamento encaminha pacotes com uma porta de destino correspondente.
- Em Protocolo de proxy, selecione Desativado porque o protocolo PROXY não funciona com o software Apache HTTP Server. Para mais informações, consulte Protocolo de proxy.
- Clique em Concluído.
- No console Google Cloud , verifique se há uma marca de seleção ao lado de Configuração de front-end. Se não houver, verifique se você concluiu todas as etapas anteriores.
Revisar e finalizar
- Clique em Analisar e finalizar.
- Revise suas configurações do balanceador de carga.
- Opcional: clique em Código equivalente para ver a solicitação da API REST usada para criar o balanceador de carga.
- Clique em Criar.
gcloud
- Criar uma verificação de integridade 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
- Adicionar grupos de instâncias ao 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 proxy, defina-o como - PROXY_V1em vez de- NONE. Neste exemplo, não ative o Protocolo de PROXY, porque ele não funciona com o software servidor HTTP Apache. Para mais informações, consulte Protocolo de proxy.
- Crie a regra de encaminhamento. Para - --ports, especifique um único número de porta de 1-65535. Este exemplo usa a porta- 110. A regra de encaminhamento 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
Testar o balanceador de carga
Agora que você configurou o balanceador de carga, é possível testar o envio de tráfego para o endereço IP dele.
- Anote o endereço IP do balanceador de carga. - Para encontrar o endereço IPv4, execute o seguinte comando: - gcloud compute addresses describe ADDRESS_NAME 
- Envie tráfego para o balanceador de carga executando o comando a seguir. Substitua - LB_IP_ADDRESSpelo endereço IPv4 do balanceador de carga:- curl -m1 LB_IP_ADDRESS:9090 
Outras opções de configuração
Nesta seção, o exemplo é detalhado para fornecer outras opções de configuração. Todas as tarefas são opcionais. É possível realizá-las em qualquer ordem.
Ativar a afinidade de sessão
A configuração de exemplo cria um serviço de back-end sem afinidade da sessão.
Nestes procedimentos, você verá um exemplo de como atualizar um serviço de back-end para um balanceador de carga criado anteriormente. Com isso, o serviço de back-end usa a afinidade de IP do cliente ou a afinidade de cookie gerado.
Quando a afinidade de IP do cliente está ativada, o balanceador de carga direciona as solicitações de um determinado cliente para a mesma VM de back-end. Isso é feito com base em um hash criado a partir do endereço IP do cliente e do endereço IP do balanceador de carga (o endereço IP externo de uma regra de encaminhamento externo).
Para ativar a afinidade da sessão de IP do cliente, conclua as etapas a seguir.
Console
- No console do Google Cloud , acesse a página Balanceamento de carga. 
- Clique em Back-ends. 
- Clique em - ext-reg-tcp-proxy-bs(o nome do serviço de back-end que você criou para este exemplo) e, em seguida, clique em Editar.
- Na página Detalhes do serviço de back-end, clique em Configuração avançada. 
- Em Afinidade da 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 da sessão de 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
A seguir
- Converter o balanceador de carga de rede de proxy para IPv6
- Visão geral do balanceador de carga de rede de proxy externo.
- Geração de registros e monitoramento do balanceador de carga de rede.
- Veja como limpar a configuração do balanceador de carga.