Neste documento, você verá como criar um
balanceador de carga de de aplicativo externo
a fim de encaminhar solicitações de conteúdo estático para buckets
do Cloud Storage. Depois de
configurar um balanceador de carga com os buckets de back-end, as solicitações para caminhos de URL que
começam com /love-to-fetch
são enviadas para o bucket us-east1
do Cloud Storage. Todas as outras solicitações são enviadas para o bucket europe-north1
do Cloud Storage, independentemente da região do usuário.
Caso seus back-ends exibam conteúdo dinâmico por HTTP(S), use serviços de back-end em vez de buckets de back-end.
Para seguir as instruções passo a passo desta tarefa diretamente no console do Google Cloud, clique em Orientação:
Como usar buckets do Cloud Storage como back-ends do balanceador de carga
Um balanceador de carga de aplicativo externo usa um mapa de URLs para direcionar o tráfego de caminhos de URL especificados para seus back-ends.
No diagrama a seguir, o balanceador de carga envia tráfego com um caminho de
/love-to-fetch/
para um bucket do Cloud Storage na região us-east1
. Todas as outras solicitações vão para um bucket do Cloud Storage
na região europe-north1
.
Por padrão, o Cloud Storage usa o mesmo cache
que o Cloud CDN. Se você ativar o Cloud CDN no bucket de back-end,
será possível usar os controles do Cloud CDN no seu conteúdo.
Os controles do Cloud CDN incluem, por exemplo, modos de cache, URLs assinados e
invalidação. O Cloud CDN também permite armazenar conteúdo grande em cache (mais de 10 MB). Se
você não ativar o Cloud CDN no bucket de back-end, só será possível usar
cabeçalhos Cache-Control
de origem para controlar o armazenamento em cache de conteúdo menor, conforme definido
pelos metadados do Cloud Storage.
Antes de começar
Certifique-se de que sua configuração atenda aos seguintes pré-requisitos. Se você estiver usando
o utilitário gcloud storage
, instale-o seguindo as instruções em
Descobrir o armazenamento de objetos com a ferramenta gcloud.
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.
Terraform
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Permissões
Para seguir este guia, você precisa criar buckets do Cloud Storage e um balanceador de carga em um projeto. É 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 componentes do balanceador de carga | Administrador de rede |
Criar buckets do Cloud Storage | Administrador de objetos do Storage |
Para mais informações, consulte estes guias:
Configurar um recurso de certificado SSL
Para um balanceador de carga HTTPS, crie um recurso de certificado SSL, conforme descrito na documentação a seguir:
Recomendamos o uso de um certificado gerenciado pelo Google.
Este exemplo pressupõe que você já tenha um recurso de certificado SSL chamado
www-ssl-cert
.
Preparar os conteúdos e buckets do Cloud Storage
O processo de preparação dos buckets do Cloud Storage é o seguinte:
Crie os buckets.
Copie conteúdo para os buckets.
Forneça acesso público aos buckets.
Criar buckets do Cloud Storage
Neste exemplo, você cria dois buckets 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.
Anote os nomes dos buckets do Cloud Storage criados, porque eles serão usados posteriormente. Neste guia, elas são chamadas de BUCKET_1_NAME e BUCKET_2_NAME.
Console
No console do Google Cloud, acesse a página Buckets do Cloud Storage.
Clique em Criar bucket.
Na caixa Nomear seu bucket, digite um nome globalmente exclusivo que siga as diretrizes de nomenclatura.
Clique em Escolha onde armazenar os dados.
Defina o Tipo de local como Região.
Defina Local como europe-north1. Este é o BUCKET_1_NAME neste guia.
Clique em Criar.
Clique em Buckets para retornar à página "Buckets do Cloud Storage". Use estas instruções para criar um segundo bucket, mas defina Localização como us-east1. Este é o BUCKET_2_NAME neste guia.
gcloud
gcloud storage buckets create gs://BUCKET_1_NAME --project=PROJECT_ID --default-storage-class=standard --location=europe-north1 --uniform-bucket-level-access
gcloud storage buckets create gs://BUCKET_2_NAME --project=PROJECT_ID --default-storage-class=standard --location=us-east1 --uniform-bucket-level-access
Substitua BUCKET_1_NAME
e BUCKET_2_NAME
pelos nomes dos buckets que você quer criar.
Terraform
Para criar o serviço de back-end, use o recurso google_storage_bucket
.
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Transferir conteúdo para seus buckets do Cloud Storage
Para testar a configuração mais tarde, copie as seguintes imagens de um bucket público do Cloud Storage para seus próprios buckets do Cloud Storage.
gcloud
Clique em
Ativar o Cloud Shell.Execute os comandos a seguir no Cloud Shell, substituindo as variáveis de nome do bucket pelos nomes dos seus buckets do Cloud Storage:
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_1_NAME/never-fetch/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET_2_NAME/love-to-fetch/
Terraform
Para copiar itens para o bucket, use o recurso google_storage_bucket_object
.
Se preferir, use o recurso null_resource
.
resource "null_resource" "upload_cat_image" { provisioner "local-exec" { command = "gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://${google_storage_bucket.bucket_1.name}/never-fetch/" } } resource "null_resource" "upload_dog_image" { provisioner "local-exec" { command = "gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://${google_storage_bucket.bucket_2.name}/love-to-fetch/" } }
No console do Google Cloud, clique em Atualizar na página de detalhes de cada bucket para verificar se o arquivo foi copiado.
Deixar seus buckets do Cloud Storage com permissão de leitura pública
Quando você torna os buckets do Cloud Storage publicamente legíveis, qualquer pessoa na Internet pode listar e visualizar seus objetos e visualizar seus metadados (excluindo 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 acesso a todos os usuários para visualizar objetos nos seus buckets, repita o procedimento a seguir para cada bucket:
No console do Google Cloud, acesse a página Buckets do Cloud Storage.
Clique no nome do bucket e depois na guia Permissões.
Clique em Adicionar.
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
Para conceder a todos os usuários acesso para visualizar objetos nos seus buckets, execute os seguintes comandos:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET_2_NAME --member=allUsers --role=roles/storage.objectViewer
Terraform
Para conceder a todos os usuários acesso para visualizar objetos nos seus buckets, use o
recurso google_storage_bucket_iam_member
e especifique o membro
allUsers
.
Reservar um endereço IP externo
Depois de configurar os buckets do Cloud Storage, é possível reservar um endereço IP externo estático global que o público-alvo use para alcançar seu balanceador de carga.
Essa etapa é opcional, mas recomendada, porque um endereço IP externo e estático fornece um único endereço para apontar ao domínio.
Console
No console do Google Cloud, acesse a página Endereços IP externos.
Clique em Reservar endereço estático.
Na caixa Nome, digite
example-ip
.Defina o Nível de serviço de rede como Premium.
Defina Versão IP como IPv4.
Defina Tipo como Global.
Clique em Reservar.
gcloud
gcloud compute addresses create example-ip \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global
Anote o endereço IPv4 que foi reservado:
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
Terraform
Para reservar um endereço IP externo, use o
recurso google_compute_global_address
.
Criar um balanceador de carga de aplicativo externo com buckets de back-end
Estas instruções abrangem a criação de um balanceador de carga HTTP ou HTTPS. Para criar um balanceador de carga HTTPS, é necessário adicionar um recurso de certificado SSL ao front-end do balanceador de carga. Para mais informações, consulte a visão geral dos certificados SSL.
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
- Na caixa Nome, digite
http-lb
.
Configurar o back-end
Clique em Configuração de back-end.
Clique na caixa Serviços e buckets de back-end e depois em em Criar um bucket de back-end.
Na caixa Nome do bucket de back-end, insira
cats
.Na caixa Bucket do Cloud Storage, clique em Procurar.
Selecione BUCKET_1_NAME e clique em Selecionar. A criação do bucket de back-end
cats
primeiro o torna padrão, para onde todas as solicitações de tráfego sem correspondência são direcionadas. Não é possível alterar as regras de redirecionamento de um bucket de back-end padrão no balanceador de carga.Clique em Criar.
Use o mesmo processo para criar um bucket de back-end chamado
dogs
e selecione BUCKET_2_NAME.Clique em OK.
Configurar regras de roteamento
As regras de roteamento determinam como o tráfego é direcionado. Para configurar o roteamento, defina as regras de host e os correspondentes de caminho, que são componentes de configuração do mapa de URLs de um balanceador de carga de aplicativo externo. Para configurar as regras deste exemplo:
- Clique em Regras de host e caminho.
- Para
dogs
, insira*
no campo Hosts e/love-to-fetch/*
no campo Caminhos.
Configure o front-end
Clique em Configuração de front-end.
Verifique se as seguintes opções estão configuradas com estes valores:
Propriedade Valor: digite um valor ou selecione uma opção conforme especificado Protocolo HTTP Nível de serviço da rede Premium Versão IP IPv4 Endereço IP example-ip Porta 80 Se você quiser criar um balanceador de carga HTTPS em vez de um balanceador de carga HTTP, precisará ter um certificado SSL (
gcloud compute ssl-certificates list
) e preencher os campos da seguinte maneira:Propriedade Valor: digite um valor ou selecione uma opção conforme especificado Protocolo HTTP(S) Nível de serviço da rede Premium Versão IP IPv4 Endereço IP example-ip Porta 443 Certificado Selecione o certificado www-ssl-cert
que você criou na seção Configurar um recurso de certificado SSL ou crie um novo certificado.Opcional: ativar o redirecionamento de HTTP para HTTPS Use essa caixa de seleção para ativar os redirecionamentos. Ativar esta caixa de seleção cria um balanceador de carga HTTP parcial que utiliza o mesmo endereço IP que o balanceador de carga HTTPS e redireciona solicitações HTTP para o front-end HTTPS do balanceador de carga.
Essa caixa de seleção poderá ser marcada somente quando o protocolo HTTPS estiver selecionado e um endereço IP reservado for utilizado.
Clique em Concluído.
Analise a configuração
Clique em Analisar e finalizar.
Verifique o Front-end, as Regras de host e caminho e os buckets de back-end.
Clique em Criar e aguarde o balanceador de carga ser criado.
Clique no nome do balanceador de carga (http-lb).
Anote o endereço IP do balanceador de carga para a próxima tarefa. Neste guia, ele é chamado de IP_ADDRESS.
gcloud
Configurar o back-end
gcloud compute backend-buckets create cats \ --gcs-bucket-name=BUCKET_1_NAME
gcloud compute backend-buckets create dogs \ --gcs-bucket-name=BUCKET_2_NAME
Configurar o mapa de URL
gcloud compute url-maps create http-lb \ --default-backend-bucket=cats
gcloud compute url-maps add-path-matcher http-lb \ --path-matcher-name=path-matcher-2 \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=dogs" \ --default-backend-bucket=cats
Configurar o proxy de destino
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=http-lb
Configurar a regra de encaminhamento
gcloud compute forwarding-rules create http-lb-forwarding-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --address=example-ip \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Terraform
Para criar o balanceador de carga, use os seguintes recursos do Terraform.
Configure o back-end
Para criar o serviço de back-end, use o recurso google_compute_backend_bucket
.
Configurar o mapa de URL
Para criar o mapa de URL, use o recurso google_compute_url_map
.
Configurar o proxy de destino
Para criar o proxy HTTP de destino, use o recurso google_compute_target_http_proxy
.
Configurar a regra de encaminhamento
Para criar a regra de encaminhamento, use o recurso google_compute_global_forwarding_rule
.
OBSERVAÇÃO: para alterar o modo para o balanceador de carga clássico do aplicativo, defina o atributo load_balancing_scheme
como "EXTERNAL"
em vez de "EXTERNAL_MANAGED"
.
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Enviar tráfego para o balanceador de carga
Alguns minutos após a configuração do balanceador de carga, é possível começar a enviar tráfego para o endereço IP dele.
Console
Em um navegador da Web, acesse os seguintes endereços para testar o balanceador de carga, substituindo IP_ADDRESS pelo endereço IP do balanceador de carga:
http://IP_ADDRESS/love-to-fetch/two-dogs.jpg
http://IP_ADDRESS/never-fetch/three-cats.jpg
Se você tiver configurado um balanceador de carga HTTP, verifique se o navegador não redireciona automaticamente para HTTPS.
gcloud
Use o comando curl
para testar a resposta desses URLs. Substitua
IP_ADDRESS
pelo endereço IPv4 do balanceador de carga:
curl http://IP_ADDRESS/love-to-fetch/two-dogs.jpg
curl http://IP_ADDRESS/never-fetch/three-cats.jpg
Limitações
- Os buckets de back-end são compatíveis apenas com balanceadores de carga de aplicativo externos globais e o balanceador de carga de aplicativo clássico. Eles não são compatíveis com o balanceador de carga de aplicativo externo regional ou qualquer outro tipo de balanceador de carga.
- Os buckets de back-end não são compatíveis com o Identity-Aware Proxy.
O balanceador de carga clássico do aplicativo não é totalmente compatível com uploads para buckets do Cloud Storage. Em particular, todos os parâmetros de consulta na solicitação são descartados ao fazer upload para o Cloud Storage.
A seguir
Como usar exemplos de módulo do Terraform para balanceadores de carga de aplicativo externos