Nesta página, você verá como implantar o balanceador de carga clássico do aplicativo para balancear a carga do tráfego para endpoints de rede no local ou em outras nuvens públicas e acessíveis por meio da conectividade híbrida.
Depois de concluir essas tarefas, você pode explorar a ativação de serviços adicionais (como Cloud CDN e Google Cloud Armor) e recursos avançados de gerenciamento de tráfego.
Se você ainda não tiver feito isso, leia a Visão geral dos NEGs de conectividade híbridos para entender os requisitos de rede para configurar o balanceamento de carga híbrido.
Visão geral da configuração
O exemplo nesta página configura a seguinte implantação de amostra:
Você deve configurar a conectividade híbrida antes de tentar configurar uma implantação de balanceamento de carga híbrida. Este documento não inclui a configuração de conectividade híbrida.
Dependendo do produto de conectividade híbrida escolhido (Cloud VPN ou Cloud Interconnect (dedicada ou por parceiro)), use a documentação relevante do produto para fazer essa configuração).
Permissões
Para configurar o balanceamento de carga híbrido, você precisa ter as seguintes permissões:
No Google Cloud
- Permissões para estabelecer conectividade híbrida entre o Google Cloud e seu ambiente local ou outros ambientes de nuvem. Confira a lista de permissões necessárias na documentação relevante do produto Conectividade de rede.
- Permissões para criar um NEG de conectividade híbrida e o balanceador de carga.
O papel Administrador do balanceador de carga do Compute (
roles/compute.loadBalancerAdmin
) contém a permissão necessária para executar as tarefas descritas neste guia.
No local ou em outro ambiente de nuvem que não seja o Google Cloud
- Permissões para configurar endpoints de rede que
autorizam os serviços no local ou em outros ambientes de nuvem a serem acessados
pelo Google Cloud com uma combinação de
IP:Port
. Para mais informações, entre em contato com o administrador de rede do ambiente. - Permissões para criar regras de firewall no seu ambiente local ou em outros ambientes de nuvem para que as sondagens de verificação de integridade do Google alcancem os endpoints.
- Permissões para configurar endpoints de rede que
autorizam os serviços no local ou em outros ambientes de nuvem a serem acessados
pelo Google Cloud com uma combinação de
Além disso, para concluir as instruções nesta página, você precisa criar um NEG híbrido de conectividade, um balanceador de carga e NEGs zonais (e os respectivos endpoints) para servir como back-ends baseados no Google Cloud para o balanceador de carga.
É necessário ser proprietário ou editor de um projeto ou ter os seguintes papéis de 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 ) |
Estabelecer conectividade híbrida
O Google Cloud e os ambientes locais ou em nuvem precisam ser conectados por uma conectividade híbrida usando anexos da VLAN do Cloud Interconnect ou túneis do Cloud VPN com o Cloud Router. Recomendamos que você use uma conexão de alta disponibilidade.
Um Cloud Router ativado com roteamento dinâmico global aprende sobre o endpoint específico usando o Border Gateway Protocol (BGP) e o programa na sua rede VPC do Google Cloud. O roteamento dinâmico regional não é compatível. Rotas estáticas também não são compatíveis.
A rede VPC que você usa para configurar o Cloud Interconnect ou o Cloud VPN é a mesma rede usada para configurar a implantação do balanceamento de carga híbrido. Verifique se os intervalos de CIDR da sub-rede da rede VPC não entram em conflito com os intervalos CIDR remotos. Quando os endereços IP se sobrepõem, as rotas de sub-rede são priorizadas em relação à conectividade remota.
Para receber instruções, consulte a seguinte documentação:
Configurar o ambiente fora do Google Cloud
Execute as etapas a seguir para configurar seu ambiente local ou outro ambiente de nuvem para balanceamento de carga híbrido:
- Configure endpoints da rede para expor serviços locais ao
Google Cloud (
IP:Port
). - Configure regras de firewall no seu ambiente local ou em outro ambiente de nuvem
- Configurar o Cloud Router para divulgar determinadas rotas necessárias para seu ambiente particular.
Configurar endpoints da rede
Depois de configurar a conectividade híbrida, você configura um ou mais endpoints de rede no seu ambiente local ou em outros ambientes de nuvem acessíveis pelo Cloud Interconnect ou pelo Cloud VPN usando uma combinação de IP:port
. Essa combinação de IP:port
é configurada como um ou
mais endpoints para o NEG de conectividade híbrida criado no
Google Cloud posteriormente neste processo.
Se houver vários caminhos para o endpoint do IP, o roteamento seguirá o comportamento descrito na Visão geral do Cloud Router.
Configurar regras de firewall
As regras de firewall a seguir precisam ser criadas no ambiente local ou em outro ambiente de nuvem:
Crie uma regra de firewall de permissão de entrada a fim de autorizar o tráfego das sondagens de verificação de integridade do Google para os endpoints. Os intervalos de endereços IP de origem a serem permitidos são
35.191.0.0/16
e130.211.0.0/22
. Para mais informações, consulte Regras de firewall e intervalos de IP de sondagem.
Divulgar rotas
Configure o Cloud Router para divulgar os seguintes intervalos de IP personalizados no ambiente local ou em outro ambiente de nuvem:
- Os intervalos usados pelas sondagens de verificação de integridade do Google:
35.191.0.0/16
e130.211.0.0/22
.
Configurar o ambiente do Google Cloud
Para as etapas a seguir, certifique-se de usar a mesma rede VPC (chamada NETWORK neste procedimento) usada para configurar a conectividade híbrida entre os ambientes.
Criar a sub-rede para os back-ends
Essa sub-rede é usada para criar os back-ends NEG zonais do balanceador de carga, o front-end e o endereço IP interno.
Crie esse sub-rede na rede NETWORK que foi usada para configurar a conectividade híbrida entre os ambientes.
Console
No Console do Google Cloud, acesse a página Redes VPC.
Acesse a rede usada para configurar a conectividade híbrida entre os ambientes.
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_NAME
- Região: REGION
- Intervalo de endereços IP: LB_SUBNET_RANGE
- Clique em Concluído.
Clique em Criar.
gcloud
Crie uma sub-rede na rede NETWORK que foi usada para configurar a conectividade híbrida entre os ambientes.
gcloud compute networks subnets create LB_SUBNET_NAME \ --network=NETWORK \ --range=LB_SUBNET_RANGE \ --region=REGION
Criar regra de firewall
Neste exemplo, você criará a regra de firewall:
fw-allow-health-check
: uma regra de entrada, aplicável às instâncias do Google Cloud submetidas a balanceamento de carga, que permite o tráfego do balanceador de carga e dos sistemas de verificação de integridade do Google Cloud (130.211.0.0/22
e35.191.0.0/16
). Este exemplo usa a tag de destinoallow-health-check
para identificar as VMs de back-end às quais ela deve ser aplicada.
Console
No Console do Google Cloud, acesse a página políticas de Firewall.
Clique em Criar regra de firewall.
- Informe um Nome de
fw-allow-health-check
. - Na seção Rede, selecione
NETWORK
. - Em Destinos, selecione Tags de destino especificadas.
- Preencha o campo Tags de destino com
allow-health-check
. - Defina Filtro de origem como Intervalos IPv4.
- Defina Intervalos IPv4 de origem como
130.211.0.0/22
e35.191.0.0/16
. - Em Protocolos e portas, selecione Portas e protocolos especificados.
- Marque a caixa de seleção ao lado de TCP e digite os números da porta,
80
.
- Informe um Nome de
Clique em Criar.
gcloud
Crie a regra
fw-allow-health-check-and-proxy
para permitir que o balanceador de carga e as verificações de integridade do Google Cloud se comuniquem com instâncias de back-end na porta TCP80
.Substitua NETWORK pelo nome da rede VPC usada para configurar a conectividade híbrida.
gcloud compute firewall-rules create fw-allow-health-check \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp:80
Configurar o NEG zonal
Para back-ends baseados no Google Cloud, recomendamos que você configure vários NEGs zonais na mesma região em que configurou a conectividade híbrida.
Neste exemplo, configuramos um NEG zonal (com endpoints do tipo GCE_VM_IP_PORT
)
na região REGION. Primeiro, crie as VMs na
zona GCP_NEG_ZONE. Em seguida,
crie um NEG zonal no mesmo GCP_NEG_ZONE e
adicione os endpoints de rede das VMs ao NEG.
Criar VMs
Console
Acesse a página "Instâncias de VMs" no Console do Google Cloud.
Acessar instâncias de VMClique em Criar instância.
Defina o Nome como
vm-a1
.Em Região, escolha REGION.
Em Zona, escolha GCP_NEG_ZONE.
Na seção Disco de inicialização, verifique se Debian GNU/Linux 12 (bookworm) está selecionado para as opções de disco de inicialização. Clique em Escolher para alterar a imagem se necessário.
Clique em Opções avançadas e faça as seguintes alterações:
- Clique em Rede e adicione as seguintes tags de rede:
allow-health-check
. - Clique em Editar
- Rede: NETWORK
- Sub-rede: LB_SUBNET_NAME
- Tipo de pilha de IP: IPv4 e IPv6 (pilha dupla)
em
Interfaces de rede, faça as
seguintes alterações e clique em Concluído:
Clique em Gerenciamento. No campo Script de inicialização, copie e cole o conteúdo do script a seguir, que é o mesmo para as quatro VMs:
#! /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 Rede e adicione as seguintes tags de rede:
Clique em Criar.
Repita as etapas a seguir para criar uma segunda VM usando a combinação de nome e zona a seguir:
- Nome:
vm-a2
, zona: GCP_NEG_ZONE
- Nome:
gcloud
Crie as VMs executando o comando a seguir duas vezes, usando essas combinações para o nome da VM e a zona dela. O conteúdo do script é idêntico para as duas VMs.
- VM_NAME de
vm-a1
e qualquer zona GCP_NEG_ZONE que você preferir. VM_NAME de
vm-a2
e a mesma zona GCP_NEG_ZONEPara aceitar o tráfego IPv4, execute o seguinte comando:
gcloud compute instances create VM_NAME \ --zone=GCP_NEG_ZONE \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=allow-health-check \ --ipv6-network-tier=PREMIUM --stack-type=IPV4_ONLY \ --subnet=LB_SUBNET_NAME \ --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 o NEG zonal
Console
Para criar um grupo de endpoints de rede zonal:
- Acesse a página "Grupos de endpoints da rede" no Google Cloud Console.
Acessar a página "Grupos de endpoints de rede" - Clique em Criar grupo de endpoints de rede.
- Insira um Nome para o NEG zonal. Chamado de GCP_NEG_NAME neste procedimento.
- Selecione o Tipo de grupo de endpoints da rede: Grupo de endpoints da rede (Zonal).
- Selecione a Rede: NETWORK
- Selecione a Sub-rede: LB_SUBNET_NAME
- Selecione a Zona: GCP_NEG_ZONE
- Insira a Porta padrão:
80
. - Clique em Criar.
Adicione endpoints ao NEG zonal:
- Acesse a página "Grupos de endpoints da rede" no Google Cloud Console.
Acessar os grupos de endpoints de rede - Clique no Nome do grupo de endpoints da rede criado na etapa anterior (GCP_NEG_NAME). Você verá a página Detalhes do grupo de endpoints da rede.
- Na seção Endpoints da rede neste grupo, clique em Adicionar endpoint da rede. Você verá a página Adicionar endpoint de rede.
- Selecione uma instância de VM para adicionar endereços IP internos como endpoints da rede. Na seção Interface de rede, são exibidos o nome, a zona e a sub-rede da VM.
- No campo Endereço IPv4, insira o endereço IPv4 do novo endpoint da rede.
- Selecione o Tipo de porta.
- Se você selecionar Padrão, o endpoint usará a porta padrão
80
para todos os endpoints no grupo de endpoints da rede. Isso é suficiente para nosso exemplo, porque o servidor Apache está atendendo solicitações na porta80
. - Se você selecionar Personalizado, insira o Número da porta do endpoint que será usado.
- Se você selecionar Padrão, o endpoint usará a porta padrão
- Para adicionar mais endpoints, clique em Adicionar endpoint da rede e repita as etapas anteriores.
- Depois de adicionar todos os endpoints, clique em Criar.
gcloud
Crie um NEG zonal (com endpoints
GCE_VM_IP_PORT
) usando o comandogcloud compute network-endpoint-groups create
:gcloud compute network-endpoint-groups create GCP_NEG_NAME \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=GCP_NEG_ZONE \ --network=NETWORK \ --subnet=LB_SUBNET_NAME
É possível especificar um
--default-port
ao criar o NEG ou especificar um número de porta para cada endpoint. conforme mostrado na próxima etapa.Adicione endpoints de pilha única a GCP_NEG_NAME.
gcloud compute network-endpoint-groups update GCP_NEG_NAME \ --zone=GCP_NEG_ZONE \ --add-endpoint='instance=vm-a1,port=80' \ --add-endpoint='instance=vm-a2,port=80'
Configurar o NEG de conectividade híbrida
Ao criar o NEG, use uma ZONE que minimize a distância geográfica
entre o Google Cloud e o ambiente
local ou de outra nuvem. Por exemplo, se você estiver hospedando um serviço em um ambiente
local em Frankfurt, na Alemanha, será possível
especificar a zona europe-west3-a
do Google Cloud ao criar o NEG.
Além disso, se você estiver usando o Cloud Interconnect, a ZONE usada para criar o NEG precisa estar na mesma região em que o anexo da VLAN do Cloud Interconnect de conectividade híbrida foi configurado.
Para ver as regiões e zonas disponíveis, consulte a documentação do Compute Engine: regiões e zonas disponíveis.
Console
Para criar um grupo de endpoints de rede de conectividade híbrida:
- Acesse a página "Grupos de endpoints da rede" no Google Cloud Console.
Acessar grupos de endpoints da rede - Clique em Criar grupo de endpoints de rede.
- Insira um Nome para o NEG híbrido. Chamado de ON_PREM_NEG_NAME neste procedimento.
- Selecione o Tipo de grupo de endpoints da rede: grupo de endpoints da rede de conectividade híbrida (zonal).
- Selecione a Rede: NETWORK
- Selecione a Sub-rede: LB_SUBNET_NAME
- Selecione a Zona: ON_PREM_NEG_ZONE
- Insira a Porta padrão.
- Clique em Criar.
Adicione endpoints ao NEG de conectividade híbrida:
- Acesse a página "Grupos de endpoints da rede" no Google Cloud Console.
Acessar a página "Grupos de endpoints de rede" - Clique no Nome do grupo de endpoints da rede criado na etapa anterior (ON_PREM_NEG_NAME). Você verá a página Detalhes do grupo de endpoints da rede.
- Na seção Endpoints da rede neste grupo, clique em Adicionar endpoint da rede. Você verá a página Adicionar endpoint de rede.
- Insira o endereço IP do novo endpoint da rede.
- Selecione o Tipo de porta.
- Se você selecionar Padrão, o endpoint usará a porta padrão para todos os endpoints no grupo de endpoints da rede.
- Se você selecionar Personalizado, insira um Número de porta diferente para ser usado pelo endpoint.
- Para adicionar mais endpoints, clique em Adicionar endpoint da rede e repita as etapas anteriores.
- Depois de adicionar todos os endpoints que não são do Google Cloud, clique em Criar.
gcloud
Crie um NEG de conectividade híbrida usando o comando
gcloud compute network-endpoint-groups create
.gcloud compute network-endpoint-groups create ON_PREM_NEG_NAME \ --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \ --zone=ON_PREM_NEG_ZONE \ --network=NETWORK
Adicione o endpoint a
on-prem-neg
:gcloud compute network-endpoint-groups update ON_PREM_NEG_NAME \ --zone=ON_PREM_NEG_ZONE \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_1,port=PORT_1" \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_2,port=PORT_2"
Use esse comando para adicionar os endpoints de rede que você configurou
anteriormente no local ou no seu ambiente de nuvem.
Repita --add-endpoint
quantas vezes forem necessárias.
Repita essas etapas para criar vários NEGs híbridos se necessário.
Configurar o balanceador de carga
Console
gcloud
- Crie um endereço IP externo estático global para o qual os clientes externos enviarão tráfego.
gcloud compute addresses create LB_IP_ADDRESS_NAME \ --global
- Crie uma verificação de integridade
para os back-ends.
gcloud compute health-checks create http HTTP_HEALTH_CHECK_NAME \ --use-serving-port
- Crie um serviço de back-end. Adicione o NEG zonal e o NEG de conectividade híbrida como back-ends a esse serviço de back-end.
- Adicione o NEG zonal como um back-end ao serviço de back-end:
Para detalhes sobre como configurar o modo de balanceamento, consulte a documentação da gcloud CLI para o parâmetrogcloud compute backend-services add-backend BACKEND_SERVICE \ --global \ --balancing-mode=RATE \ --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \ --network-endpoint-group=GCP_NEG_NAME \ --network-endpoint-group-zone=GCP_NEG_ZONE
--max-rate-per-endpoint
. - Adicione o NEG híbrido como um back-end ao serviço de back-end:
gcloud compute backend-services add-backend BACKEND_SERVICE \ --global \ --balancing-mode=RATE \ --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \ --network-endpoint-group=ON_PREM_NEG_NAME \ --network-endpoint-group-zone=ON_PREM_NEG_ZONE
- Crie um mapa de URL para encaminhar solicitações recebidas para o serviço de back-end.
gcloud compute url-maps create URL_MAP_NAME \ --default-service BACKEND_SERVICE
- Execute essa etapa somente se você quiser criar um balanceador de carga HTTPS. Ele não é necessário para balanceadores de carga HTTP.
Para criar um balanceador de carga HTTPS, você precisa ter um recurso de certificado SSL para usar no proxy HTTPS. É possível criar um recurso de certificado SSL usando um certificado SSL gerenciado pelo Google ou um certificado SSL autogerenciado. O uso de certificados gerenciados pelo Google é recomendado porque o Google Cloud recebe, gerencia e renova esses certificados automaticamente.
Para criar um certificado gerenciado pelo Google, você precisa ter um domínio. Se você não tiver um domínio, use um certificado SSL autoassinado para teste.
Para criar um recurso de certificado SSL gerenciado pelo Google: Para criar um recurso de certificado SSL autogerenciado:gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --domains DOMAIN
gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH
- Crie um proxy de destino HTTP(S) para encaminhar solicitações ao mapa de URLs.
Para um balanceador de carga HTTP, crie um proxy de destino HTTP: Para um balanceador de carga HTTPS, crie um proxy de destino HTTPS. O proxy é a parte do balanceador de carga onde é armazenado o certificado SSL para balanceamento de carga HTTPS. Portanto, nesta etapa, também é possível carregar o certificado.gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME
- Crie uma regra de encaminhamento para encaminhar as solicitações recebidas para o proxy.
Para um balanceador de carga HTTP: Para um balanceador de carga HTTPS:gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \ --address=LB_IP_ADDRESS_NAME \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --global \ --ports=80
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --address=LB_IP_ADDRESS_NAME \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --global \ --ports=443
gcloud compute backend-services create BACKEND_SERVICE \ --health-checks=HTTP_HEALTH_CHECK_NAME \ --global
Como conectar seu domínio ao balanceador de carga
Após a criação do balanceador de carga, anote o endereço IP associado a
ele, por exemplo, 30.90.80.100
. Para apontar seu domínio para o
balanceador de carga, crie um registro A
usando o serviço de registro de domínio. Se
você adicionou vários domínios ao certificado SSL, adicione um registro A
para cada um deles, todos apontando para o endereço IP do balanceador de carga. Por exemplo, para
criar registros A
para www.example.com
e example.com
, use o seguinte:
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Se você usa o Cloud DNS como provedor de DNS, consulte Adicionar, modificar e excluir registros.
Como testar o balanceador de carga
Agora que você configurou o balanceador de carga, é possível começar a enviar tráfego para o endereço IP dele.
Acesse a página Balanceamento de carga no Console do Google Cloud.
Acessar a página "Balanceamento de carga"Clique no balanceador de carga que você acabou de criar.
Anote o Endereço IP do balanceador de carga.
Enviar tráfego ao balanceador de carga
Se você tiver criado um balanceador de carga HTTP, será possível testar seu balanceador de carga usando um navegador da Web acessando
http://IP_ADDRESS
. SubstituaIP_ADDRESS
pelo endereço IP do balanceador de carga. Você será direcionado para o serviço que expôs pelo endpoint.Se você criou um balanceador de carga HTTPS, poderá testar o balanceador de carga usando
curl
da seguinte maneira. SubstituaIP_ADDRESS
pelo endereço IP do balanceador de carga. Você será direcionado para o serviço que expôs pelo endpoint.curl -k https://IP_ADDRESS
Se isso não funcionar e você estiver usando um certificado gerenciado pelo Google, confirme se o status do recurso do certificado é "ATIVO". Para mais informações, consulte Status do recurso de certificado SSL gerenciado pelo Google. Em seguida, teste o domínio que aponta para o endereço IP do balanceador de carga. Exemplo:
curl -s https://test.example.com
O teste dos endpoints que não são do Google Cloud depende do serviço que você expôs pelo endpoint NEG híbrido.