Como configurar o Cloud CDN com um bucket de back-end

O Cloud CDN aproveita os balanceadores de carga HTTP(S) globais do Google Cloud para fornecer suporte a roteamento, verificação de integridade e IP do 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 origens externas de fora do Google Cloud), é possível escolher em quais back-ends. (origens) ativar o Cloud CDN.

Neste guia de configuração, mostramos como criar um balanceador de carga HTTP(S) externo simples com o Cloud CDN ativado. O exemplo usa os seguintes recursos:

  • A rede de nuvem privada virtual (VPC, na sigla em inglês) 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 no perímetro global do Google

Para saber como o Cloud CDN funciona, consulte a visão geral do Cloud CDN.

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 especificados. 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 típico Tipos de back-end
Serviço de back-end Dinâmico (como dados)
  • Grupos de instâncias não gerenciadas
  • Grupos de instâncias gerenciadas
  • Grupos de endpoints de rede internos para o Google Cloud
  • Grupos de endpoints de rede externos para o Google Cloud
Bucket de back-end Estático (como imagens)
  • Buckets do Cloud Storage (discutidos nesta página)

Antes de começar

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 automaticamente objetos em várias regiões do Google Cloud. Isso pode melhorar a disponibilidade do seu conteúdo e melhorar a tolerância a falhas em todo o aplicativo.

Console

  1. No Console do Cloud, abra o navegador do Cloud Storage:

    Abrir o navegador do Storage

  2. Clique em Create bucket.
  3. Especifique valores para os campos na tabela a seguir, deixando todos os outros campos com valores padrão.

    Property Valor (insira o valor ou selecione uma opção conforme especificado)
    Nome Para 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).
    Default storage class Padrão
    Controle de acesso Uniforme
  4. Clique em Criar

  5. 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 no 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.

  1. Execute o comando a seguir 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/static/us/
    
  2. No Console do Cloud, clique em Atualizar para verificar se o arquivo gráfico foi copiado.

Como tornar seu bucket do Cloud Storage público

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 visualizar e listar seus objetos e metadados, exceto ACLs. 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:

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

  1. No Console do Cloud, abra o navegador do Cloud Storage:

    Abrir o navegador do Storage

  2. Navegue até o bucket e clique na guia Permissões.
  3. Clique em Adicionar membros.
  4. Em Novos membros, digite allUsers.
  5. Para o papel, selecione Cloud Storage > Visualizador de objetos do Storage.
  6. Clique em Save.

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 alcançar seu balanceador de carga.

Essa etapa é opcional, mas recomendada, porque um endereço IP externo estático fornece um único endereço para apontar o domínio.

Console

  1. No Console do Google Cloud, acesse a página Endereços IP externos.

    Acessar a página "Endereços IP externos"

  2. Para reservar um endereço IPv4, clique em Reservar endereço estático.
  3. Atribua um Nome de example-ip.
  4. Defina o Nível de serviço de rede como Premium.
  5. Defina Versão IP como IPv4.
  6. Defina Tipo como Global.
  7. 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

Se quiser criar um balanceador de carga HTTPS, você precisará ter um recurso de certificado SSL que possa ser adicionado ao front-end do balanceador de carga. Para mais informações, consulte a visão geral dos certificados SSL.

Console

Inicie o processo de configuração do balanceador de carga HTTP(S) externo.

  1. No Console do Cloud, acesse a página Balanceamento de carga.

    Acessar a página "Balanceamento de carga"

  2. Em Balanceamento de carga HTTP(S), clique em Iniciar configuração.
  3. Selecione Da Internet para minhas VMs e clique em Continuar.
  4. Defina o Nome como http-lb e acesse a próxima etapa.

Configurar o back-end e ativar 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.

  1. Clique em Configuração de back-end.
  2. Em Serviços e buckets de back-end, clique 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.
  3. Defina o Nome como backend-bucket1. Ele não precisa ser globalmente único e pode ser diferente do nome do bucket real do Cloud Storage.
  4. Em bucket do Cloud Storage, clique em Procurar.
  5. Selecione o BUCKET_NAME global e exclusivo do Cloud Storage que você criou e clique em Selecionar.
  6. Clique em Ativar o Cloud CDN.

  7. Clique em Criar

Configurar regras de host e correspondentes de caminho

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.

Configurar o front-end

  1. Clique em Configuração de front-end.
  2. Verifique se as opções na tabela a seguir estão configuradas com esses valores.

    Property Valor (digite o valor ou selecione a opção conforme especificado)
    Protocolo HTTP
    Nível de serviço da rede Premium
    Versão IP IPv4
    Endereço IP example-ip
    Port 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.

    Property Valor (digite o valor ou selecione a opção conforme especificado)
    Protocolo HTTPS
    Nível de serviço da rede Premium
    Versão IP IPv4
    Endereço IP example-ip
    Port 443
    Certificado Selecione um certificado ou crie um novo
  3. Clique em Done.

Analisar a configuração

  1. Clique em Analisar e finalizar.
  2. Consulte as seções buckets de back-end, Regras de host e caminho e Front-end.
  3. Clique em Criar
  4. Aguarde o balanceador de carga ser criado.
  5. Clique no nome do balanceador de carga (http-lb).
  6. Anote o endereço IP do balanceador de carga para a próxima tarefa. Ele é referenciado como IP_ADDRESS.

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 em todo o mundo. Após alguns minutos, é possível começar a enviar tráfego para o balanceador de carga.

Console

  1. No Console do Cloud, acesse a página Balanceamento de carga.

    Acessar a página "Balanceamento de carga"

  2. 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 do Cloud indicar que os back-ends estão íntegros.

  3. Depois que o Console do Cloud mostrar que o bucket de back-end está íntegro, teste o balanceador de carga usando um navegador da Web acessando http://IP_ADDRESS/static/us/three-cats.jpg. Substitua IP_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/static/us/three-cats.jpg

Como verificar se o Cloud CDN está funcionando

ocorrência em cacheSe você recarregar a página http://ip-address/static/us/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 Visualizador de registros no Console do Google Cloud e filtre pelo nome da regra de encaminhamento.

Abrir o Visualizador de registros

Leitor de registros

2020-06-08 16:41:30.078 PDT
GET
304
157 B
null
Chrome 83
http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg

CLIENT_IP_ADDRESS - "GET http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg" 304 157 "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" Expand all | Collapse all{ httpRequest: { cacheHit: true cacheLookup: true remoteIp: "CLIENT_IP_ADDRESS" requestMethod: "GET" requestSize: "577" requestUrl: "http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg" responseSize: "157" status: 304 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" } insertId: "1oek5rg3l3fxj7" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" cacheId: "SFO-fbae48ad" statusDetails: "response_from_cache" } logName: "projects/PROJECT_ID/logs/requests" receiveTimestamp: "2020-06-08T23:41:30.588272510Z" resource: { labels: { backend_service_name: "" forwarding_rule_name: "http-lb-forwarding-rule" project_id: "PROJECT_ID" target_proxy_name: "http-lb-target-proxy" url_map_name: "http-lb" zone: "global" } type: "http_load_balancer" } severity: "INFO" spanId: "7b6537d3672e08e1" timestamp: "2020-06-08T23:41:30.078651Z" trace: "projects/PROJECT_ID/traces/241d69833e64b3bf83fabac8c873d992" }

Como desativar a Cloud CDN

Console

Desativar o Cloud CDN para um único bucket de back-end

  1. No Console do Google Cloud, acesse a página do Cloud CDN.

    Acessar a página do Cloud CDN

  2. No lado direito da linha de origem, clique em Menu e selecione Editar.
  3. Desmarque as caixas de seleção dos buckets de back-end que você não quer mais que usem o Cloud CDN.
  4. Clique em Update.

Remover o Cloud CDN para todos os buckets de back-end de uma origem

  1. No Console do Cloud, acesse a página do Cloud CDN.

    Acessar a página do Cloud CDN

  2. No lado direito da linha de origem, clique em Menu e selecione Remover.
  3. Para confirmar, clique em Remover.

gcloud

gcloud compute backend-buckets update BACKEND_BUCKET_NAME \
    --no-enable-cdn

A desativação do 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