Um balanceador de carga de rede de proxy externo regional é 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 endpoints de rede (NEG) zonal.
Antes de começar, leia os documentos a seguir:
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 us-west1
. Para o propósito deste
exemplo, o serviço é um conjunto de servidores Apache
configurados para responder na porta 80
.
Neste exemplo, você configura a implantação mostrada no diagrama a seguir.
Esse é 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 é um 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 denominada
backend-subnet
na regiãous-west1
que usa10.1.2.0/24
para o intervalo de endereço IP principalSub-rede para proxies: uma sub-rede chamada
proxy-only-subnet
na regiãous-west1
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-rede, faça o seguinte:
- 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:
us-west1
- 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-network
na regiãous-west1
, use o comandogcloud compute networks subnets create
:gcloud compute networks subnets create backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
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 us-west1
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
us-west1
.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=us-west1 \ --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 TCP22
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 dos sistemas do qual você inicia sessões SSH. Neste exemplo, usamos a tag de destinoallow-ssh
para identificar as VMs às quais ele deve se aplicar.fw-allow-proxy-only-subnet
. Uma regra de firewall de entradaallow
para a sub-rede somente proxy que permite 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 e preencha os seguintes campos:
- Name:
fw-allow-health-check
- Rede:
lb-network
- Destinos: tags de destino especificadas
- Tags de meta:
allow-health-check
- Filtro de origem: intervalos IPv4
- Intervalos IPv4 de origem:
130.211.0.0/22
e35.191.0.0/16
- Protocolos e portas:
- Escolha Protocolos e portas especificados.
- Marque a caixa de seleção TCP e insira
80
como o número da porta.
- Name:
Clique em Criar.
Clique em Criar regra de firewall pela segunda vez para criar a regra que permite conexões SSH de entrada:
- Name:
fw-allow-ssh
- Rede:
lb-network
- Prioridade:
1000
- 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
22
como o número da porta.
- Name:
Clique em Criar.
Clique em Criar regra de firewall pela terceira vez para criar uma regra que permita 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 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
80
como o número da porta.
- 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
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
us-west1
.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=us-west1 \ --network-tier=STANDARD
Substitua
ADDRESS_NAME
pelo 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
Configurar o NEG zonal
Configure um NEG zonal com endpoints do tipo GCE_VM_IP_PORT
na região us-west1
. Primeiro, crie as VMs e, 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
us-west1
.Em Zona, selecione
us-west1-a
.Na seção Disco de inicialização, verifique se o sistema operacional Debian e a versão 10 (buster) estão selecionados 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 anteriores para criar mais três VMs. Use as combinações de nome e zona a seguir:
- Nome:
vm-a2
| zona:us-west1-a
- Nome:
vm-c1
| zona:us-west1-c
- Nome:
vm-c2
| zona:us-west1-c
- Nome:
gcloud
Para criar as VMs, use o comando gcloud compute instances create
duas vezes. Use as combinações a seguir para
VM_NAME
e
ZONE
. O conteúdo do script é idêntico para as duas VMs:
VM_NAME
:vm-a1
eZONE
:us-west1-a
VM_NAME
:vm-a2
eZONE
:us-west1-a
VM_NAME
:vm-c1
eZONE
:us-west1-c
VM_NAME
:vm-c2
eZONE
:us-west1-c
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-10 \ --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
Criar um grupo de endpoints de rede zonais
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
us-west1-a
.Em Porta padrão, insira
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:
us-west1-c
- 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 que você criou na etapa anterior (por exemplo,
zonal-neg-a
).Na página Detalhes do grupo de endpoints da rede, na seção Endpoints da rede neste grupo, clique em Adicionar endpoint da rede.
Selecione uma instância de VM (por exemplo,
vm-a1
).Na seção Interface de rede, são exibidos o nome, a zona e a sub-rede da VM.
- Em Endereço IP, digite o endereço IP do novo endpoint da rede. Para conseguir o endereço IP, clique em Verificar os endereços IP principais e o intervalo de IP do alias em nic0.
- Em Tipo de porta, selecione Padrão. O endpoint usa a porta padrão
80
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 em Adicionar endpoint da rede. Selecione a segunda instância de VM,
vm-a2
, e repita as etapas anteriores 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
us-west1-a
com endpointsGCE_VM_IP_PORT
.gcloud compute network-endpoint-groups create zonal-neg-a \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=us-west1-a \ --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=us-west1-a \ --add-endpoint='instance=vm-a1,port=80' \ --add-endpoint='instance=vm-a2,port=80'
Crie um NEG zonal na zona
us-west1-c
com endpointsGCE_VM_IP_PORT
.gcloud compute network-endpoint-groups create zonal-neg-c \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=us-west1-c \ --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=us-west1-c \ --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 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
us-west1
. - Em Rede, selecione
lb-network
.
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.
Configurar os back-ends
- 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.
Configure o front-end
- Clique em Configuração de front-end.
- Em Nome, insira
ext-tcp-forwarding-rule
. - Em Sub-rede, selecione
backend-subnet
. - Em Endereço IP, selecione
ext-tcp-ip-address
. - Em Número da porta, digite
9090
. 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 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=us-west1 \ --use-serving-port
Crie um serviço de back-end:
gcloud compute backend-services create external-tcp-proxy-bs \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=TCP \ --region=us-west1 \ --health-checks=tcp-health-check \ --health-checks-region=us-west1
Adicione o NEG zonal na zona
us-west1-a
ao serviço de back-end:gcloud compute backend-services add-backend external-tcp-proxy-bs \ --network-endpoint-group=zonal-neg-a \ --network-endpoint-group-zone=us-west1-a \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=50 \ --region=us-west1
Adicione o NEG zonal na zona
us-west1-c
ao serviço de back-end:gcloud compute backend-services add-backend external-tcp-proxy-bs \ --network-endpoint-group=zonal-neg-c \ --network-endpoint-group-zone=us-west1-c \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=50 \ --region=us-west1
Crie o proxy TCP de destino:
gcloud compute target-tcp-proxies create ext-tcp-target-proxy \ --backend-service=external-tcp-proxy-bs \ --region=us-west1
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 ext-tcp-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --address=ext-tcp-ip-address \ --ports=9090 \ --region=us-west1 \ --target-tcp-proxy=ext-tcp-target-proxy \ --target-tcp-proxy-region=us-west1
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_ADDRESS
pelo endereço IPv4 do balanceador de carga:curl -m1 LB_IP_ADDRESS:9090
A seguir
- Para saber como os balanceadores de carga de rede de proxy externos funcionam, consulte esta página.
- Para configurar a geração de registros e o monitoramento do balanceador de carga de rede de proxy, consulte esta página.
- Para saber como adicionar um back-end do Private Service Connect a um balanceador de carga de rede de proxy externo, consulte esta página.
- Para excluir os recursos que você criou para não ser cobrado por eles no futuro, consulte Limpar a configuração do balanceador de carga.