O balanceador de carga de proxy TCP regional interno é um balanceador de carga de Camada 4 regional e baseado em proxy. Com ele, é possível executar e escalonar o tráfego do serviço TCP atrás de um endereço IP interno acessível apenas a clientes na mesma rede VPC ou aos clientes conectados à rede VPC.
Este guia contém instruções para configurar um balanceador de carga de rede de proxy interno regional com um back-end de grupo de endpoints de rede (NEG, na sigla em inglês). Antes de começar:
- Leia a Visão geral do balanceador de carga de rede de proxy interno regional
- Leia a visão geral de NEGs zonais.
Visão geral
Neste exemplo, vamos usar o balanceador de carga para distribuir o tráfego TCP entre
VMs de back-end em dois NEGs zonais na região REGION_A
. Para o propósito deste
exemplo, o serviço é um conjunto de servidores Apache
configurados para responder na porta 80
.
Neste exemplo, você configura o seguinte:
O balanceador de carga de rede do proxy interno regional é regional. Todos os componentes do balanceador de carga (grupos 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 componentes do balanceador de carga, sub-redes e redes | Administrador de rede |
Adicionar e remover regras de firewall | Administrador de segurança |
Criar instâncias | Administrador da instância da computação |
Para mais informações, consulte estes guias:
Configurar a rede e as sub-redes
Você precisa de uma rede VPC com duas sub-redes: uma para os back-ends do balanceador de carga e a outra para os proxies do balanceador de carga. Os balanceadores de carga de rede de proxy interno regional são regionais. 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-subnet
na regiãoREGION_A
usa10.1.2.0/24
como o intervalo de IP primário.Sub-rede para proxies: uma sub-rede chamada
proxy-only-subnet
na regiãoREGION_A
usa10.129.0.0/23
como o intervalo de IP primário.
Como configurar a rede e a sub-rede para back-ends
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 de sub-rede como Personalizado.
- 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
Crie a rede VPC personalizada com o comando
gcloud compute networks create
:gcloud compute networks create lb-network --subnet-mode=custom
Crie uma sub-rede na rede
lb-network
na regiãoREGION_A
com 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
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 regionais baseados no Envoy na
região REGION_A
da rede VPC lb-network
.
Console
Se você estiver usando o console do Google Cloud, é possível 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 compartilhada:
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, digite
10.129.0.0/23
.Clique em Adicionar.
gcloud
Crie a sub-rede somente proxy com 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-health-check
: uma regra de entrada, aplicável às instâncias do Google Cloud submetidas a balanceamento de carga, que permite o tráfego do balanceador de carga e dos sistemas de verificação de integridade do Google Cloud (130.211.0.0/22
e35.191.0.0/16
). Este exemplo usa a tag de destinoallow-health-check
para identificar as VMs de back-end às quais ela deve ser aplicada.fw-allow-ssh
: uma regra de entrada que permite a conectividade SSH de entrada na porta TCP 22 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 tagallow-ssh
de destino para identificar as VMs a que isso se aplicará.fw-allow-proxy-only-subnet
: cria uma regra de permissão de entrada de firewall para a sub-rede somente proxy para permitir que o balanceador de carga se comunique com instâncias de back-end na porta TCP80
: Neste exemplo, usamos a tagallow-proxy-only-subnet
de destino para identificar as VMs de back-end a que isso se aplicará.
Console
No Console do Google Cloud, acesse a página políticas de Firewall.
Clique em Criar regra de firewall.
- Informe um Nome de
fw-allow-health-check
. - Em Rede, selecione
lb-network
. - Em Destinos, selecione Tags de destino especificadas.
- Preencha o campo Tags de destino com
allow-health-check
. - Defina Filtro de origem como Intervalos IPv4.
- Defina Intervalos IPv4 de origem como
130.211.0.0/22
e35.191.0.0/16
. - Em Protocolos e portas, selecione Portas e protocolos especificados.
- Marque a caixa de seleção TCP e insira
80
como números de porta. - Clique em Criar.
- Informe um Nome de
Clique em Criar regra de firewall novamente para criar a regra e permitir conexões SSH de entrada:
- Name:
fw-allow-ssh
- Rede:
lb-network
- Prioridade:
1000
- Direção do tráfego: entrada
- Ação se houver 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 e digite:
tcp:22
- Name:
Clique em Criar.
Clique em Criar regra de firewall novamente para criar a regra que permite conexões de entrada da sub-rede somente proxy para os back-ends do Google Cloud:
- Name:
fw-allow-proxy-only-subnet
- Rede:
lb-network
- Prioridade:
1000
- Direção do tráfego: entrada
- Ação se houver 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 e digite:
tcp:80
- Name:
Clique em Criar.
gcloud
Crie a regra
fw-allow-health-check
para permitir que as verificações de integridade do Google Cloud alcancem as instâncias de back-end na porta TCP80
: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:80
Crie a regra de firewall
fw-allow-ssh
que permita a conectividade SSH para VMs com a tag de redeallow-ssh
. Se você omitirsource-ranges
, o Google Cloud interpretará que a regra autoriza a conexão proveniente de 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 uma regra de permissão de entrada de firewall para a sub-rede somente proxy para permitir que o balanceador de carga se comunique com instâncias de back-end na porta TCP
80
:gcloud compute firewall-rules create fw-allow-proxy-only-subnet \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-proxy-only-subnet \ --source-ranges=10.129.0.0/23 \ --rules=tcp:80
Reserve o endereço IP do balanceador de carga
Para reservar um endereço IP interno estático para o balanceador de carga, consulte Reservar um novo endereço IPv4 ou IPv6 interno estático.
Configurar o NEG zonal
Configure um NEG zonal com endpoints do tipo GCE_VM_IP_PORT
na região REGION_A
. Primeiro, crie as VMs. Em seguida, crie um NEG zonal
e adicione os endpoints de rede das VMs ao NEG.
Criar VMs
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
Clique em Criar instância.
Defina o Nome como
vm-a1
.Em Região, selecione
REGION_A
.Para a Zona, consulte
ZONE_A1
.Na seção Disco de inicialização, verifique se Debian GNU/Linux 12 (bookworm) está selecionado para as opções de disco de inicialização. Clique em Escolher para alterar a imagem se necessário.
Clique em Opções avançadas.
Clique em Rede e configure os seguintes campos:
- Em Tags de rede, insira
allow-ssh
,allow-health-check
eallow-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.
Repita as etapas a seguir para criar mais três VMs, usando as seguintes combinações de nome e zona:
- Nome:
vm-a2
, zona:ZONE_A1
- Nome:
vm-c1
, zona:ZONE_A2
- Nome:
vm-c2
, zona:ZONE_A2
- Nome:
gcloud
Crie as VMs executando o comando a seguir duas vezes usando estas combinações para VM_NAME e ZONE. O conteúdo do script é idêntico para as duas VMs.
- VM_NAME:
vm-a1
e ZONE:ZONE_A1
- VM_NAME:
vm-a2
e ZONE:ZONE_A1
- VM_NAME:
vm-c1
e ZONE:ZONE_A2
VM_NAME:
vm-c2
e ZONE:ZONE_A2
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --subnet=backend-subnet \ --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 os NEGs zonais
Console
Para criar um grupo de endpoints de rede zonal:
No console do Google Cloud, acesse a página Grupos de endpoints da rede.
Clique em Criar grupo de endpoints de rede.
Em Nome, insira
zonal-neg-a
.Em Tipo de grupo de endpoints de rede, selecione Grupo de endpoints de rede (Internet).
Em Rede, selecione
lb-network
.Em Sub-rede, selecione
backend-subnet
.Em Zona, selecione
ZONE_A1
.Insira a Porta padrão:
80
.Clique em Criar.
Repita todas as etapas nesta seção para criar um segundo NEG zonal com as seguintes alterações nas configurações:
- Name:
zonal-neg-c
- Zona:
ZONE_A2
- Name:
Adicione endpoints aos NEGs zonais:
No console do Google Cloud, acesse a página Grupos de endpoints da rede.
Clique no Nome do grupo de endpoints da rede criado na etapa anterior (por exemplo,
zonal-neg-a
). Você verá a página Detalhes do grupo de endpoints de rede.Na seção Endpoints da rede neste grupo, clique em Adicionar endpoint da rede. Você verá a página Adicionar endpoint de rede.
Selecione uma Instância de VM (por exemplo,
vm-a1
). O nome, a zona e a sub-rede da VM são exibidos na seção Interface de rede.- Insira o endereço IP do novo endpoint da rede. Clique em Verificar os endereços IP primários e o intervalo de IP do alias em nic0 para o endereço IP.
- Em Tipo de porta, selecione Padrão. O endpoint usa a porta
80
padrão para todos os endpoints no grupo de endpoints da rede. Isso é suficiente para nosso exemplo, porque o servidor Apache está atendendo solicitações na porta80
. - Clique em Criar.
Clique novamente em Adicionar endpoint de rede. Selecione a segunda instância de VM,
vm-a2
, e repita essas etapas para adicionar os endpoints azonal-neg-a
.Repita todas as etapas nesta seção para adicionar endpoints de
vm-c1
evm-c2
azonal-neg-c
.
gcloud
Crie um NEG zonal na zona
ZONE_A1
com endpointsGCE_VM_IP_PORT
.gcloud compute network-endpoint-groups create zonal-neg-a \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=ZONE_A1 \ --network=lb-network \ --subnet=backend-subnet
Especifique o
--default-port
ao criar o NEG ou especifique um número de porta para cada endpoint, conforme mostrado na próxima etapa.Adicione endpoints ao NEG zonal.
gcloud compute network-endpoint-groups update zonal-neg-a \ --zone=ZONE_A1 \ --add-endpoint='instance=vm-a1,port=80' \ --add-endpoint='instance=vm-a2,port=80'
Crie um NEG zonal na zona
ZONE_A2
com endpointsGCE_VM_IP_PORT
.gcloud compute network-endpoint-groups create zonal-neg-c \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=ZONE_A2 \ --network=lb-network \ --subnet=backend-subnet
Especifique o
--default-port
ao criar o NEG ou especifique um número de porta para cada endpoint, conforme mostrado na próxima etapa.Adicione endpoints ao NEG zonal.
gcloud compute network-endpoint-groups update zonal-neg-c \ --zone=ZONE_A2 \ --add-endpoint='instance=vm-c1,port=80' \ --add-endpoint='instance=vm-c2,port=80'
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 Interno e clique em Próxima.
- Em Implantação entre regiões ou 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-int-tcp-lb
. - Em Região, selecione
REGION_A
. - Em Rede, selecione
lb-network
.
Reservar uma sub-rede somente proxy
Para reservar uma sub-rede somente proxy:
- Clique em Reservar sub-rede.
- Em Nome, insira
proxy-only-subnet
. - Em Intervalo de endereços IP, insira
10.129.0.0/23
. - Clique em Adicionar.
Configuração de back-end
- Clique em Configuração de back-end.
- Para o tipo de back-end, selecione Grupo de endpoints da rede na Internet.
- Em Protocol, selecione TCP.
- Configure o primeiro back-end:
- Em Novo back-end, selecione o NEG zonal
zonal-neg-a
. - Mantenha os valores padrão restantes e clique em Concluído.
- Em Novo back-end, selecione o NEG zonal
- Configure o segundo back-end:
- Clique em Adicionar back-end.
- Em Novo back-end, selecione o grupo de instâncias
zonal-neg-c
. - Mantenha os valores padrão restantes e clique em Concluído.
- Configure a verificação de integridade:
- Em Verificação de integridade, selecione Criar verificação de integridade.
- Defina o Nome da verificação de integridade como
tcp-health-check
. - Em Protocol, selecione TCP.
- Em Porta, insira
80
.
- Mantenha os valores padrão restantes e clique em Salvar.
- No Console do Google Cloud, verifique se há uma marca de seleção ao lado de Configuração do back-end. Se não houver, verifique se você concluiu todas as etapas.
Configuração de front-end
- Clique em Configuração de front-end.
- Em Nome, insira
int-tcp-forwarding-rule
. - Em Sub-rede, selecione backend-subnet.
- Em Endereço IP, selecione int-tcp-ip-address.
- Em Número da porta, digite
9090
. A regra de encaminhamento encaminha pacotes com uma porta de destino correspondente. - 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.
- Clique em Concluído.
- No Console do Google Cloud, verifique se há uma marca de seleção ao lado de Configuração do front-end. Se não houver, verifique se você concluiu todas as etapas anteriores.
Revisar e finalizar
- Clique em Revisar e finalizar.
- Verifique suas configurações.
- Clique em Criar.
gcloud
Crie uma verificação de integridade para os back-ends.
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 internal-tcp-proxy-bs \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=TCP \ --region=REGION_A \ --health-checks=tcp-health-check \ --health-checks-region=REGION_A
Adicione o NEG zonal na zona
ZONE_A1
ao serviço de back-end.gcloud compute backend-services add-backend internal-tcp-proxy-bs \ --network-endpoint-group=zonal-neg-a \ --network-endpoint-group-zone=ZONE_A1 \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=50 \ --region=REGION_A
Adicione o NEG zonal na zona
ZONE_A2
ao serviço de back-end.gcloud compute backend-services add-backend internal-tcp-proxy-bs \ --network-endpoint-group=zonal-neg-c \ --network-endpoint-group-zone=ZONE_A2 \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=50 \ --region=REGION_A
Crie o proxy TCP de destino.
gcloud compute target-tcp-proxies create int-tcp-target-proxy \ --backend-service=internal-tcp-proxy-bs \ --region=REGION_A
Crie a regra de encaminhamento. Para
--ports
, especifique um único número de porta de 1-65535. Este exemplo usa a porta9090
. A regra de encaminhamento encaminha pacotes com uma porta de destino correspondente.gcloud compute forwarding-rules create int-tcp-forwarding-rule \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --address=int-tcp-ip-address \ --ports=9090 \ --region=REGION_A \ --target-tcp-proxy=int-tcp-target-proxy \ --target-tcp-proxy-region=REGION_A
Testar o balanceador de carga
Para testar o balanceador de carga, crie uma VM cliente na mesma região que o balanceador de carga. Em seguida, envie o tráfego do cliente para o balanceador de carga.
Criar uma VM cliente
Crie uma VM cliente (client-vm
) na mesma região do balanceador de carga.
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
Clique em Criar instância.
Defina o Nome como
client-vm
.Defina Zona como
ZONE_A1
.Clique em Opções avançadas.
Clique em Rede e configure os seguintes campos:
- Em Tags de rede, insira
allow-ssh
. - Em Interfaces de rede, selecione o seguinte:
- Rede:
lb-network
- Sub-rede:
backend-subnet
- Rede:
- Em Tags de rede, insira
Clique em Criar.
gcloud
A VM do cliente precisa estar na mesma rede e região VPC que o balanceador de carga. Ele não precisa estar na mesma sub-rede ou zona. O cliente usa a mesma sub-rede que as VMs de back-end.
gcloud compute instances create client-vm \ --zone=ZONE_A1 \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=backend-subnet
Enviar tráfego ao 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.
Use o SSH para se conectar à instância do cliente.
gcloud compute ssh client-vm \ --zone=ZONE_A1
Verifique se o balanceador de carga está disponibilizando nomes de host de back-end conforme o esperado.
Use o comando
compute addresses describe
para ver o endereço IP do balanceador de carga:gcloud compute addresses describe int-tcp-ip-address \ --region=REGION_A
Anote o endereço IP.
Enviar tráfego ao balanceador de carga Substitua IP_ADDRESS pelo endereço IP do balanceador de carga:
curl IP_ADDRESS:9090
A seguir
- Converter o balanceador de carga de rede de proxy para IPv6
- Visão geral do balanceador de carga de rede de proxy interno regional
- Para configurar o monitoramento do balanceador de carga de rede do proxy interno regional, consulte Como usar o monitoramento.
- Limpe a configuração do balanceador de carga.