Neste documento, você verá como criar um
balanceador de carga de HTTP(S) 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 receber orientações sobre esta tarefa diretamente no Console, clique em Orientações:
As seções a seguir guiam você pelas mesmas etapas que você encontra clicando em Orientações.
Como usar buckets do Cloud Storage como back-ends do balanceador de carga
Um balanceador de carga HTTP(S) 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 os utilitários gcloud
ou gsutil
, siga as instruções de instalação
no documento Guia de início rápido: como usar a ferramenta
gsutil.
Configurar um projeto padrão
Console
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
gcloud/gsutil
gcloud config set project PROJECT_ID
ou
gsutil config set project PROJECT_ID
Substitua PROJECT_ID pelo projeto que você está usando neste guia.
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 obrigató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, acesse o navegador do Cloud Storage.
Clique em Criar bucket.
Na caixa Nomear seu bucket, insira 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 Navegador para retornar ao navegador do Cloud Storage. Use estas instruções para criar um segundo bucket, mas defina o Local como us-east1. Este é o BUCKET_2_NAME neste guia.
gcloud/gsutil
gsutil mb -p PROJECT_ID -c standard -l europe-north1 -b on gs://BUCKET_1_NAME
gsutil mb -p PROJECT_ID -c standard -l us-east1 -b on gs://BUCKET_2_NAME
Substitua BUCKET_1_NAME e BUCKET_2_NAME pelos nomes dos buckets que você quer criar.
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.
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:
gsutil cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_1_NAME/never-fetch/
gsutil cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET_2_NAME/love-to-fetch/
No console, clique em Atualizar na página de detalhes de cada bucket para verificar se o arquivo foi copiado.
Tornar os buckets do Cloud Storage publicamente legíveis
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. Para mais informações, consulte Arquitetura de bucket recomendada.
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, acesse o navegador do Cloud Storage.
Clique no nome do bucket seguido pela guia Permissões.
Clique em Add.
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/gsutil
Para conceder a todos os usuários acesso para visualizar objetos nos seus buckets, execute os seguintes comandos:
gsutil iam ch allUsers:objectViewer gs://BUCKET_1_NAME
gsutil iam ch allUsers:objectViewer gs://BUCKET_2_NAME
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
Acesse a página Endereços IP externos no Console do Google Cloud.
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/gsutil
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
Criar um balanceador de carga HTTP(S) 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
Acesse a página Balanceamento de carga no Console do Google Cloud.
- Clique em Criar balanceador de carga.
- Na seção Balanceamento de carga HTTP(S), selecione Iniciar configuração.
- Em Voltado para Internet ou somente interno, selecione Da Internet para VMs ou serviços sem servidor.
- Em Global ou regional, selecione Balanceador de carga HTTP(S) global (clássico).
- Clique em Continuar.
Configurar o back-end
Na caixa Nome, digite
http-lb
.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 host e de caminho
As regras de host e os correspondentes de caminho são componentes de configuração do Mapa de URLs de um balanceador de carga de HTTP(S) 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 Selecione um certificado ou crie um novo (Opcional) Ativar o redirecionamento de HTTP para HTTPS Use essa caixa de seleção para ativar os redirecionamentos da porta 80 para a porta 443. 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/gsutil
Configurar o back-end
gcloud compute backend-buckets create dogs \
--gcs-bucket-name=BUCKET_1_NAME
gcloud compute backend-buckets create cats \
--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
Enviar o 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/gsutil
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ó são compatíveis com balanceadores de carga HTTP(S) externos globais e (clássico) externos. Eles não são compatíveis com o balanceador de carga HTTP(S) 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.
A seguir
Como usar exemplos de módulo do Terraform para balanceadores de carga HTTP(S) externos