Nesta página, fornecemos instruções para criar balanceadores de carga de rede de passagem interna para o balanceamento de carga do tráfego de vários protocolos.
Para configurar um balanceador de carga para vários protocolos, incluindo TCP e 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 um balanceador de carga de rede de passagem interna para distribuir o tráfego por uma VM de
back-end na região us-west1
. O balanceador de carga tem uma regra de encaminhamento com o protocolo
L3_DEFAULT
para lidar com
TCP, UDP, ICMP, ICMPv6, SCTP, ESP, AH e GRE
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 nas referências da CLI gcloud e da API.
Se você não executou a CLI gcloud anteriormente, primeiro execute o comando
gcloud init
para autenticar. - Saiba mais sobre bash.
Permissões
Para ter as permissões necessárias para concluir este guia, peça ao administrador para conceder a você os papéis do IAM a seguir no projeto:
-
Para criar recursos do balanceador de carga:
Administrador do balanceador de carga do Compute (
roles/compute.loadBalancerAdmin
) -
Para criar instâncias e grupos de instâncias do Compute Engine:
Administrador da instância do Compute (
roles/compute.instanceAdmin.v1
) -
Para criar componentes de rede:
Administrador de rede do Compute (
roles/compute.networkAdmin
)
Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.
Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.
Configurar o balanceador de carga para o tráfego L3_DEFAULT
As etapas nesta seção descrevem as seguintes configurações:
- Um exemplo que usa uma rede VPC
personalizada chamada
lb-network
. Você pode usar uma rede 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. - Uma sub-rede de pilha única (
stack-type
definido comoIPv4
), que é necessária para o tráfego IPv4. Ao criar uma sub-rede de pilha única em uma rede VPC de modo personalizado, você escolhe um intervalo de sub-rede IPv4 para a sub-rede. No tráfego IPv6, é necessário ter uma sub-rede de pilha dupla (stack-type
definido comoIPv4_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âmetroipv6-access-type
da sub-rede comoINTERNAL
. Isso significa que novas VMs nessa sub-rede poderão receber endereços IPv4 internos e endereços IPv6 internos. - Regras de firewall que permitem conexões de entrada com VMs de back-end.
- O grupo de instâncias de back-end e os componentes do balanceador de carga usados neste
exemplo estão localizados nesta região e sub-rede:
- Região:
us-west1
- 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).
- Região:
- Uma VM de back-end em um grupo gerenciado de instâncias na zona
us-west1-a
. - Uma VM cliente para testar conexões com os back-ends.
- Um balanceador de carga de rede de passagem interna com os seguintes componentes:
- Uma verificação de integridade do serviço de back-end.
- Um serviço de back-end na região
us-west1
com o protocolo definido comoUNSPECIFIED
para gerenciar a distribuição de conexão para o grupo de instâncias zonais. - Uma regra de encaminhamento com o protocolo definido como
L3_DEFAULT
e a porta definida comoALL
.
Configurar uma rede, uma região e uma sub-rede
Para configurar sub-redes com intervalos IPv6 internos, ative um intervalo IPv6 interno da rede da nuvem privada virtual (VPC, na sigla em inglês). Os intervalos de sub-redes IPv6 internos são alocados desse intervalo. Para criar a rede e sub-rede do exemplo, 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.
Em Nome, insira
lb-network
.Se você quiser configurar intervalos de endereços de IPv6 internos em sub-redes nesta rede, siga estas etapas:
- Em Intervalo de IPv6 interno de ULA da rede VPC, selecione Ativado.
- Em Alocar intervalo de IPv6 interno, selecione Automático ou Manualmente.
Em Modo de criação da sub-rede, selecione Personalizado.
Na seção Nova sub-rede, especifique os parâmetros de configuração a seguir para uma sub-rede:
- Em Nome, insira
lb-subnet
. - Em Região, selecione
us-west1
. - Para criar uma sub-rede de pilha dupla, selecione IPv4 e IPv6 (pilha dupla) em Tipo de pilha de IP.
- Em Intervalo IPv4, insira
10.1.2.0/24
. - Em Tipo de acesso IPv6, selecione Interno.
- Em Nome, insira
Clique em Concluído.
Clique em Criar.
Para oferecer suporte ao tráfego IPv4, siga estas etapas:
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:
lb-subnet
- Região:
us-west1
- Tipo de pilha de IP: IPv4 (pilha única)
- Intervalo de endereços IP:
10.1.2.0/24
- Name:
- Clique em Concluído.
Clique em Criar.
gcloud
Para tráfego IPv4 e IPv6, use os seguintes comandos:
Para criar uma nova rede VPC personalizada, execute o comando
gcloud compute networks create
.Para configurar intervalos IPv6 internos em qualquer sub-rede nessa rede, use a sinalização
--enable-ula-internal-ipv6
. Essa opção atribui um prefixo ULA de/48
do intervalofd20::/20
usado pelo Google Cloud para intervalos de sub-rede IPv6 internos.gcloud compute networks create lb-network \ --subnet-mode=custom \ --enable-ula-internal-ipv6
Em
lb-network
, crie uma sub-rede para back-ends na regiãous-west1
.Para criar as sub-redes, execute o comando
gcloud compute networks subnets create
.gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1 \ --stack-type=IPV4_IPV6 --ipv6-access-type=INTERNAL
Para somente tráfego IPv4, use os seguintes comandos:
Para criar a rede VPC personalizada, use o comando
gcloud compute networks create
:gcloud compute networks create lb-network --subnet-mode=custom
Para criar a sub-rede para back-ends na região
us-west1
da redelb-network
, use o comandogcloud compute networks subnets create
.gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
API
Para tráfego IPv4 e IPv6, use os seguintes comandos:
Crie uma nova rede VPC de modo personalizado: Faça uma solicitação
POST
ao métodonetworks.insert
.Para configurar intervalos IPv6 internos em qualquer sub-rede nessa rede, defina
enableUlaInternalIpv6
comotrue
. Esta opção atribui um intervalo/48
dentro do intervalofd20::/20
usado pelo Google para intervalos de sub-rede IPv6 internos.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "autoCreateSubnetworks": false, "name": "lb-network", "mtu": MTU, "enableUlaInternalIpv6": true, }
Substitua:
PROJECT_ID
: o ID do projeto em que a rede VPC foi criada.MTU
: a unidade de transmissão máxima da rede. A MTU pode ser1460
(padrão) ou1500
. Analise a visão geral da unidade de transmissão máxima antes de definir a MTU como1500
.
Faça uma solicitação
POST
ao métodosubnetworks.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "ipCidrRange": "10.1.2.0/24", "network": "lb-network", "name": "lb-subnet" "stackType": IPV4_IPV6, "ipv6AccessType": Internal }
Para somente tráfego IPv4, use o seguinte comando:
Faça uma solicitação
POST
ao métodonetworks.insert
. SubstituaPROJECT_ID
pelo ID do projeto do Google Cloud.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "name": "lb-network", "autoCreateSubnetworks": false }
Faça duas solicitações
POST
para o métodosubnetworks.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks { "name": "lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "ipCidrRange": "10.1.2.0/24", "privateIpGoogleAccess": false }
Configurar regras de firewall
Este exemplo usa as seguintes regras de firewall:
fw-allow-lb-access
: uma regra de entrada, aplicável a todos os destinos na rede VPC, permitindo tráfego de origens nos intervalos10.1.2.0/24
. Essas regras autorizam o tráfego de entrada de qualquer cliente na sub-rede.fw-allow-lb-access-ipv6
: uma regra de entrada, aplicável a todos os destinos na rede VPC, que permite o tráfego de origens no intervalo IPv6 configurado na sub-rede. Essas regras autorizam o tráfego IPv6 de entrada de qualquer cliente na sub-rede.fw-allow-ssh
: uma regra de entrada, aplicável às instâncias submetidas a balanceamento de carga, que permite a conectividade SSH de entrada na porta TCP 22 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 tagallow-ssh
de destino para identificar as VMs a que isso se aplicará.fw-allow-health-check
: uma regra de entrada, aplicável às instâncias cuja carga está sendo balanceada, que permite o tráfego 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 instâncias às quais ela será aplicada.fw-allow-health-check-ipv6
: uma regra de entrada, aplicável às instâncias cuja carga está sendo balanceada, que permite o tráfego dos sistemas de verificação de integridade do Google Cloud (2600:2d00:1:b029::/64
). Este exemplo usa a tag de destinoallow-health-check-ipv6
para identificar as instâncias às quais ela será aplicada.
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.
Console
No Console do Google Cloud, acesse a página políticas de Firewall.
Para permitir que o tráfego TCP, UDP e ICMP de IPv4 alcance o grupo de instâncias de back-end
ig-a
:- Clique em Criar regra de firewall.
- Name:
fw-allow-lb-access
- Rede:
lb-network
- Prioridade:
1000
- Direção do tráfego: entrada
- Ação na correspondência: permitir
- Destinos: todas as instâncias na rede
- Filtro de origem: intervalos IPv4
- Intervalos IPv4 de origem:
10.1.2.0/24
- Protocolos e portas: selecione Portas e protocolos especificados.
- Selecione TCP e insira
ALL
. - Selecione UDP.
- Selecione Outro e insira
ICMP
.
- Selecione TCP e insira
Clique em Criar.
Para permitir conexões SSH de entrada:
- Clique em Criar regra de firewall.
- 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
- Portas e protocolos: escolha Portas e protocolos especificados
e insira
tcp:22
.
Clique em Criar.
Para permitir que o tráfego TCP, UDP e ICMP do IPv6 alcance o grupo de instâncias de back-end
ig-a
:- Clique em Criar regra de firewall.
- Name:
fw-allow-lb-access-ipv6
- Rede:
lb-network
- Prioridade:
1000
- Direção do tráfego: entrada
- Ação na correspondência: permitir
- Destinos: todas as instâncias na rede
- Filtro de origem: intervalos IPv6
- Intervalos IPv6 de origem: IPV6_ADDRESS atribuídos no
lb-subnet
- Protocolos e portas: selecione Portas e protocolos especificados.
- Selecione TCP e insira
0-65535
. - Selecione UDP.
- Selecione Outro e, no protocolo ICMPv6, insira
58
.
- Selecione TCP e insira
Clique em Criar.
Para permitir verificações de integridade do Google Cloud IPv6:
- Clique em Criar regra de firewall.
- Name:
fw-allow-health-check-ipv6
- 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-health-check-ipv6
- Filtro de origem: intervalos IPv6
- Intervalos IPv6 de origem:
2600:2d00:1:b029::/64
- Protocolos e portas: permitir todos
Clique em Criar.
Para permitir verificações de integridade do Google Cloud IPv4:
- Clique em Criar regra de firewall.
- Name:
fw-allow-health-check
- 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-health-check
- Filtro de origem: intervalos IPv4
- Intervalos IPv4 de origem:
130.211.0.0/22
e35.191.0.0/16
- Protocolos e portas: permitir todos
Clique em Criar.
gcloud
Para permitir que o tráfego TCP do IPv4 alcance o grupo de instâncias de back-end
ig-a
, crie a seguinte regra:gcloud compute firewall-rules create fw-allow-lb-access \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.1.2.0/24 \ --rules=tcp,udp,icmp
Crie a regra de firewall
fw-allow-ssh
para permitir a conectividade SSH com as VMs usando 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
Para permitir que o tráfego IPv6 alcance o grupo de instâncias de back-end
ig-a
, crie a seguinte regra:gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=IPV6_ADDRESS \ --rules=all
Substitua
IPV6_ADDRESS
pelo endereço IPv6 atribuído nolb-subnet
.Crie a regra de firewall
fw-allow-health-check
para permitir verificações de integridade do Google Cloud.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,udp,icmp
Crie a regra
fw-allow-health-check-ipv6
para permitir verificações de integridade do IPv6 do Google Cloud.gcloud compute firewall-rules create fw-allow-health-check-ipv6 \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check-ipv6 \ --source-ranges=2600:2d00:1:b029::/64 \ --rules=tcp,udp,icmp
API
Para criar a regra de firewall
fw-allow-lb-access
, faça uma solicitaçãoPOST
ao métodofirewalls.insert
. SubstituaPROJECT_ID
pelo ID do projeto do Google Cloud.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-lb-access", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "10.1.2.0/24" ], "allPorts": true, "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Crie a regra de firewall
fw-allow-lb-access-ipv6
fazendo uma solicitaçãoPOST
ao métodofirewalls.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-lb-access-ipv6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "IPV6_ADDRESS" ], "allPorts": true, "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "58" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Substitua IPV6_ADDRESS pelo endereço IPv6 atribuído no
lb-subnet
.Para criar a regra de firewall
fw-allow-ssh
, faça uma solicitaçãoPOST
ao métodofirewalls.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-ssh", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "0.0.0.0/0" ], "targetTags": [ "allow-ssh" ], "allowed": [ { "IPProtocol": "tcp", "ports": [ "22" ] } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Para criar a regra de firewall
fw-allow-health-check
, faça uma solicitaçãoPOST
ao métodofirewalls.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-health-check", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "130.211.0.0/22", "35.191.0.0/16" ], "targetTags": [ "allow-health-check" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Crie a regra de firewall
fw-allow-health-check-ipv6
fazendo uma solicitaçãoPOST
ao métodofirewalls.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-health-check-ipv6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "2600:2d00:1:b029::/64" ], "targetTags": [ "allow-health-check-ipv6" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Criar VMs de back-end e grupos de instâncias
Neste cenário de balanceamento de carga, você cria um grupo de instâncias gerenciadas por zona do Compute Engine e instala um servidor da Web Apache.
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, INTERNAL
) da sub-rede. Para mais detalhes sobre os requisitos do IPv6, consulte a Visão geral do balanceador de carga de rede de passagem interna: regras de encaminhamento.
Se você quiser usar VMs atuais como back-ends, atualize-as para 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 interna precisam executar o ambiente convidado Linux, o ambiente convidado Windows ou outros processos com funcionalidade equivalente.
Para simplificar a instrução, as VMs de back-end executam o Debian GNU/Linux 10.
Criar o grupo de instâncias
Console
Para oferecer suporte a tráfego IPv4 e IPv6, siga estas etapas:
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
vm-a1
. - Certifique-se de que o disco de inicialização esteja definido como uma imagem Debian, como
Debian GNU/Linux 12 (bookworm) Estas instruções usam comandos que
estão disponíveis apenas no Debian, como
apt-get
. - 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
allow-ssh
eallow-health-check-ipv6
. - Em Interfaces de rede, clique na interface padrão e
configure os seguintes campos:
- Rede:
lb-network
- Sub-rede:
lb-subnet
- Tipo de pilha de IP: IPv4 e IPv6 (pilha dupla)
- Rede:
- Em Tags de rede, adicione
Clique em Criar.
Para oferecer suporte ao tráfego IPv4, siga estas etapas:
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
vm-a1
. - Certifique-se de que o disco de inicialização esteja definido como uma imagem Debian, como
Debian GNU/Linux 12 (bookworm) Estas instruções usam comandos que
estão disponíveis apenas no Debian, como
apt-get
. - 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
allow-ssh
eallow-health-check
. - Em Interfaces de rede, clique na interface padrão e
configure os seguintes campos:
- Rede:
lb-network
- Sub-rede:
lb-subnet
- Tipo de pilha de IP: IPv4 (pilha única)
- Rede:
- Em Tags de rede, adicione
Clique em Criar.
- Em Nome, insira
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-a
. - Em Local, selecione Zona única.
- Em Região, selecione
us-west1
. - Em Zona, selecione
us-west1-a
. - Em Modelo de instância, selecione
vm-a1
. 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 vm-a1 \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet \ --ipv6-network-tier=PREMIUM \ --stack-type=IPv4_IPv6 \ --tags=allow-ssh \ --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 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 vm-a1 \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet \ --tags=allow-ssh \ --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 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-a \ --zone us-west1-a \ --size 2 \ --template vm-a1
api
Para processar tanto tráfego IPv4 quanto IPv6, siga estas etapas:
Crie uma VM fazendo solicitações
POST
para o métodoinstances.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "vm-a1", "tags": { "items": [ "allow-health-check-ipv6", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "stackType": "IPV4_IPV6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-a1", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname="$(curl -H "Metadata-Flavor:Google" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)"\necho "Page served from: $vm_hostname" | \\\ntee /var/www/html/index.html\nsed -ire "s/^Listen 80$/Listen 8080/g" /etc/\\napache2/ports.conf\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
Para processar o tráfego IPv4, siga estas etapas.
Crie uma VM fazendo solicitações
POST
para o métodoinstances.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "vm-a1", "tags": { "items": [ "allow-health-check", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "stackType": "IPV4", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-a1", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname="$(curl -H "Metadata-Flavor:Google" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)"\necho "Page served from: $vm_hostname" | \\\ntee /var/www/html/index.html\nsed -ire "s/^Listen 80$/Listen 8080/g" /etc/\\napache2/ports.conf\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
Crie um grupo de instâncias fazendo uma solicitação
POST
ao métodoinstanceGroups.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups { "name": "ig-a", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }
Adicione instâncias a cada grupo de instâncias fazendo uma solicitação
POST
para o métodoinstanceGroups.addInstances
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a/addInstances { "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a1" } ] }
Criar uma VM cliente
Neste exemplo, criamos uma VM cliente () na mesma região das VMs de back-end (servidor). O cliente é usado para validar a configuração do balanceador de carga e demonstrar o comportamento esperado, conforme descrito na seção de teste.
Para tráfego IPv4 e IPv6:
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
Clique em Criar instância.
Defina o Nome como
vm-client-ipv6
.Defina a Zona como
us-west1-a
.Abra a seção Opções avançadas e faça as seguintes alterações:
- Abra Rede e adicione
allow-ssh
às Tags de rede. - Em Interfaces de rede, clique em Editar, faça as alterações a seguir e clique em Concluído:
- Rede:
lb-network
- Sub-rede:
lb-subnet
- Tipo de pilha de IP: IPv4 e IPv6 (pilha dupla)
- IP interno primário: temporário (automático)
- IP externo: temporário
- Rede:
- Abra Rede e adicione
Clique em Criar.
gcloud
A VM cliente pode estar em qualquer zona na mesma região que o balanceador de carga, podendo usar qualquer sub-rede nessa região. Neste exemplo, o cliente está na zona us-west1-a
e usa a mesma sub-rede das VMs de back-end.
gcloud compute instances create vm-client-ipv6 \ --zone=us-west1-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --stack-type=IPV4_IPV6 \ --tags=allow-ssh \ --subnet=lb-subnet
api
Faça uma solicitação POST
ao
método instances.insert
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances { "name": "vm-client-ipv6", "tags": { "items": [ "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "stackType": "IPV4_IPV6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-client", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/debian-image-name", "diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "scheduling": { "preemptible": false }, "deletionProtection": false }
Para o tráfego IPv4:
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
Clique em Criar instância.
Em Nome, insira
vm-client
.Em Zona, insira
us-west1-a
.Expanda a seção Opções avançadas.
Abra 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:
lb-subnet
- Rede:
- Em Tags de rede, insira
Clique em Criar.
gcloud
A VM cliente pode estar em qualquer zona na mesma região que o balanceador de carga, podendo usar qualquer sub-rede nessa região. Neste exemplo, o cliente está na zona us-west1-a
e usa a mesma sub-rede das VMs de back-end.
gcloud compute instances create vm-client \ --zone=us-west1-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=lb-subnet
API
Faça uma solicitação POST
ao método instances.insert
.
Substitua
PROJECT_ID
pelo ID do projeto do Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances { "name": "vm-client", "tags": { "items": [ "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-client", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/debian-image-name", "diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "scheduling": { "preemptible": false }, "deletionProtection": false }
Configurar componentes do balanceador de carga
Crie um balanceador de carga para vários protocolos.
gcloud
Crie uma verificação de integridade HTTP para a porta 80. Essa verificação de integridade é usada para verificar a integridade dos back-ends no grupo de instâncias
ig-a
.gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80
Crie um serviço de back-end com o protocolo definido como
UNSPECIFIED
:gcloud compute backend-services create be-ilb-l3-default \ --load-balancing-scheme=internal \ --protocol=UNSPECIFIED \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1
Adicione o grupo de instâncias ao serviço de back-end.
gcloud compute backend-services add-backend be-ilb-l3-default \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-a
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 IPv6 compatível. Todas as portas precisam ser configuradas com regras de encaminhamentoL3_DEFAULT
.gcloud compute forwarding-rules create fr-ilb-ipv6 \ --region=us-west1 \ --load-balancing-scheme=internal \ --subnet=lb-subnet \ --ip-protocol=L3_DEFAULT \ --ports=ALL \ --backend-service=be-ilb-l3-default \ --backend-service-region=us-west1 \ --ip-version=IPV6
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 IPv4 compatível. Todas as portas precisam ser configuradas com regras de encaminhamentoL3_DEFAULT
. Use10.1.2.99
como o endereço IP interno.gcloud compute forwarding-rules create fr-ilb-l3-default \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=10.1.2.99 \ --ip-protocol=L3_DEFAULT \ --ports=ALL \ --backend-service=be-ilb-l3-default \ --backend-service-region=us-west1
API
Crie a verificação de integridade fazendo uma solicitação
POST
ao métodoregionHealthChecks.insert
. SubstituaPROJECT_ID
pelo ID do projeto do Google Cloud.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/regionHealthChecks { "name": "hc-http-80", "type": "HTTP", "httpHealthCheck": { "port": 80 } }
Crie um serviço de back-end regional fazendo uma solicitação
POST
ao métodoregionBackendServices.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb-l3-default", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "UNSPECIFIED", "connectionDraining": { "drainingTimeoutSec": 0 } }
Para tráfego IPv6: crie a regra de encaminhamento fazendo uma solicitação
POST
ao métodoforwardingRules.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-ipv6", "IPProtocol": "L3_DEFAULT", "allPorts": true, "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default", "ipVersion": "IPV6", "networkTier": "PREMIUM" }
Para tráfego IPv4: crie a regra de encaminhamento fazendo uma solicitação
POST
ao métodoforwardingRules.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-l3-default", "IPAddress": "10.1.2.99", "IPProtocol": "L3_DEFAULT", "allPorts": true, "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default", "networkTier": "PREMIUM" }
Testar o balanceador de carga
Os testes a seguir mostram como validar a configuração do balanceador de carga e saber mais sobre o comportamento esperado.
Testar a conexão da VM cliente
Neste teste, o balanceador de carga é contatado por uma VM cliente separada, e não por uma VM de back-end do balanceador de carga.
gcloud:IPv6
Conecte-se à instância da VM cliente.
gcloud compute ssh vm-client-ipv6 --zone=us-west1-a
Descreva a regra de encaminhamento IPv6
fr-ilb-ipv6
. Observe oIPV6_ADDRESS
na descrição.gcloud compute forwarding-rules describe fr-ilb-ipv6 --region=us-west1
Em clientes com conectividade IPv6, execute o seguinte comando. Substitua
IPV6_ADDRESS
pelo endereço IPv6 temporário na regra de encaminhamentofr-ilb-ipv6
.curl -m 10 -s http://IPV6_ADDRESS:80
Por exemplo, se o endereço IPv6 atribuído for
[fd20:1db0:b882:802:0:46:0:0/96]:80
, o comando terá esta aparência:curl -m 10 -s http://[fd20:1db0:b882:802:0:46:0:0]:80
gcloud:IPv4
Conecte-se à instância da VM cliente.
gcloud compute ssh vm-client --zone=us-west1-a
Descreva a regra de encaminhamento IPv4
fr-ilb
.gcloud compute forwarding-rules describe fr-ilb --region=us-west1
Faça uma solicitação da Web para o balanceador de carga usando
curl
para contatar o endereço IP dele. Repita a solicitação para ver que as respostas provêm de diferentes VMs de back-end. O nome da VM que gera a resposta é exibido no texto na resposta HTML em virtude do conteúdo de/var/www/html/index.html
em cada VM de back-end. As respostas esperadas são semelhantes aPage served from: vm-a1
.curl http://10.1.2.99
A regra de encaminhamento está configurada para exibir as portas
80
e53
. Para enviar tráfego para essas portas, anexe dois pontos (:
) e o número da porta após o endereço IP, desta maneira:curl http://10.1.2.99:80
Dê um ping no endereço IP do balanceador de carga
Neste teste, demonstramos um comportamento esperado: não é possível dar um ping no endereço IP do balanceador de carga.
gcloud:IPv6
Conecte-se à instância da VM cliente.
gcloud compute ssh vm-client-ipv6 --zone=us-west1-a
Tente fazer o ping do endereço IPv6 do balanceador de carga. Substitua
IPV6_ADDRESS
pelo endereço IPv6 temporário na regra de encaminhamentofr-ilb-ipv6
.Você recebe uma resposta e o comando
ping
funciona neste exemplo.ping6 IPV6_ADDRESS
Por exemplo, se o endereço IPv6 atribuído for
[2001:db8:1:1:1:1:1:1/96]
, o comando será o seguinte:ping6 2001:db8:1:1:1:1:1:1
O resultado será assim:
@vm-client: ping
IPV6_ADDRESS
PINGIPV6_ADDRESS
(IPV6_ADDRESS
) 56(84) bytes of data. 64 bytes fromIPV6_ADDRESS
: icmp_seq=1 ttl=64 time=1.58 ms
gcloud:IPv4
Conecte-se à instância da VM cliente.
gcloud compute ssh vm-client --zone=us-west1-a
Tente dar um ping no endereço IPv4 do balanceador de carga. Você recebe uma resposta e o comando
ping
funciona neste exemplo.ping 10.1.2.99
A saída é esta:
@vm-client: ping 10.1.2.99 PING 10.1.2.99 (10.1.2.99) 56(84) bytes of data. 64 bytes from 10.1.2.99: icmp_seq=1 ttl=64 time=1.58 ms 64 bytes from 10.1.2.99: icmp_seq=2 ttl=64 time=0.242 ms 64 bytes from 10.1.2.99: icmp_seq=3 ttl=64 time=0.295 ms
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.
É possível reservar um endereço IP interno estático para o exemplo. Essa configuração permite que várias regras de encaminhamento interno usem o mesmo endereço IP com protocolos e portas diferentes.
Os back-ends do balanceador de carga de exemplo ainda precisam estar localizados na única região us-west1
.
O diagrama a seguir mostra a arquitetura deste exemplo.
Também é possível usar as seguintes configurações de regra de encaminhamento:
Regras de encaminhamento com várias portas:
- Protocolo
TCP
com portas80,8080
- Protocolo
L3_DEFAULT
com portasALL
- Protocolo
Regras de encaminhamento com todas as portas:
- Protocolo
TCP
com portasALL
- Protocolo
L3_DEFAULT
com portasALL
- Protocolo
Reservar endereço IPv4 interno estático
Reserve um endereço IP interno estático para 10.1.2.99
e defina a flag --purpose
como SHARED_LOADBALANCER_VIP
. A flag --purpose
é necessária para que muitas regras de encaminhamento possam usar o mesmo endereço IP interno.
gcloud
Use o comando gcloud compute addresses create
:
gcloud compute addresses create internal-lb-ipv4 \ --region us-west1 \ --subnet lb-subnet \ --purpose SHARED_LOADBALANCER_VIP \ --addresses 10.1.2.99
API
Chame o
método addresses.insert
.
Substitua PROJECT_ID
pelo ID do projeto do Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/addresses
O corpo da solicitação precisa incluir addressType
, que precisa ser INTERNAL
, o name
do endereço e o subnetwork
do endereço IP. Especifique address
como 10.1.2.99
.
{ "addressType": "INTERNAL", "name": "internal-lb-ipv4", "subnetwork": "regions/us-west1/subnetworks/lb-subnet", "purpose": "SHARED_LOADBALANCER_VIP", "address": "10.1.2.99" }
Configurar componentes do balanceador de carga
Configure três balanceadores de carga com os seguintes componentes:
- O primeiro balanceador de carga tem uma regra de encaminhamento com o protocolo
TCP
e a porta80
. O tráfego TCP que chega ao endereço IP interno na porta80
é processado pela regra de encaminhamentoTCP
. - O segundo balanceador de carga tem uma regra de encaminhamento com o protocolo
UDP
e a porta53
. O tráfego UDP que chega ao endereço IP interno na porta53
é processado pela regra de encaminhamentoUDP
. - O terceiro balanceador de carga tem uma regra de encaminhamento com o protocolo
L3_DEFAULT
e a portaALL
. Todo o outro tráfego que não corresponde às regras de encaminhamentoTCP
ouUDP
é processado pela regra de encaminhamentoL3_DEFAULT
. - Os três balanceadores de carga compartilham o mesmo endereço IP interno estático (
internal-lb-ipv4
) nas regras de encaminhamento.
Criar o primeiro balanceador de carga
Crie o primeiro balanceador de carga para o tráfego TCP na porta 80
.
gcloud
Crie o serviço de back-end do tráfego TCP:
gcloud compute backend-services create be-ilb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1
Adicione o grupo de instâncias ao serviço de back-end.
gcloud compute backend-services add-backend be-ilb \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-a
Crie uma regra de encaminhamento do serviço de back-end. Use o endereço IP interno estático reservado (
internal-lb-ipv4
) para o endereço IP interno.gcloud compute forwarding-rules create fr-ilb \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=internal-lb-ipv4 \ --ip-protocol=TCP \ --ports=80 \ --backend-service=be-ilb \ --backend-service-region=us-west1
API
Crie um serviço de back-end regional fazendo uma solicitação
POST
ao métodoregionBackendServices.insert
. SubstituaPROJECT_ID
pelo ID do projeto do Google Cloud.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "TCP", "connectionDraining": { "drainingTimeoutSec": 0 } }
Create the forwarding rule by making a
POST
request to theforwardingRules.insert
method:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb", "IPAddress": "internal-lb-ipv4", "IPProtocol": "TCP", "ports": [ "80" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb", "networkTier": "PREMIUM" }
Criar o segundo balanceador de carga
Crie o segundo balanceador de carga para o tráfego UDP na porta 53
.
gcloud
Crie um serviço de back-end com o protocolo definido como
UDP
:gcloud compute backend-services create be-ilb-udp \ --load-balancing-scheme=internal \ --protocol=UDP \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1
Adicione o grupo de instâncias ao serviço de back-end.
gcloud compute backend-services add-backend be-ilb-udp \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-a
Crie uma regra de encaminhamento do serviço de back-end. Use o endereço IP interno estático reservado (
internal-lb-ipv4
) para o endereço IP interno.gcloud compute forwarding-rules create fr-ilb-udp \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=internal-lb-ipv4 \ --ip-protocol=UDP \ --ports=53 \ --backend-service=be-ilb-udp \ --backend-service-region=us-west1
API
Crie um serviço de back-end regional fazendo uma solicitação
POST
ao métodoregionBackendServices.insert
. SubstituaPROJECT_ID
pelo ID do projeto do Google Cloud.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb-udp", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "UDP", "connectionDraining": { "drainingTimeoutSec": 0 } }
Crie a regra de firewall fazendo uma solicitação
POST
ao métodoforwardingRules.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-udp", "IPAddress": "internal-lb-ipv4", "IPProtocol": "UDP", "ports": [ "53" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-udp", "networkTier": "PREMIUM" }
Criar o terceiro balanceador de carga
Criar a regra de encaminhamento do terceiro balanceador de carga para usar o endereço IP interno estático reservado.
gcloud
Criar a regra de encaminhamento com o protocolo definido como L3_DEFAULT
para processar
todos os outros tráfegos de protocolo IPv4 compatíveis. Use o endereço IP interno estático reservado (internal-lb-ipv4
) como o endereço IP interno.
gcloud compute forwarding-rules create fr-ilb-l3-default \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=internal-lb-ipv4 \ --ip-protocol=L3_DEFAULT \ --ports=ALL \ --backend-service=be-ilb-l3-default \ --backend-service-region=us-west1
API
Crie a regra de firewall fazendo uma solicitação POST
ao método forwardingRules.insert
.
Substitua PROJECT_ID
pelo ID do
projeto do Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-l3-default", "IPAddress": "internal-lb-ipv4", "IPProtocol": "L3_DEFAULT", "ports": [ "ALL" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default", "networkTier": "PREMIUM" }
Testar o balanceador de carga
Para testar o balanceador de carga, siga as etapas da seção anterior.
A seguir
- Para saber mais sobre conceitos importantes, consulte Visão geral do balanceador de carga de rede de passagem interna.
- Para saber como configurar o failover, consulte Configurar failover para o balanceador de carga de rede de passagem interna.
- Para saber mais sobre como configurar o Logging e o Monitoring para balanceadores de carga de rede de passagem interna, consulte esta página.
- Para saber mais sobre a solução de problemas, consulte Solução de problemas de balanceadores de carga de rede de passagem interna.
- Limpar uma configuração de balanceamento de carga.