Este documento descreve como migrar recursos de infraestrutura do balanceador de carga de aplicativo clássico para a infraestrutura global externa do balanceador de carga de aplicativo.
Antes de começar
Verifique se a configuração atende aos pré-requisitos a seguir.
Configurar um projeto padrão
Console
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
gcloud
gcloud config set project PROJECT_ID
Substitua PROJECT_ID
pelo projeto que você está usando neste guia.
Permissões
Para seguir este documento, é necessário ter permissões para criar instâncias de máquina virtual (VM) do Compute Engine, regras de firewall, endereços IP reservados e buckets do Cloud Storage em um projeto do Google Cloud. Você precisa ser um proprietário ou editor do projeto ou ter os seguintes papéis do IAM do Compute Engine:
Tarefa | Papel necessário |
---|---|
Criar instâncias | Função de administrador de instâncias do Compute (Beta) (roles/compute.instanceAdmin )
|
Adicionar e remover regras de firewall | Papel Administrador de segurança do Compute (roles/compute.securityAdmin )
|
Criar componentes do balanceador de carga | Papel de administrador de rede do Compute (roles/compute.networkAdmin )
|
Criar um projeto (opcional) | Papel de criador de projetos (roles/resourcemanager.projectCreator )
|
Criar buckets do Cloud Storage | Função de administrador de objetos do Storage (roles/storage.objectAdmin )
|
Para mais informações, consulte estes guias:
- Como gerenciar o controle de acesso do Cloud Load Balancing usando o IAM
- Condições do IAM para regras de encaminhamento
Criar recursos do balanceador de carga de aplicativo clássico
Neste documento, você cria os seguintes recursos do balanceador de carga de aplicativo clássico e os migra para a infraestrutura do balanceador de carga de aplicativo externo global.
- Um grupo gerenciado de instâncias com VMs.
- Um bucket do Cloud Storage.
- Um balanceador de carga de aplicativo clássico HTTP com o grupo gerenciado de instâncias e o bucket do Cloud Storage como back-ends.
Criar um grupo gerenciado de instâncias
Esta seção descreve como criar um grupo gerenciado de instâncias usando VMs do Linux com o Apache em execução. Um grupo gerenciado de instâncias cria cada uma das instâncias gerenciadas com base nos modelos de instância que você especifica.
Criar um modelo de instância
Console
No Console do Google Cloud, acesse a página Modelos de instância.
Clique em Criar modelo de instância.
Em Nome, insira
lb-backend-template
.Em Região, selecione
REGION
.Na seção Disco de inicialização, verifique se a Imagem do disco de inicialização está definida como uma imagem do Debian, como Debian GNU/Linux 12 (bookworm). Estas instruções usam comandos que estão disponíveis apenas no Debian, como
apt-get
.Clique em Opções avançadas.
Clique em Rede e, no campo Tags de rede, insira
allow-health-check
.Clique em Gerenciamento e insira o script a seguir no campo Script de inicialização.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
Clique em Criar.
gcloud
Execute o comando
gcloud compute instance-templates create
para criar
o modelo.
gcloud compute instance-templates create lb-backend-template \ --region=REGION \ --network=default \ --subnet=default \ --tags=allow-health-check \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Criar o grupo gerenciado de instâncias
Console
No Console do Google Cloud, acesse a página Grupos de instâncias.
Clique em Criar grupo de instâncias.
Selecione Novo grupo gerenciado de instâncias (sem estado).
Em Nome, insira
lb-backend-example
.Em Modelo de instância, selecione o modelo de instância
lb-backend-template
.Em Local, selecione Única zona.
Em Região, selecione
REGION
.Em Zona, selecione
ZONE
.Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias para o grupo.
Defina o Número mínimo de instâncias e o Número máximo de instâncias como
2
.Na seção Mapeamento de porta, clique em Adicionar porta.
Para o nome da porta, insira
http
. Como número de porta, insira80
.Clique em Criar.
gcloud
Execute o comando
gcloud compute instance-groups managed create
para criar o
grupo gerenciado de instâncias com base no modelo.
gcloud compute instance-groups managed create lb-backend-example \ --template=lb-backend-template \ --size=2 --zone=ZONE
Execute o comando a seguir para adicionar uma porta nomeada ao grupo de instâncias:
gcloud compute instance-groups set-named-ports lb-backend-example \ --named-ports http:80 \ --zone ZONE
Configurar uma regra de firewall
Nesta seção, você vai criar a regra de firewall fw-allow-health-check
e usar
a tag de destino allow-health-check
para identificar as VMs. Essa é uma regra de entrada
que permite o tráfego dos sistemas de verificação de integridade do Google Cloud
(130.211.0.0/22
e 35.191.0.0/16
).
Console
No Console do Google Cloud, acesse a página políticas de Firewall.
Clique em Criar regra de firewall.
Em Nome, insira
fw-allow-health-check
.Em Rede, selecione default.
Em Destinos, selecione Specified target tags.
No campo Tags de destino, insira
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
.Na seção Protocolos e portas, selecione Portas e protocolos especificados.
Marque a caixa de seleção TCP e digite
80
como o número da porta.Clique em Criar.
gcloud
Execute o comando gcloud compute firewall-rules create
para criar a regra de firewall.
gcloud compute firewall-rules create fw-allow-health-check \ --network=default \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80
Criar um bucket do Cloud Storage
Nesta seção, você cria um bucket do Cloud Storage para o balanceador de carga acessar. Para implantações de produção, recomendamos que você escolha um bucket multirregional que replica objetos automaticamente em várias regiões do Google Cloud. Isso pode melhorar a disponibilidade do seu conteúdo e a tolerância a falhas em todo o aplicativo.
Console
No console do Google Cloud, acesse a página Buckets do Cloud Storage.
Clique em Criar.
Na caixa Nomear seu bucket, digite
storage-backend-bucket
e clique em Continuar.Clique em Escolha onde armazenar os dados.
Defina Tipo de local como Região e especifique
REGION
.Clique em Criar.
Opcional: se a caixa de diálogo "O acesso público será bloqueado" aparecer, desmarque a caixa de seleção Aplicar a prevenção do acesso público neste bucket e clique em Confirmar.
gcloud
Execute o comando gcloud storage buckets create
para criar o bucket:
gcloud storage buckets create gs://storage-backend-bucket \ --default-storage-class=standard \ --location=REGION --uniform-bucket-level-access
Transferir conteúdo para seus buckets do Cloud Storage
Para testar o bucket depois de criar o balanceador de carga, copie o arquivo de imagem a seguir de um bucket público do Cloud Storage para seu próprio bucket do Cloud Storage.
gcloud
Clique em
Ativar o Cloud Shell.Execute os comandos a seguir no Cloud Shell:
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://storage-backend-bucket/never-fetch/
No console do Google Cloud, clique em Atualizar na página de detalhes do bucket para verificar se o arquivo foi copiado.
Tornar o bucket do Cloud Storage publicamente legível.
Quando você torna um bucket do Cloud Storage publicamente legível, qualquer pessoa na Internet pode listar e visualizar os objetos e os metadados (exceto ACLs). Não inclua informações confidenciais nos buckets públicos.
Para reduzir a probabilidade de exposição acidental de informações confidenciais, não armazene objetos públicos e dados confidenciais no mesmo bucket.
Console
Para conceder a todos os usuários acesso para visualizar objetos nos seus buckets, faça o seguinte:
No console do Google Cloud, acesse a página Buckets do Cloud Storage.
Clique no nome do
storage-backend-bucket
e, em seguida, na guia Permissões.Clique em Conceder acesso.
Na caixa Novos principais, digite
allUsers
.Na caixa Selecionar um papel, selecione Cloud Storage > Leitor de objetos do Storage.
Clique em Salvar.
Clique em Permitir acesso público.
gcloud
Execute o comando gcloud storage buckets add-iam-policy-binding
para conceder a todos os usuários acesso para visualizar objetos nos seus buckets:
gcloud storage buckets add-iam-policy-binding gs://storage-backend-bucket \ --member=allUsers \ --role=roles/storage.objectViewer
Reservar um endereço IP externo
Agora que suas instâncias estão funcionando, configure um endereço IP externo, estático e global que seus clientes possam usar para alcançar seu balanceador de carga.
Console
No console do Google Cloud, acesse a página Endereços IP externos.
Para reservar um endereço IPv4, clique em Reservar endereço IP estático externo.
Em Nome, insira
lb-ipv4-1
.Defina o Nível de serviço de rede como Premium.
Defina Versão IP como IPv4.
Configure Tipo como Global.
Clique em Reservar.
gcloud
Para reservar um endereço IP externo, execute o seguinte comando:
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Para anotar o endereço IPv4 que foi reservado, execute o seguinte comando:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Configurar o balanceador de carga de aplicativo clássico
Nesta seção, você vai usar HTTP (front-end) entre o cliente e o balanceador de carga.
Console
Iniciar a configuração
No console do Google Cloud, acesse a página Balanceamento de carga.
- Clique em Criar balanceador de carga.
- Em Tipo de balanceador de carga, selecione Balanceador de carga de aplicativo (HTTP/HTTPS) e clique em Próxima.
- Em Voltado ao público ou interno, selecione Voltado ao público (externo) e clique em Próxima.
- Em Implantação global ou de região única, selecione Melhor para cargas de trabalho globais e clique em Próxima.
- Em Geração do balanceador de carga, selecione Balanceador de carga de aplicativo clássico e clique em Próxima.
- Clique em Configurar.
Configuração básica
- No campo Nome do balanceador de carga, insira
web-map-http
. - Clique em Configuração de front-end, configure os campos a seguir e clique em Concluído.
- Protocolo: HTTP.
- Versão do IP: IPv4
- Endereço IP:
lb-ipv4-1
- Porta:
443
- Clique em Configuração de back-end.
- Em Serviços e buckets de back-end, clique em Criar um serviço de back-end e faça o seguinte:
- Configure os seguintes campos:
- Nome:
web-backend-service
- Protocolo: HTTP
- Porta nomeada: http
- Nome:
- Na seção Back-ends > Novo back-end, configure os campos a seguir e clique em Concluído.
- Grupo de instâncias: lb-backend-example
- Números de portas:
80
- Em Verificação de integridade, clique em Criar uma verificação de integridade, especifique os campos a seguir e clique em Salvar.
- Nome:
http-basic-check
- Protocolo: HTTP
- Nome:
- Na seção Logging, marque a caixa de seleção Ativar geração de registros.
- Clique em Criar.
- Configure os seguintes campos:
- Clique em OK.
- Em Serviços e buckets de back-end, clique em Criar um bucket de back-end, configure os campos a seguir e clique em Criar.
- Nome do bucket de back-end:
cats
- Bucket do Cloud Storage:
storage-backend-bucket
- Nome do bucket de back-end:
- Clique em OK.
- Clique em Regras de host e caminho.
- Para
cats
, insira*
no campo Host 2 e/never-fetch/*
no campo Caminho 2. - Clique em Analisar e finalizar.
- Revise suas configurações do balanceador de carga.
- Clique em Criar.
gcloud
Crie uma verificação de integridade.
gcloud compute health-checks create http http-basic-check \ --port 80
Crie um serviço de back-end.
gcloud compute backend-services create web-backend-service \ --load-balancing-scheme=EXTERNAL \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --enable-logging \ --logging-sample-rate=1.0 \ --enable-cdn \ --global
Adicione seu grupo de instâncias como back-end do serviço de back-end.
gcloud compute backend-services add-backend web-backend-service \ --instance-group=lb-backend-example \ --instance-group-zone=ZONE \ --global
Adicione um bucket de back-end.
gcloud compute backend-buckets create cats \ --gcs-bucket-name=storage-backend-bucket
Crie um mapa de URL para encaminhar as solicitações recebidas para o serviço de back-end e o bucket de back-end.
gcloud compute url-maps create web-map-http \ --default-service web-backend-service
gcloud compute url-maps add-path-matcher web-map-http \ --path-matcher-name=cats-path-matcher \ --default-backend-bucket=cats \ --new-hosts="*" \ --backend-bucket-path-rules="/never-fetch/*=cats"
Crie um proxy HTTP de destino para encaminhar solicitações a mapas de URLs.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map-http
Crie uma regra de encaminhamento global para encaminhar as solicitações recebidas para o proxy.
gcloud compute forwarding-rules create web-map-http-forwarding-rule \ --load-balancing-scheme=EXTERNAL \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Testar o tráfego enviado às suas instâncias
Agora que o serviço de balanceamento de carga está em execução, é possível enviar o tráfego para a regra de encaminhamento e observar como ele será distribuído em várias instâncias.
Console
No Console do Google Cloud, acesse a página Balanceamento de carga.
Clique em
web-map-http
.Na seção Front-end, anote o IP:Porta do balanceador de carga.
Para testar a instância de back-end, digite
http://IP_ADDRESS
na barra de endereço do navegador da Web.O navegador renderiza uma página que mostra o nome da instância que veiculou a página e a zona (por exemplo,
Page served from: lb-backend-example-xxxx
).Para testar o bucket de back-end, digite
http://IP_ADDRESS/never-fetch/three-cats.jpg
na barra de endereço do navegador da Web.O navegador renderiza a imagem.
Migrar recursos do balanceador de carga de aplicativo clássico
Nesta seção, você migra o serviço de back-end, o bucket de back-end e a regra de encaminhamento para a infraestrutura do balanceador de carga de aplicativo externo global.
Migrar o serviço de back-end
Prepare o serviço de back-end para a migração.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=PREPARE \ --global
Aguarde um pouco (aproximadamente seis minutos).
Envie parte do tráfego, como 10%, para o serviço de back-end.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_BY_PERCENTAGE \ --external-managed-migration-testing-percentage=10 \ --global
Aguarde um pouco (aproximadamente seis minutos).
Depois que o recurso fica pronto, ele envia 10% das solicitações para a infraestrutura do balanceador de carga de aplicativo externo global e 90% para a infraestrutura do balanceador de carga de aplicativo clássico.
Acesse o serviço de back-end.
Digite
http://IP_ADDRESS
na barra de endereço do navegador da Web. Se você receber a mensagemPage served from: lb-backend-example-xxxx
, execute o comando a seguir para aumentar a porcentagem.gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_BY_PERCENTAGE \ --external-managed-migration-testing-percentage=50 \ --global
Repita o processo até chegar a 100%.
Opcional: verifique os registros do serviço de back-end.
Conclua o teste e envie todo o tráfego para o serviço de back-end.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_ALL_TRAFFIC \ --global
Opcional: verifique os registros do serviço de back-end.
Mude o esquema do serviço de back-end para
EXTERNAL_MANAGED
.gcloud beta compute backend-services update web-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
Aguarde um tempo (aproximadamente seis minutos) para que o serviço de back-end seja totalmente migrado para a infraestrutura do balanceador de carga de aplicativo externo global.
Opcional: verifique os registros do serviço de back-end. O esquema de balanceamento de carga é
EXTERNAL_MANAGED
.
Migrar o bucket de back-end
Prepare o bucket de back-end para a migração.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=PREPARE \ --global
Aguarde um pouco (aproximadamente seis minutos).
Envie parte do tráfego, como 10%, para o bucket de back-end.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_BY_PERCENTAGE \ --external-managed-backend-bucket-migration-testing-percentage=10 \ --global
Aguarde um pouco (aproximadamente seis minutos).
Depois que o recurso fica pronto, ele envia 10% das solicitações para a infraestrutura do balanceador de carga de aplicativo externo global e 90% para a infraestrutura do balanceador de carga de aplicativo clássico.
Acesse o bucket de back-end.
Digite
http://IP_ADDRESS/never-fetch/three-cats.jpg
na barra de endereço do navegador da Web. Se a imagem de gatos aparecer, execute o comando abaixo para aumentar a porcentagem. Repita o processo até chegar a 100%.gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_BY_PERCENTAGE \ --external-managed-backend-bucket-migration-testing-percentage=50 \ --global
Opcional: verifique os registros do bucket de back-end.
Conclua o teste e envie todo o tráfego para o bucket de back-end.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_ALL_TRAFFIC \ --global
Opcional: verifique os registros do bucket de back-end.
Migrar a regra de encaminhamento
Mude o esquema da regra de encaminhamento para
EXTERNAL_MANAGED
.gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
Aguarde um tempo (aproximadamente seis minutos) para que a regra de encaminhamento seja totalmente migrada para a infraestrutura do balanceador de carga de aplicativo externo global.
Opcional: verifique os registros da regra de encaminhamento. O esquema de balanceamento de carga é
EXTERNAL_MANAGED
.