O Cloud CDN aproveita o Google Cloud como escolha do balanceador de carga HTTP(S) global externo ou HTTP(S) global externo (clássico) para fornecer suporte a roteamento, verificação de integridade e IP de Anycast. Como os balanceadores de carga HTTP(S) externos globais podem ter vários tipos de instância de back-end (instâncias de VM do Compute Engine, pods do Google Kubernetes Engine, buckets do Cloud Storage ou back-ends externos ao Google Cloud), é possível escolher em quais (origens) de back-ends ativar o Cloud CDN.
Neste guia de configuração, mostraremos como criar um balanceador de carga HTTP(S) externo com o Cloud CDN ativado. O exemplo usa os seguintes recursos:
- A rede de nuvem privada virtual (VPC) padrão
- Um mapa de URLs padrão
- Um endereço IP externo reservado
- Um bucket do Cloud Storage como back-end
- Um único bucket de back-end do balanceador de carga que atua como um wrapper em torno do bucket do Cloud Storage
Um bucket de back-end é compatível com:
- Buckets do Cloud Storage de qualquer classe de armazenamento, incluindo buckets multirregionais
- Políticas do Cloud CDN para armazenamento de conteúdo em cache na borda global do Google
Para saber como o Cloud CDN funciona, consulte a visão geral do Cloud CDN.
Por padrão, o Cloud Storage usa o mesmo cache
usado pelo 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.
Back-ends de balanceador de carga
Um balanceador de carga HTTP(S) externo usa um mapa de URLs para direcionar o tráfego de URLs especificados para serviços determinados. Veja na tabela a seguir um resumo dos tipos de back-ends em que é possível hospedar conteúdo e serviços.
Configuração de back-end do balanceador de carga | Tipo de conteúdo comum | Tipos de back-end |
---|---|---|
Serviço de back-end | Dinâmico (como dados) |
|
Bucket de back-end | Estático (como imagens) |
|
Antes de começar
- Se você usa HTTPS para o front-end, crie um certificado SSL autogerenciado ou gerenciado pelo Google. Recomendamos o uso de um certificado gerenciado pelo Google.
- Se você estiver usando os utilitários
gcloud
ougsutil
, consulte Guia de início rápido: como usar a ferramentagsutil
para instalá-los.
Console
- No Console do Google Cloud, acesse a página Início.
- À direita do Google Cloud, selecione um projeto no menu suspenso.
gcloud ou gsutil
gcloud config set project PROJECT_ID
ou
gsutil config set project PROJECT_ID
Substitua PROJECT_ID
pelo ID do projeto do Google Cloud.
Crie um bucket do Cloud Storage
Se você tiver um bucket do Cloud Storage que ainda não está atribuído a um balanceador de carga, pule para a próxima etapa.
Ao criar um bucket do Cloud Storage a ser usado como back-end para um balanceador de carga HTTP(S) externo com o Cloud CDN, 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, abra o navegador do Cloud Storage.
- Clique em Criar bucket.
Especifique valores para os campos na tabela a seguir, deixando todos os outros campos com valores padrão.
Propriedade Valor (insira o valor ou selecione uma opção conforme especificado) Nome Em cada bucket, insira um nome globalmente exclusivo. Se o nome inserido não for exclusivo, você receberá uma mensagem para tentar outro nome. Tipo de local Multirregional Local Selecione uma região, como us (várias regiões nos Estados Unidos). Classe de armazenamento padrão Padrão Controle de acesso Uniforme Clique em Criar.
Anote o nome do bucket do Cloud Storage recém-criado para a próxima etapa.
gsutil
gsutil mb -p PROJECT_ID -c standard -l us-east1 -b on gs://BUCKET_NAME
Como copiar um arquivo gráfico para o bucket do Cloud Storage
Para testar a configuração, copie um arquivo gráfico de um bucket público do Cloud Storage para seu próprio bucket do Cloud Storage.
Execute o seguinte comando no Cloud Shell: Substitua
BUCKET_NAME
pelo nome exclusivo do bucket do Cloud Storage:gsutil cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_NAME/never-fetch/
No console, clique em Atualizar para verificar se o arquivo gráfico foi copiado.
Como tornar público seu bucket do Cloud Storage
Este exemplo torna o bucket do Cloud Storage publicamente legível. Essa é a abordagem recomendada para conteúdo público. Com essa configuração, qualquer pessoa na Internet pode ver e listar seus objetos e metadados, exceto Access Control Lists. A prática recomendada é dedicar buckets específicos do Cloud Storage a objetos públicos. Para mais informações, consulte Arquitetura de bucket recomendada.
Veja a seguir alternativas para tornar públicos os buckets do Cloud Storage:
Fazer com que o bucket individual do Cloud Storage seja um objeto publicamente legível. Não recomendamos essa abordagem.
Usar URLs assinados.
O procedimento a seguir concede a todos os usuários acesso para visualizar objetos no seu bucket do Cloud Storage, tornando o bucket publicamente legível.
Console
- No Console do Google Cloud, abra o navegador do Cloud Storage.
- Navegue até o bucket e clique na guia Permissões.
- Clique em Adicionar participantes.
- Em Novos principais, digite
allUsers
. - Para o papel, selecione Cloud Storage > Leitor de objetos do Storage.
- Clique em Salvar.
gsutil
gsutil iam ch allUsers:objectViewer gs://BUCKET_NAME
Como reservar um endereço IP externo
Agora que o bucket do Cloud Storage está em execução, configure um endereço IP externo, estático e global que seus clientes possam usar para acessar 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.
- Para reservar um endereço IPv4, clique em Reservar endereço estático.
- Atribua um Nome de
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
Como criar o balanceador de carga HTTP(S) externo
Neste procedimento, você cria o bucket de back-end do balanceador de carga, que serve como wrapper para o bucket do Cloud Storage. Ao criar ou editar um bucket de back-end, é possível ativar o Cloud CDN.
Console
Inicie o processo de configuração do balanceador de carga HTTP(S) externo
- No Console do Google Cloud, acesse a página Balanceamento de carga.
- Em Balanceamento de carga HTTP(S), clique em Iniciar configuração.
- Selecione Da Internet para minhas VMs e clique em Continuar.
- Em Gerenciamento de tráfego
avançado, selecione
uma destas opções:
- Para o balanceador de carga HTTP(S) externo global (clássico), selecione Balanceador de carga HTTP(S) clássico.
- Para o balanceador de carga HTTP(S) externo global, selecione Balanceador de carga HTTP(S) com gerenciamento de tráfego avançado.
- Defina o Nome de
http-lb
e vá para a próxima etapa.
Configure o back-end e ative o Cloud CDN
Crie o bucket de back-end do balanceador de carga, que servirá como um wrapper para o bucket do Cloud Storage. Ao criar ou editar um bucket de back-end, é possível ativar o Cloud CDN.
- Clique em Configuração de back-end.
- Em Serviços e buckets de back-end, clique em Criar ou selecionar serviços e buckets de back-end e, em seguida, clique em buckets de back-end > Criar um bucket de back-end.
- Defina o Nome como
cat-backend-bucket
. Ele não precisa ser globalmente único e pode ser diferente do nome existente do bucket do Cloud Storage. - Em bucket do Cloud Storage, clique em Procurar.
- Selecione o
BUCKET_NAME
global e exclusivo do Cloud Storage que você criou e clique em Selecionar. Clique em Ativar o Cloud CDN.
Opcional: modifique as configurações do modo de cache e TTL.
Clique em Criar.
Configure regras de host e correspondentes 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.
Em Regras de host e caminho, é possível manter as configurações padrão.
Para um exemplo de configuração personalizado, consulte Como adicionar buckets de back-end a balanceadores de carga.
Para saber mais sobre as regras de host e as correspondências de caminho, consulte a Visão geral dos mapas de URL.
Configure o front-end
- Clique em Configuração de front-end.
Verifique se as 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 HTTPS Nível de serviço da rede Premium Versão IP IPv4 Endereço IP example-ip
Porta 443 Certificado Selecione um certificado ou Criar um novo certificado Clique em Concluído.
Analise a configuração
- Clique em Analisar e finalizar.
- Consulte as seções Buckets de back-end, Regras de host e caminho e Front-end.
- Clique em Criar.
- 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. Ele
é referenciado como
IP_ADDRESS
.
gcloud
Configurar o back-end
gcloud compute backend-buckets create cat-backend-bucket \ --gcs-bucket-name=BUCKET_NAME \ --enable-cdn --cache-mode=CACHE_MODE
Defina o modo de cache substituindo CACHE_MODE por um dos seguintes itens:
CACHE_ALL_STATIC
: armazena automaticamente em cache o conteúdo estático. Padrão para novos back-ends.USE_ORIGIN_HEADERS
: exige a origem para definir cabeçalhos de cache válidos a fim de armazenar conteúdo em cache.FORCE_CACHE_ALL
: armazena em cache todo o conteúdo, ignorando todas as diretivasprivate
,no-store
ouno-cache
em cabeçalhos de respostaCache-Control
.
Configurar o mapa de URL
gcloud compute url-maps create http-lb \ --default-backend-bucket=cat-backend-bucket
Configurar o proxy de destino
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=http-lb
Configurar a regra de encaminhamento
-
Para um balanceador de carga HTTP(S) externo global, use o
comando da CLI gcloud com
load-balancing-scheme=EXTERNAL_MANAGED
. Essa configuração oferece recursos avançados de gerenciamento de tráfego. - Para um balanceador de carga HTTP(S) externo global (clássico), use
load-balancing-scheme=EXTERNAL
.
gcloud compute forwarding-rules create http-lb-forwarding-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=example-ip \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Como enviar tráfego para seu bucket de back-end
Depois de criar a regra de encaminhamento global, pode levar vários minutos até a configuração ser propagada globalmente. Após alguns minutos, é possível começar a enviar tráfego para o balanceador de carga.
Console
- No Console do Google Cloud, acesse a página Balanceamento de carga.
Clique em
http-lb
para expandir o balanceador de carga que você acabou de criar.Na seção Back-end, confirme se o bucket de back-end está íntegro. Você precisa ver uma marca de seleção verde ao lado do bucket de back-end. Se não estiver assim, tente atualizar a página. Pode levar alguns instantes para o console indicar que os back-ends estão íntegros.
Depois que o console mostrar que o bucket de back-end está íntegro, teste o balanceador de carga com um navegador da Web acessando
http://IP_ADDRESS/never-fetch/three-cats.jpg
. SubstituaIP_ADDRESS
pelo endereço IP do balanceador de carga. Seu navegador precisa renderizar uma página com um conteúdo que mostre o arquivo gráfico.
gcloud
Use o comando curl
para testar a resposta do URL. Substitua
IP_ADDRESS
pelo endereço IPv4 do
balanceador de carga:
Anote o endereço IPv4 que foi reservado:
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
Envie uma solicitação curl:
curl http://IP_ADDRESS/never-fetch/three-cats.jpg
Como verificar se o Cloud CDN está funcionando
Se você recarregar a página http://IP_ADDRESS/never-fetch/three-cats.jpg
várias vezes
em sequência, haverá várias ocorrências em cache.
A entrada de registro a seguir mostra uma ocorrência em cache. Para ver as ocorrências em cache, abra o Explorador de registros no Console do Google Cloud e filtre pelo nome da regra de encaminhamento.
Abrir o Explorador de registros
Explorador de registros
{ insertId: "1oek5rg3l3fxj7" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" cacheId: "SFO-fbae48ad" statusDetails: "response_from_cache" } httpRequest: { requestMethod: "GET" requestUrl: "http://LOAD_BALANCER_IP_ADDRESS/never-fetch/three-cats.jpg" requestSize: "577" status: 254 responseSize: "157" userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" remoteIp: "CLIENT_IP_ADDRESS" cacheHit: true cacheLookup: true } resource: { type: "http_load_balancer" labels: { zone: "global" url_map_name: "URL_MAP_NAME" forwarding_rule_name: "FORWARDING_RULE_NAME" target_proxy_name: "TARGET_PROXY_NAME" backend_service_name: "" project_id: "PROJECT_ID" } } timestamp: "2020-06-08T23:41:25.078651Z" severity: "INFO" logName: "projects/PROJECT_ID/logs/requests" trace: "projects/PROJECT_ID/traces/241d69833e64b3bf83fabac8c873d992" receiveTimestamp: "2020-06-08T23:41:25.588272510Z" spanId: "7b6537d3672e08e1" }
Console
- No Console do Google Cloud, acesse a página Balanceamento de carga.
Clique em
http-lb
para expandir o balanceador de carga que você acabou de criar.Na seção Back-end, confirme se o bucket de back-end está íntegro. Você precisa ver uma marca de seleção verde ao lado do bucket de back-end. Se não estiver assim, tente atualizar a página. Pode levar alguns instantes para o console indicar que os back-ends estão íntegros.
Depois que o console mostrar que o bucket de back-end está íntegro, teste o balanceador de carga com um navegador da Web acessando
http://IP_ADDRESS/never-fetch/three-cats.jpg
. SubstituaIP_ADDRESS
pelo endereço IP do balanceador de carga. Seu navegador precisa renderizar uma página com um conteúdo que mostre o arquivo gráfico.
gcloud
Use o comando curl
para testar a resposta do URL. Substitua
IP_ADDRESS
pelo endereço IPv4 do
balanceador de carga:
Anote o endereço IPv4 que foi reservado:
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
Envie uma solicitação curl:
curl -D- -o /dev/null /dev/null http://IP_ADDRESS/never-fetch/three-cats.jpg
O conteúdo é buscado no Cloud Storage, armazenado em cache pelo Cloud CDN. Em seguida, ele é validado e recuperado (quando expira) ou então é removido do cache.
O conteúdo do cache tem um cabeçalho Age
acima de zero.
O conteúdo que precisa ser atualizado antes do TTL pode ser invalidado e recuperado do Cloud Storage.
Como desativar a Cloud CDN
Console
Desative o Cloud CDN para um único bucket de back-end
- No Console do Google Cloud, acesse a página do Cloud CDN.
- No lado direito da linha de origem, clique em Menu e selecione Editar.
- Desmarque as caixas de seleção dos buckets de back-end que você não quer mais que usem o Cloud CDN.
- Clique em Atualizar.
Remova o Cloud CDN de todos os buckets de back-end de uma origem
- No console, acesse a página do Cloud CDN.
- No lado direito da linha de origem, clique em Menu e selecione Remover.
- Para confirmar, clique em Remover.
gcloud
gcloud compute backend-buckets update BACKEND_BUCKET_NAME \ --no-enable-cdn
A desativação da Cloud CDN não invalida ou limpa os caches. Se desativá-la e ativá-la de novo, a maior parte do seu conteúdo em cache talvez ainda esteja armazenada. Para impedir que o conteúdo seja usado pelos caches, é necessário invalidar esse conteúdo.
A seguir
- Para saber mais sobre qual conteúdo é armazenado em cache, consulte a Visão geral do armazenamento em cache.
- Para usar o Cloud CDN no GKE, consulte Recursos do Entrada.
- Para verificar se o Cloud CDN está exibindo respostas a partir do cache, consulte Como visualizar registros.
- Para encontrar informações sobre problemas e soluções comuns, consulte Solução de problemas.
- Para configurar políticas de filtragem e controle de acesso para seu conteúdo, consulte Políticas de segurança de borda.