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-subnet
em Região A que usa10.1.2.0/24
como o intervalo de endereços IP principalSub-rede para proxies: uma sub-rede chamada
proxy-only-subnet
no Região B que usa10.129.0.0/23
como 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-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
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 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:
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 TCP22
proveniente 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 destinoallow-ssh
.fw-allow-health-check
: uma regra de entrada, aplicável às instâncias submetidas ao balanceamento de carga, que permite todo o tráfego TCP dos sistemas de verificação de integridade do Google Cloud (em130.211.0.0/22
e35.191.0.0/16
). Este exemplo usa a tag de destinoallow-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 do 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
22
como o número da porta.
- Name:
Clique em Criar.
Clique em Criar regra de firewall pela segunda vez para criar a regra que autorize as verificações de integridade do Google Cloud:
- Name:
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/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.
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:80
para o protocolo e a porta, o Google Cloud poderá usar HTTP na porta80
para entrar em contato com suas VMs, mas não poderá usar HTTPS na porta443
para entrar em contato com elas.
- Name:
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
80
como o número da porta.
- Name:
Clique em Criar.
gcloud
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 a regra
fw-allow-health-check
para 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-subnet
para permitir que os proxies Envoy da região se conectem aos seus back-ends. Defina--source-ranges
como 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_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
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
.Certifique-se de que o disco de inicialização esteja configurado como uma imagem Debian. Por exemplo, Debian GNU/Linux 9 (stretch). 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-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.
Criar um grupo gerenciado de instâncias
No Console do 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 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.
- Em Tipo de back-end, selecione Grupo de instâncias.
- Em Protocol, selecione TCP.
- Em Porta nomeada, insira
tcp80
. - 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.
- 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.
- Defina a Porta como
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-reg-tcp-forwarding-rule
. - Em Sub-rede, selecione
backend-subnet
. - 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 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 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_V1
em vez deNONE
. 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 porta110
. 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_ADDRESS
pelo 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.