Neste guia, você verá instruções para criar balanceadores de carga de rede baseados em serviço de back-end que balanceiam a carga de tráfego TCP, UDP, ESP, GRE, ICMP e ICMPv6. Use essa configuração se quiser balancear a carga do tráfego que usa protocolos IP diferentes de TCP ou UDP. Os balanceadores de carga de rede de passagem externa baseados em pool de destino não são compatíveis com esse recurso.
Para configurar um balanceador de carga de rede de passagem externa para protocolos IP diferentes de TCP ou UDP, crie uma regra de encaminhamento com o protocolo definido como L3_DEFAULT
. Essa
regra de encaminhamento aponta para um serviço de back-end com o protocolo definido como
UNSPECIFIED
.
Neste exemplo, usamos dois balanceadores de carga de rede para distribuir o tráfego entre
VMs de back-end em dois grupos gerenciados de instâncias zonais na região us-central1
.
Os dois balanceadores de carga recebem tráfego no mesmo endereço IP externo.
Um balanceador de carga tem uma regra de encaminhamento com o protocolo TCP
e a porta 80, e o
outro tem uma regra de encaminhamento com o protocolo L3_DEFAULT
. O tráfego TCP que chega ao endereço IP na porta 80 é processado pela regra de encaminhamento TCP
. Todo o outro tráfego que não corresponde à regra de encaminhamento específica do TCP é processado pela regra de encaminhamento L3_DEFAULT
.
Esse cenário distribui o tráfego TCP entre instâncias íntegras. Para dar suporte a isso, crie verificações de integridade de TCP para garantir que o tráfego seja enviado apenas para instâncias íntegras.
O balanceador de carga de rede de passagem externa é um balanceador de carga regional. Todos os componentes do balanceador de carga precisam estar na mesma região.
Antes de começar
Instale a Google Cloud CLI. Para uma visão geral completa da ferramenta, consulte Visão geral da CLI gcloud. Encontre os comandos relacionados ao balanceamento de carga na referência da CLI gcloud e da API.
Se você não executou a gcloud CLI anteriormente, primeiro execute o comando gcloud init
para autenticar.
Esse guia pressupõe que você esteja familiarizado com a ferramenta bash.
Configurar a rede e as sub-redes
O exemplo nesta página usa uma rede VPC de modo personalizado chamada lb-network
. Você pode usar uma rede VPC no modo automático se quiser processar apenas o tráfego IPv4.
No entanto, o tráfego IPv6 requer uma sub-rede de modo personalizado.
O tráfego IPv6 também requer uma sub-rede de pilha dupla (stack-type
definido como
IPv4_IPv6
). Ao criar uma sub-rede de pilha dupla em uma rede VPC de modo personalizado,
você escolhe um tipo de acesso IPv6 para a
sub-rede. Neste exemplo, definimos o parâmetro ipv6-access-type
da sub-rede como
EXTERNAL
. Isso significa que novas VMs nesta sub-rede podem ser atribuídas tanto a endereços
IPv4 quanto IPv6 externos.
Os back-ends e os componentes do balanceador de carga usados neste exemplo estão localizados nesta região e sub-rede:
- Região:
us-central1
- Sub-rede:
lb-subnet
, com intervalo de endereços IPv4 principal10.1.2.0/24
. Embora você escolha qual intervalo de endereços IPv4 será configurado na sub-rede, o intervalo de endereços IPv6 é atribuído automaticamente. O Google fornece um bloco CIDR IPv6 de tamanho fixo (/64).
Para criar o exemplo de rede e sub-rede, siga estas etapas.
Console
Para oferecer suporte a tráfego IPv4 e IPv6, siga estas etapas:
No Console do Google Cloud, acesse a página Redes VPC.
Clique em Criar rede VPC.
Informe um Nome de
lb-network
.Na seção Sub-redes:
- Defina o Modo de criação de sub-rede como Personalizado.
- Na seção Nova sub-rede, configure os campos a seguir e clique em Concluído:
- Name:
lb-subnet
- Região:
us-central1
- Tipo de pilha de IP: IPv4 e IPv6 (pilha dupla)
- Intervalo IPv4:
10.1.2.0/24
É possível configurar um intervalo IPv4 de endereços para a sub-rede, mas não o intervalo de endereços IPv6 para sub-rede. O Google fornece um bloco CIDR IPv6 de tamanho fixo (/64). - Tipo de acesso IPv6: Externo
- Name:
Clique em Criar.
Para oferecer suporte apenas ao tráfego IPv4, siga estas etapas:
No Console do Google Cloud, acesse a página Redes VPC.
Clique em Criar rede VPC.
Informe um Nome de
lb-network
.Na seção Sub-redes:
- Defina o Modo de criação de sub-rede como Personalizado.
- Na seção Nova sub-rede, configure os campos a seguir e clique em Concluído:
- Name:
lb-subnet
- Região:
us-central1
- Tipo de pilha de IP: IPv4 (pilha única)
- Intervalo IPv4:
10.1.2.0/24
- Name:
Clique em Criar.
gcloud
Crie a rede VPC de modo personalizado:
gcloud compute networks create lb-network \ --subnet-mode=custom
Na rede
lb-network
, crie uma sub-rede para back-ends na regiãous-central1
.Para o tráfego IPv4 e IPv6, use o seguinte comando para criar uma sub-rede de pilha dupla:
gcloud compute networks subnets create lb-subnet \ --stack-type=IPV4_IPv6 \ --ipv6-access-type=EXTERNAL \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-central1
Para somente tráfego IPv4, use o seguinte comando:
gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-central1
Criar os grupos gerenciados de instâncias zonais
Neste cenário de balanceamento de carga, você criará dois grupos gerenciados de instâncias zonais do Compute Engine e instalará um servidor de Apache web em cada instância.
Para lidar com tráfego IPv4 e IPv6, configure as VMs de back-end para serem
de pilha dupla. Defina o stack-type
da VM como IPv4_IPv6
. As VMs também herdam a configuração
ipv6-access-type
(neste exemplo, EXTERNAL
) da sub-rede. Para mais detalhes sobre os requisitos do IPv6, consulte a Visão geral do balanceador de carga de rede de passagem externa: regras de encaminhamento.
Para usar VMs como back-ends, atualize-as para que sejam de pilha dupla usando o
comando gcloud compute instances network-interfaces update
.
As instâncias que participam como VMs de back-end para balanceadores de carga de rede de passagem externa precisam executar o ambiente convidado Linux, o ambiente convidado Windows ou outros processos com funcionalidade equivalente.
Crie o grupo de instâncias para o tráfego TCP na porta 80
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
ig-us-template-tcp-80
. - Verifique se o disco de inicialização está definido como uma imagem Debian. Por exemplo, Debian GNU/Linux 10 (buster). Estas instruções usam comandos que
estão disponíveis apenas no Debian, como
apt-get
. - Expanda a seção Opções avançadas.
Abra a seção Gerenciamento e copie 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
Abra a seção Rede e especifique o seguinte:
- Em Tags de rede, adicione
network-lb-tcp-80
. - Em Interfaces de rede, clique na interface padrão e
configure os seguintes campos:
- Rede:
lb-network
- Sub-rede:
lb-subnet
- Rede:
- Em Tags de rede, adicione
Clique em Criar.
Crie um grupo de instâncias gerenciadas. Acesse a página Grupos de instâncias no console do Google Cloud.
- Clique em Criar grupo de instâncias.
- Selecione Novo grupo gerenciado de instâncias (sem estado). Para mais informações, consulte MIGs sem estado ou com estado.
- Em Nome, insira
ig-us-tcp-80
. - Em Local, selecione Única zona.
- Em Região, selecione
us-central1
. - Em Zona, selecione
us-central1-a
. - Em Modelo de instância, selecione
ig-us-template-tcp-80
. 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
Clique em Criar.
gcloud
As instruções gcloud
deste guia pressupõem que você está usando o Cloud
Shell ou outro ambiente com o bash instalado.
Crie um modelo de instância de VM com o servidor HTTP usando o comando
gcloud compute instance-templates create
.Para processar tanto tráfego IPv4 quanto IPv6, use o comando a seguir.
gcloud compute instance-templates create ig-us-template-tcp-80 \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --ipv6-network-tier=PREMIUM \ --stack-type=IPv4_IPv6 \ --tags=network-lb-tcp-80 \ --image-family=debian-10 \ --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'
Ou, se quiser processar o tráfego Somente tráfego IPv4, use o comando a seguir.
gcloud compute instance-templates create ig-us-template-tcp-80 \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --tags=network-lb-tcp-80 \ --image-family=debian-10 \ --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 gerenciado de instâncias na zona com o comando
gcloud compute instance-groups managed create
.gcloud compute instance-groups managed create ig-us-tcp-80 \ --zone us-central1-a \ --size 2 \ --template ig-us-template-tcp-80
Crie o grupo de instâncias para TCP na porta 8080, UDP, ESP e tráfego ICMP.
Console
Crie 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
ig-us-template-l3-default
. - Verifique se o disco de inicialização está definido como uma imagem Debian. Por exemplo, Debian GNU/Linux 10 (buster). Estas instruções usam comandos que
estão disponíveis apenas no Debian, como
apt-get
. - Expanda a seção Opções avançadas.
Abra a seção Gerenciamento e copie o script a seguir no campo Script de inicialização. O script de inicialização também configura o servidor Apache para detectar na porta
8080
em vez da porta80
.#! /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 sed -ire 's/^Listen 80$/Listen 8080/g' /etc/apache2/ports.conf systemctl restart apache2
Abra a seção Rede e especifique o seguinte:
- Em Tags de rede, adicione
network-lb-l3-default
. - Em Interfaces de rede, clique na interface padrão e
configure os seguintes campos:
- Rede:
lb-network
- Sub-rede:
lb-subnet
- Rede:
- Em Tags de rede, adicione
Clique em Criar.
Crie um grupo de instâncias gerenciadas. Acesse a página Grupos de instâncias no console do Google Cloud.
- Clique em Criar grupo de instâncias.
- Escolha Novo grupo gerenciado de instâncias (sem estado). Para mais informações, consulte MIGs sem estado ou com estado.
- Em Nome, insira
ig-us-l3-default
. - Em Local, selecione Única zona.
- Em Região, selecione
us-central1
. - Em Zona, selecione
us-central1-c
. - Em Modelo de instância, selecione
ig-us-template-l3-default
. 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
Clique em Criar.
gcloud
As instruções gcloud
deste guia pressupõem que você está usando o Cloud
Shell ou outro ambiente com o bash instalado.
Crie um modelo de instância de VM com o servidor HTTP usando o comando
gcloud compute instance-templates create
.O script de inicialização também configura o servidor Apache para detectar na porta
8080
em vez da porta80
.Para processar tanto tráfego IPv4 quanto IPv6, use o comando a seguir.
gcloud compute instance-templates create ig-us-template-l3-default \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --ipv6-network-tier=PREMIUM \ --stack-type=IPv4_IPv6 \ --tags=network-lb-l3-default \ --image-family=debian-10 \ --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 sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'
Ou, se quiser processar apenas tráfego IPv4, use o seguinte comando.
gcloud compute instance-templates create ig-us-template-l3-default \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --tags=network-lb-l3-default \ --image-family=debian-10 \ --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 sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'
Crie um grupo gerenciado de instâncias na zona com o comando
gcloud compute instance-groups managed create
.gcloud compute instance-groups managed create ig-us-l3-default \ --zone us-central1-c \ --size 2 \ --template ig-us-template-l3-default
Configurar regras de firewall
Crie as regras de firewall a seguir:
- Regras de firewall que permitem que o tráfego TCP externo alcance instâncias de back-end no grupo de instâncias
ig-us-tcp-80
na porta 80 (usando a tag de destinonetwork-lb-tcp-80
). Crie regras de firewall separadas para permitir tráfego IPv4 e IPv6. - Regras de firewall que permitem que outros tráfegos externos (TCP na porta 8080, UDP, ESP e ICMP) alcancem instâncias de back-end no grupo de instâncias
ig-us-l3-default
(usando a tag de destinonetwork-lb-l3-default
). Crie regras de firewall separadas para permitir tráfego IPv4 e IPv6.
Este exemplo cria regras de firewall que permitem que o tráfego de todos os intervalos de origem alcancem suas instâncias de back-end nas portas configuradas. Se você quiser criar regras de firewall separadas para as sondagens de verificação de integridade, use os intervalos de endereços IP de origem documentados na Visão geral das verificações de integridade: sondar intervalos de IP e regras de firewall.
Console
- No Console do Google Cloud, acesse a página políticas de Firewall.
Acesse as políticas de firewall - Para permitir que o tráfego TCP IPv4 alcance back-ends no grupo de instâncias
ig-us-tcp-80
, crie a seguinte regra de firewall.- Clique em Criar regra de firewall.
- Informe um Nome de
allow-network-lb-tcp-80-ipv4
. - Selecione a Rede a que a regra de firewall se aplicará (Padrão).
- Em Destinos, selecione Tags de destino especificadas.
- No campo Tags de destino, insira
network-lb-tcp-80
. - Defina Filtro de origem como Intervalos IPv4.
- Defina os Intervalos IPV4 de origem como
0.0.0.0/0
, o que permite o tráfego de qualquer origem. Isso permite que as sondagens de verificação de integridade e tráfego externo alcancem as instâncias de back-end. - Em Protocolos e portas, selecione Portas e protocolos
especificados. Marque a caixa de seleção TCP e insira
80
. - Clique em Criar. Pode levar um tempo para que o console exiba a nova regra de firewall. Talvez seja necessário clicar em Atualizar para vê-la.
- Para permitir que o tráfego IPv4 UDP, ESP e ICMP alcance back-ends no grupo de instâncias
ig-us-l3-default
, crie a seguinte regra de firewall.- Clique em Criar regra de firewall.
- Informe um Nome de
allow-network-lb-l3-default-ipv4
. - Selecione a Rede a que a regra de firewall se aplicará (Padrão).
- Em Destinos, selecione Tags de destino especificadas.
- No campo Tags de destino, insira
network-lb-l3-default
. - Defina Filtro de origem como Intervalos IPv4.
- Defina os Intervalos IPV4 de origem como
0.0.0.0/0
, o que permite o tráfego de qualquer origem. Isso permite que as sondagens de verificação de integridade e tráfego externo alcancem as instâncias de back-end. - Em Protocolos e portas, selecione Portas e protocolos
especificados.
- Marque a caixa de seleção TCP e insira
8080
. - Marque a caixa de seleção UDP.
- Marque a caixa de seleção Outro e insira
esp, icmp
.
- Marque a caixa de seleção TCP e insira
- Clique em Criar. Pode levar um tempo para que o console exiba a nova regra de firewall. Talvez seja necessário clicar em Atualizar para vê-la.
- Para permitir que o tráfego TCP IPv6 alcance back-ends no grupo de instâncias
ig-us-tcp-80
, crie a seguinte regra de firewall.- Clique em Criar regra de firewall.
- Informe um Nome de
allow-network-lb-tcp-80-ipv6
. - Selecione a Rede a que a regra de firewall se aplicará (Padrão).
- Em Destinos, selecione Tags de destino especificadas.
- No campo Tags de destino, insira
network-lb-tcp-80
. - Defina Filtro de origem como Intervalos IPv6.
- Defina os Intervalos IPv6 de origem como
::/0
, o que permite o tráfego de qualquer origem. Isso permite que as sondagens de verificação de integridade e tráfego externo alcancem as instâncias de back-end. - Em Protocolos e portas, selecione Portas e protocolos
especificados. Clique na caixa de seleção ao lado de TCP e insira
80
. - Clique em Criar. Pode levar um tempo para que o console exiba a nova regra de firewall. Talvez seja necessário clicar em Atualizar para vê-la.
- Para permitir que o tráfego IPv6 UDP, ESP e ICMPv6 alcance back-ends no grupo de instâncias
ig-us-l3-default
, crie a seguinte regra de firewall. Essa regra de firewall também permite que as sondagens de verificação de integridade do TCP alcancem as instâncias na porta 8080.- Clique em Criar regra de firewall.
- Informe um Nome de
allow-network-lb-l3-default-ipv6
. - Selecione a Rede a que a regra de firewall se aplicará (Padrão).
- Em Destinos, selecione Tags de destino especificadas.
- No campo Tags de destino, insira
network-lb-l3-default
. - Defina Filtro de origem como Intervalos IPv6.
- Defina os Intervalos IPv6 de origem como
::/0
, o que permite o tráfego de qualquer origem. Isso permite que as sondagens de verificação de integridade e tráfego externo alcancem as instâncias de back-end. - Em Protocolos e portas, selecione Portas e protocolos
especificados.
- Clique na caixa de seleção ao lado de TCP e insira
8080
. - Clique na caixa de seleção ao lado de UDP.
- Clique na caixa de seleção ao lado de Outros e insira
esp, 58
.
- Clique na caixa de seleção ao lado de TCP e insira
- Clique em Criar. Pode levar um tempo para que o console exiba a nova regra de firewall. Talvez seja necessário clicar em Atualizar para vê-la.
gcloud
Para permitir que o tráfego TCP IPv4 alcance back-ends no grupo de instâncias
ig-us-tcp-80
, crie a seguinte regra de firewall.gcloud compute firewall-rules create allow-network-lb-tcp-80-ipv4 \ --network=lb-network \ --target-tags network-lb-tcp-80 \ --allow tcp:80 \ --source-ranges=0.0.0.0/0
Para permitir que o tráfego IPv4 UDP, ESP e ICMP alcance back-ends no grupo de instâncias
ig-us-l3-default
, crie a seguinte regra de firewall. Essa regra de firewall também permite que as sondagens de verificação de integridade do TCP alcancem as instâncias na porta 8080.gcloud compute firewall-rules create allow-network-lb-l3-default-ipv4 \ --network=lb-network \ --target-tags network-lb-l3-default \ --allow tcp:8080,udp,esp,icmp \ --source-ranges=0.0.0.0/0
Para permitir que o tráfego TCP IPv6 alcance back-ends no grupo de instâncias
ig-us-tcp-80
, crie a seguinte regra de firewall.gcloud compute firewall-rules create allow-network-lb-tcp-80-ipv6 \ --network=lb-network \ --target-tags network-lb-tcp-80 \ --allow tcp:80 \ --source-ranges=::/0
Para permitir que o tráfego IPv6 UDP, ESP e ICMPv6 alcance back-ends no grupo de instâncias
ig-us-l3-default
, crie a seguinte regra de firewall. Essa regra de firewall também permite que as sondagens de verificação de integridade do TCP alcancem as instâncias na porta 8080.gcloud compute firewall-rules create allow-network-lb-l3-default-ipv6 \ --network=lb-network \ --target-tags network-lb-l3-default \ --allow tcp:8080,udp,esp,58 \ --source-ranges=::/0
Configurar os balanceadores de carga
Em seguida, configure os balanceadores de carga. Configure um balanceador de carga para processar o tráfego TCP na porta 80 e outro para lidar com o tráfego TCP na porta 8080, UDP, ESP e ICMP. Os dois balanceadores de carga usarão o mesmo endereço IP externo com suas respectivas regras de encaminhamento.
Quando você configura um balanceador de carga, as instâncias de VM de
back-end recebem pacotes destinados ao endereço IP externo estático
configurado. Se você usa uma imagem fornecida pelo
Compute Engine,
as instâncias são configuradas automaticamente para processar esse endereço IP. Se
você estiver usando outra imagem, configure esse endereço como
um alias em eth0
ou como um loopback em cada instância.
Console
gcloud
Reserve um endereço IP externo estático.
Para tráfego IPv4: crie um endereço IP externo estático para os balanceadores de carga.
gcloud compute addresses create network-lb-ipv4 \ --region us-central1
Para tráfego IPv6: crie um intervalo de endereços IPv6 estáticos para o balanceadores de carga. A sub-rede usada precisa ser uma sub-rede de pilha dupla com um intervalo de sub-rede IPv6 externo.
gcloud compute addresses create network-lb-ipv6 \ --region us-central1 \ --subnet lb-subnet \ --ip-version IPV6 \ --endpoint-type NETLB
Crie uma verificação de integridade TCP para a porta
80
. Essa verificação de integridade é usada para verificar a integridade dos back-ends no grupo de instânciasig-us-tcp-80
.gcloud compute health-checks create tcp tcp-health-check-80 \ --region us-central1 \ --port 80
Crie uma verificação de integridade TCP para a porta
8080
. Essa verificação de integridade é usada para verificar a integridade dos back-ends no grupo de instânciasig-us-l3-default
.gcloud compute health-checks create tcp tcp-health-check-8080 \ --region us-central1 \ --port 8080
Crie o primeiro balanceador de carga para o tráfego TCP na porta
80
.Crie um serviço de back-end com o protocolo definido como
TCP
.gcloud compute backend-services create backend-service-tcp-80 \ --protocol TCP \ --health-checks tcp-health-check-80 \ --health-checks-region us-central1 \ --region us-central1
Adicione o grupo de instâncias de back-end ao serviço de back-end:
gcloud compute backend-services add-backend backend-service-tcp-80 \ --instance-group ig-us-tcp-80 \ --instance-group-zone us-central1-a \ --region us-central1
Para tráfego IPv4: crie uma regra de encaminhamento para rotear o tráfego TCP de entrada na porta
80
para o serviço de back-end.TCP
é o protocolo de regra de encaminhamento padrão e não precisa ser definido explicitamente.Use o endereço IP reservado na etapa 1 como o endereço IP externo estático do balanceador de carga.
gcloud compute forwarding-rules create forwarding-rule-tcp-80-ipv4 \ --load-balancing-scheme external \ --region us-central1 \ --ports 80 \ --address network-lb-ipv4 \ --backend-service backend-service-tcp-80
Para tráfego IPv6: crie uma regra de encaminhamento para rotear o tráfego TCP de entrada na porta
80
para o serviço de back-end.TCP
é o protocolo de regra de encaminhamento padrão e não precisa ser definido explicitamente.Use o intervalo de endereços IPv6 reservado na etapa 1 como o endereço IP externo estático do balanceador de carga. A sub-rede usada precisa ser uma sub-rede de pilha dupla com um intervalo de sub-rede IPv6 externo.
gcloud compute forwarding-rules create forwarding-rule-tcp-80-ipv6 \ --load-balancing-scheme external \ --region us-central1 \ --network-tier PREMIUM \ --ip-version IPV6 \ --subnet lb-subnet \ --address network-lb-ipv6 \ --ports 80 \ --backend-service backend-service-tcp-80
Crie o segundo balanceador de carga para tráfego TCP na porta
8080
, UDP, ESP e ICMP.Crie um serviço de back-end com o protocolo definido como
UNSPECIFIED
.gcloud compute backend-services create backend-service-l3-default \ --protocol UNSPECIFIED \ --health-checks tcp-health-check-8080 \ --health-checks-region us-central1 \ --region us-central1
Adicione o grupo de instâncias de back-end ao serviço de back-end:
gcloud compute backend-services add-backend backend-service-l3-default \ --instance-group ig-us-l3-default \ --instance-group-zone us-central1-c \ --region us-central1
Para tráfego IPv4: crie uma regra de encaminhamento com o protocolo definido como
L3_DEFAULT
para lidar com todo o tráfego de protocolo IP compatível restante (TCP na porta8080
, UDP, ESP e ICMP). Todas as portas precisam ser configuradas com regras de encaminhamentoL3_DEFAULT
.Use o mesmo endereço IPv4 externo usado no balanceador de carga anterior.
gcloud compute forwarding-rules create forwarding-rule-l3-default-ipv4 \ --load-balancing-scheme external \ --region us-central1 \ --ports all \ --ip-protocol L3_DEFAULT \ --address network-lb-ipv4 \ --backend-service backend-service-l3-default
Para tráfego IPv6: crie uma regra de encaminhamento com o protocolo definido como
L3_DEFAULT
para lidar com todo o tráfego de protocolo IP compatível restante (TCP na porta8080
, UDP, ESP e ICMP). Todas as portas precisam ser configuradas com regras de encaminhamentoL3_DEFAULT
.Use o intervalo de endereços IPv6 reservado na etapa 1 como o endereço IP externo estático do balanceador de carga. A sub-rede usada precisa ser uma sub-rede de pilha dupla com um intervalo de sub-rede IPv6 externo.
gcloud compute forwarding-rules create forwarding-rule-l3-default-ipv6 \ --load-balancing-scheme external \ --region us-central1 \ --network-tier PREMIUM \ --ip-version IPV6 \ --subnet lb-subnet \ --address network-lb-ipv6 \ --ports all \ --ip-protocol L3_DEFAULT \ --backend-service backend-service-l3-default
Testar o balanceador de carga
Agora que o serviço de balanceamento de carga foi configurado, comece a enviar tráfego para o endereço IP externo do balanceador de carga e veja o tráfego ser distribuído às instâncias de back-end.
Procure o endereço IP externo do balanceador de carga.
Console
- Na página de balanceamento de carga Avançado, acesse a guia
Regras de encaminhamento.
Acessar a guia "Regras de encaminhamento" - Localize as regras de encaminhamento usadas pelo balanceador de carga.
- Na coluna Endereço IP, anote o endereço IP externo listado para cada regra de encaminhamento IPv4 e IPv6.
gcloud: IPv4
Insira o comando a seguir para visualizar o endereço IP externo da regra de encaminhamento usada pelo balanceador de carga.
gcloud compute forwarding-rules describe forwarding-rule-tcp-80-ipv4 \ --region us-central1
Este exemplo usa o mesmo endereço IP para as duas regras de encaminhamento. Portanto,
o uso de forwarding-rule-l3-default-ipv4
também funcionará.
gcloud: IPv6
Insira o comando a seguir para visualizar o endereço IPv6 externo da
regra de encaminhamento forwarding-rule-tcp-80-ipv6
usada pelo balanceador de carga.
gcloud compute forwarding-rules describe forwarding-rule-tcp-80-ipv6 \ --region us-central1
Este exemplo usa o mesmo endereço IP para as duas regras de encaminhamento IPv6. Portanto,
o uso de forwarding-rule-l3-default-ipv6
também funcionará.
Enviar tráfego ao balanceador de carga
Este procedimento envia tráfego externo ao balanceador de carga. Execute os testes a
seguir para garantir que o tráfego TCP na porta 80 esteja sendo balanceado pelo
grupo de instâncias ig-us-tcp-80
enquanto o restante do tráfego (TCP na porta 8080, UDP, ESP
e ICMP) está sendo manipulado pelo grupo de instâncias ig-us-l3-default
.
Como verificar o comportamento com solicitações TCP na porta 80
Faça solicitações da Web (por TCP na porta 80) para o balanceador de carga usando
curl
para contatar o endereço IP dele.Em clientes com conectividade IPv4, execute o seguinte comando:
$ while true; do curl -m1 IP_ADDRESS; done
Em clientes com conectividade IPv6, execute o seguinte comando:
$ while true; do curl -m1 http://IPV6_ADDRESS; done
Por exemplo, se o endereço IPv6 atribuído for
[2001:db8:1:1:1:1:1:1/96]
, o comando terá esta aparência:$ while true; do curl -m1 http://[2001:db8:1:1:1:1:1:1]; done
Observe o texto retornado pelo comando
curl
. O nome da VM de back-end que gera a resposta é exibido nesse texto. Por exemplo:Page served from: VM_NAME
. As respostas devem vir apenas de instâncias no grupo de instânciasig-us-tcp-80
.Se ocorrer falha na resposta, aguarde cerca de 30 segundos para que a configuração seja totalmente carregada e as instâncias sejam marcadas como íntegras antes de tentar novamente:
Como verificar o comportamento com solicitações TCP na porta 8080
Faça solicitações da Web (por TCP na porta 8080
) para o balanceador de carga usando curl
para contatar o endereço IP dele.
Em clientes com conectividade IPv4, execute o seguinte comando:
$ while true; do curl -m1 IPV4_ADDRESS:8080; done
Em clientes com conectividade IPv6, execute o seguinte comando:
$ while true; do curl -m1 http://IPV6_ADDRESS; done
Por exemplo, se o endereço IPv6 atribuído for
[2001:db8:1:1:1:1:1:1/96]
, o comando terá esta aparência:$ while true; do curl -m1 http://[2001:db8:1:1:1:1:1:1]:8080; done
Observe o texto retornado pelo comando curl
. As respostas devem vir apenas de instâncias
no grupo de instâncias ig-us-l3-default
.
Isso mostra que qualquer tráfego enviado para o endereço IP do balanceador de carga na porta
8080
está sendo processado apenas por back-ends no grupo de
instâncias ig-us-l3-default
.
Como verificar o comportamento com solicitações ICMP
Para verificar o comportamento com o tráfego ICMP, capture a saída do comando tcpdump
para confirmar que apenas VMs de back-end no grupo de instâncias ig-us-l3-default
estão processando solicitações ICMP enviadas para o balanceador de carga.
SSH para as VMs de back-end.
No console do Google Cloud, acesse a página Instâncias de VMs.
Acessar a página "Instâncias de VM"Na lista de instâncias de máquina virtual, clique em SSH na linha da instância à qual você quer se conectar.
Execute o seguinte comando para usar
tcpdump
para começar a detectar o tráfego ICMP.sudo tcpdump icmp -w ~/icmpcapture.pcap -s0 -c 10000 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
Deixe a janela SSH aberta.
Repita as etapas 1 e 2 para as quatro VMs de back-end.
Faça solicitações ICMP para o balanceador de carga.
Para testar as respostas IPv4, use
ping
para entrar em contato com o endereço IPv4 do balanceador de carga.ping IPV4_ADDRESS
Para testar as respostas IPv6, use
ping6
para entrar em contato com o endereço IPv6 do balanceador de carga.ping6 IPV6_ADDRESS
Por exemplo, se o endereço IPv6 atribuído for
[2001:db8:1:1:1:1:1:1/96]
, o comando terá esta aparência:ping6 2001:db8:1:1:1:1:1:1
Volte para a janela SSH aberta de cada VM e interrompa o comando de captura
tcpdump
. Use Ctrl+C para fazer isso.Para cada VM, verifique a saída do comando
tcpdump
no arquivoicmpcapture.pcap
.sudo tcpdump -r ~/icmpcapture.pcap -n
Para VMs de back-end no grupo de instâncias
ig-us-l3-default
, você verá entradas de arquivo como:reading from file /home/[user-directory]/icmpcapture.pcap, link-type EN10MB (Ethernet) 22:13:07.814486 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 1, length 64 22:13:07.814513 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 1, length 64 22:13:08.816150 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 2, length 64 22:13:08.816175 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 2, length 64 22:13:09.817536 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 3, length 64 22:13:09.817560 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 3, length 64 ...
Para VMs de back-end no grupo de instâncias
ig-us-tcp-80
, você verá que nenhum pacote foi recebido e o arquivo estará em branco:reading from file /home/[user-directory]/icmpcapture.pcap, link-type EN10MB (Ethernet)
A seguir
- Para configurar um balanceador de carga de rede de passagem externa com back-ends de NEG zonal que permitem encaminhar
pacotes para interfaces de rede que não são
nic0
de instâncias de VM, consulte Configurar um balanceador de carga de rede de passagem externo com NEGs. - Para informações sobre como os balanceadores de carga de rede de passagem externa funcionam com os serviços de back-end, consulte Visão geral do balanceador de carga de rede externo de passagem de back-end.
- Para saber como fazer a transição de um balanceador de carga de rede de passagem externa de um back-end de pool de destino para um serviço de back-end regional, consulte Migrar balanceadores de carga de rede de passagem externa de pools de destino para serviços de back-end.
- Para configurar a proteção avançada contra DDoS de rede para um balanceador de carga de rede de passagem externa usando o Google Cloud Armor, consulte Configurar a proteção avançada contra DDoS de rede.
- Para excluir recursos, consulte Como limpar a configuração do balanceador de carga.