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. Os balanceadores de carga HTTP(S) externos globais podem ter vários tipos de instâncias de back-end, e é possível escolher quais back-ends (ou origens) serão ativados para o Cloud CDN.
Neste guia de configuração, mostraremos como criar um balanceador de carga HTTPS externo simples com o Cloud CDN ativado. O balanceador de carga tem os recursos a seguir:- A rede de nuvem privada virtual (VPC) padrão
- Um grupo gerenciado de instâncias do Compute Engine
- Uma porta nomeada que especifica a porta 80 para o tráfego de back-end.
- Um mapa de URLs padrão
- Uma verificação de integridade de back-end simples
- Uma regra de encaminhamento de front-end simples
- Um endereço IP externo reservado
- Um certificado SSL
Para um exemplo multirregional com base em conteúdo que inclui configuração de certificado SSL e IPv6, consulte Como configurar um balanceador de carga HTTPS externo multirregional com base em conteúdo.
Para conceitos gerais, consulte a Visão geral do balanceamento de carga HTTP(S) externo.
Se você estiver usando o GKE, o balanceador de carga normalmente será configurado pelo controlador Ingress do Kubernetes. Para mais informações, consulte Configuração do Ingress para balanceamento de carga externo.
Topologia de balanceadores de carga HTTPS
Neste guia, você criará a configuração ilustrada no diagrama a seguir.
A sequência de eventos no diagrama é a seguinte:
- Um cliente envia uma solicitação de conteúdo para o endereço IPv4 externo definido na regra de encaminhamento.
- O balanceador de carga verifica se a solicitação pode ser atendida pelo cache. Nesse caso, o balanceador de carga disponibiliza o conteúdo solicitado fora do cache. Caso contrário, o processamento continuará.
- A regra de encaminhamento direciona a solicitação para o proxy HTTPS de destino.
- O proxy de destino usa a regra no mapa de URLs para determinar que o único serviço de back-end receba todas as solicitações.
- O balanceador de carga determina que o serviço de back-end tenha apenas um grupo de instâncias e direciona a solicitação para uma instância de máquina virtual (VM) nesse grupo.
- A VM exibe o conteúdo solicitado pelo usuário.
Antes de começar
Certifique-se de que sua configuração atenda aos pré-requisitos.
Configurar um recurso de certificado SSL
Crie um recurso de certificado SSL, conforme descrito 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
.
Configurar permissões
Para concluir as etapas neste guia, é preciso ter permissão para criar instâncias do Compute Engine, regras de firewall e endereços IP reservados em um projeto. Você precisa ter um papel de proprietário ou editor do projeto ou os seguintes papéis do IAM do Compute Engine.
Tarefa | Papel necessário |
---|---|
Criar instâncias | Administrador de instâncias |
Adicionar e remover regras de firewall | Administrador de segurança |
Criar componentes do balanceador de carga | Administrador de rede |
Criar um projeto (opcional) | Criador do projeto |
Para mais informações, consulte estes guias:
Como criar um grupo de instâncias gerenciadas
Para configurar um balanceador de carga com um back-end do Compute Engine, suas VMs precisam estar em um grupo de instâncias. Neste guia, descrevemos como criar um grupo de instâncias gerenciadas usando VMs do Linux com o Apache em execução para, em seguida, configurar o balanceamento.
O grupo de instâncias gerenciadas fornece VMs que executam os servidores de back-end de um balanceador de carga HTTPS externo. Para fins de demonstração, os back-ends exibem os próprios nomes de host.Console
- No Console do Google Cloud, acesse a página Grupos de instâncias.
- Clique em Criar grupo de instâncias.
- À esquerda, escolha Novo grupo de instâncias gerenciadas.
- Em Nome, insira
lb-backend-example
. - Em Local, selecione Única zona.
- Em Região, selecione a região de sua preferência. O exemplo usa
us-east1
. - Em Zona, selecione us-east1-b.
- Em Modelo de instância, selecione Criar um novo modelo de instância.
- Em Nome, insira
lb-backend-template
. - Certifique-se de que o disco de inicialização esteja configurado como uma imagem Debian. Por exemplo, Debian GNU/Linux 9 (stretch). Estas instruções usam comandos que
estão disponíveis apenas no Debian, como
apt-get
. Na guia Gerenciamento, insira o seguinte script no campo Script de inicialização em Gerenciamento, segurança, discos, rede, locatário único.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html
Na guia Rede, adicione as tags de rede:
allow-health-check
Clique em Salvar e continuar.
Em Modo de escalonamento automático, selecione Não fazer escalonamento automático.
Em Número de instâncias, insira
2
.Para criar o novo grupo de instâncias, clique em Criar.
gcloud
Crie o modelo.
gcloud compute instance-templates create lb-backend-template \ --region=us-east1 \ --network=default \ --subnet=default \ --tags=allow-health-check \ --image-family=debian-9 \ --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://169.254.169.254/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Crie 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=us-east1-b
Como adicionar uma porta nomeada ao grupo de instâncias
Para o grupo de instâncias, defina um serviço HTTP e associe um nome à porta relevante. Após a configuração do serviço de balanceamento de carga, o tráfego é encaminhado à porta nomeada.
Console
- No Console do Google Cloud, acesse a página Grupos de instâncias.
- Clique no nome do grupo de instâncias (neste exemplo,
lb-backend-example
) e clique em Editar grupo. - Clique em Especificar mapeamento de nomes de porta.
- Clique em Adicionar item.
- Para o nome da porta, insira
http
. Para o número da porta, insira80
. - Clique em Salvar.
gcloud
gcloud compute instance-groups unmanaged set-named-ports lb-backend-example \ --named-ports http:80 \ --zone us-east1-b
Como configurar uma regra de firewall
Neste exemplo, você criará a regra de firewall fw-allow-health-check
.
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
). Este exemplo usa a
tag de destino allow-health-check
para identificar as VMs.
Console
- No Console do Google Cloud, acesse a página Firewall.
- Clique em Criar regra de firewall para gerar a segunda regra.
- Em Nome, insira
fw-allow-health-check
. - Em Rede, selecione Default.
- Em Destinos, selecione Tags de destino especificadas.
- Preencha o campo Tags de destino com
allow-health-check
. - Defina Filtro de origem como Intervalos de IP.
- Defina Intervalos IP de origem como
130.211.0.0/22
e35.191.0.0/16
. - Em Protocolos e portas, selecione Portas e protocolos especificados.
- Marque a caixa de seleção tcp e digite
80
para os números de porta. - Clique em Criar.
gcloud
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
Como 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 estático.
- 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
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --global
Anote o endereço IPv4 que foi reservado:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Como configurar o balanceador de carga
Neste exemplo, você está usando HTTPS entre o cliente e o balanceador de carga. Portanto, é necessário um ou mais recursos de certificado SSL para configurar o proxy. Recomendamos o uso de um certificado gerenciado pelo Google.Console
-
No Console do Google Cloud, acesse a página Balanceamento de carga.
- Clique em Criar balanceador de carga.
- Em Balanceamento de carga HTTP(S), clique em Iniciar configuração.
- Selecione Da Internet para minhas VMs e clique em Continuar.
- No campo Nome do balanceador de carga, insira
web-map-https
. -
Clique em Configuração de back-end.
- Em Criar ou selecionar serviços e buckets de back-end, selecione Serviços de back-end > Criar um serviço de back-end.
- Adicione um nome para o serviço de back-end, como
web-backend-service
. - Em Protocolo, selecione HTTP.
- Em Porta nomeada, insira
http
. - Em Back-ends > Novo back-end >
Grupo de instâncias, selecione o grupo de instâncias,
lb-backend-example
. - Em Número da porta, insira
80
. - Mantenha as outras configurações padrão.
- Em Verificação de integridade, selecione Criar uma verificação
de integridade e adicione um nome para ela, como
http-basic-check
. - Defina o protocolo como HTTP e clique em Salvar e continuar.
- Selecione Ativar Cloud CDN.
- Mantenha as outras configurações padrão.
- Clique em Criar.
- Em Regras de host e caminho, mantenha as configurações padrão.
- Em Configuração de front-end, use os seguintes valores:
- Defina Protocolo como HTTPS.
- Defina o endereço IP como
lb-ipv4-1
, que você criou antes. - Verifique se Porta está definida como 443 para permitir o tráfego HTTPS.
- Clique na lista suspensa Certificado e selecione seu certificado SSL principal.
- Clique em Concluído.
- Clique em Analisar e finalizar.
- Quando terminar de configurar o balanceador de carga, clique em Criar.
- Aguarde o balanceador de carga ser criado.
- Clique no nome do balanceador de carga.
- Na tela Detalhes do balanceador de carga, anote o IP:Porta do balanceador de carga.
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 \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global
- Inclua 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=us-east1-b \ --global
- Crie um mapa de URLs para encaminhar as solicitações recebidas ao serviço de back-end
padrão.
gcloud compute url-maps create web-map-https \ --default-service web-backend-service
- Se você ainda não o fez, crie o recurso global de certificado SSL, conforme mostrado em:
- Como criar um recurso de certificado SSL gerenciado pelo Google
- Como criar um recurso de certificado SSL autogerenciado
O exemplo a seguir pressupõe que você já tem um arquivo de certificado chamado
certificate-file
e um arquivo de chave privada chamadoprivate-key-file
. O exemplo cria um recurso de certificado SSL chamadowww-ssl-cert
.gcloud compute ssl-certificates create www-ssl-cert \ --certificate=certificate-file \ --private-key=private-key-file \ --global
- Crie um proxy de destino HTTPS para encaminhar solicitações ao mapa de URL. O
proxy é a parte do balanceador de carga onde é armazenado o certificado SSL
para balanceamento de carga HTTPS. Portanto, carregue também seu certificado nesta etapa.
gcloud compute target-https-proxies create https-lb-proxy \ --url-map web-map-https --ssl-certificates www-ssl-cert
- Crie uma regra de encaminhamento global para encaminhar as solicitações recebidas para o proxy.
gcloud compute forwarding-rules create https-content-rule \ --address=lb-ipv4-1\ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
Como ativar o Cloud CDN
Se você ainda não ativou o Cloud CDN quando criou o serviço de back-end, faça isso agora atualizando o serviço de back-end:
gcloud compute backend-services update web-backend-service \ --enable-cdn \ --cache-mode=CACHE_MODE
Substitua CACHE_MODE por um dos seguintes:
CACHE_All_STATIC
(padrão): armazena automaticamente o conteúdo estático em cache. As respostas marcadas como não armazenáveis em cache (as diretivasprivate
,no-store
ouno-cache
nos cabeçalhos de respostaCache-Control
) não são armazenadas. Para armazenar conteúdo dinâmico em cache, o conteúdo precisa ter cabeçalhos de cache válidos. Esse é o comportamento padrão para todos os back-ends novos ativados do Cloud CDN.USE_ORIGIN_HEADERS
: exige a origem para definir cabeçalhos de cache válidos a fim de armazenar conteúdo em cache. As respostas sem esses cabeçalhos não são armazenadas em cache na borda do Google e exigem uma viagem completa à origem em todas as solicitações, o que pode afetar o desempenho e aumentar a carga no servidor de origem. Esse é o comportamento padrão para todos os back-ends existentes ativados do Cloud CDN.FORCE_CACHE_ALL
: armazena em cache todo o conteúdo, ignorando todas as diretivasprivate
,no-store
ouno-cache
em cabeçalhos de respostaCache-Control
. Isso pode resultar no armazenamento em cache de conteúdo particular por usuário (identificação de usuários). Ative a função somente em back-ends que não exibem conteúdo particular ou dinâmico, como buckets do Cloud Storage.
Para armazenar em cache automaticamente as respostas estáticas da sua origem, use a configuração modo de cache CACHE_ALL_STATIC
(Beta).
Para controlar a capacidade de armazenamento em cache de cada resposta usando diretivas de cache HTTP, defina o modo de cache para usar cabeçalhos de origem (USE_ORIGIN_HEADERS
). Para informações sobre as diretivas de cache que o Cloud CDN entende e o que não é armazenado em cache pelo Cloud CDN, consulte Conteúdo armazenável em cache e Conteúdo não armazenável em cache.
Se a origem não estiver exibindo conteúdo dinâmico por usuário, convém armazenar em cache todas as respostas da origem. Para fazer isso, use o modo FORCE_CACHE_ALL
. Esse modo armazena em cache todas as respostas, não importa o tipo de conteúdo ou as diretivas de cache.
Se você não selecionar explicitamente um modo de cache ao ativar o Cloud CDN em um back-end, os seguintes padrões serão aplicados:
Beta. A API e a ferramenta de linha de comando
gcloud
usarãoUSE_ORIGIN_HEADERS
por padrão se você ativar o Cloud CDN, mas não especificar um modo de cache. Quando você ativa o Cloud CDN em um back-end, o Console do Cloud usaCACHE_ALL_STATIC
como padrão (quando há suporte).GA. Todos os back-ends recém-ativados para o Cloud CDN usarão
CACHE_ALL_STATIC
como padrão, independentemente do método de configuração (Console do Cloud, API ou ferramentagcloud
).
Como testar o tráfego enviado às 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 no balanceador de carga que você acabou de criar.
- Na seção Back-end, confirme se as VMs estão íntegras. A
coluna Integridade deve estar preenchida, indicando que ambas as VMs
estão íntegras (
2/2
). Caso contrário, primeiro tente recarregar a página. Pode levar alguns instantes para o Console do Cloud indicar que as VMs estão íntegras. Se os back-ends não aparecerem íntegros depois de alguns minutos, revise a configuração do firewall e a tag de rede atribuída às suas VMs de back-end. - Se você usa um certificado gerenciado pelo Google, confirme se o status do recurso do certificado é "ATIVO". Para mais informações, consulte Status do recurso de certificado SSL gerenciado pelo Google.
- Depois que o Console do Cloud mostrar que as instâncias de back-end estão íntegras, teste o balanceador de carga usando um navegador da Web acessando
https://IP_ADDRESS
. SubstituaIP_ADDRESS
pelo endereço IP do balanceador de carga. - Caso você tenha usado um certificado autoassinado durante o teste, o navegador exibirá um aviso. É preciso conceder permissão explícita para que seu navegador aceite um certificado autoassinado.
- Seu navegador deve renderizar uma página que mostre o nome da instância que a exibiu e a zona (por exemplo,
Page served from: lb-backend-example-xxxx
). Caso seu navegador não renderize essa página, revise as configurações mostradas neste guia.
Como desativar o Cloud CDN
Console
Desative o Cloud CDN para um único serviço de back-end
- No Console do Google Cloud, acesse a página do Cloud CDN.
- No lado direito da linha de origem, clique emMenu e selecione Editar.
- Desmarque as caixas de seleção dos serviços de back-end que você não quer mais que usem o Cloud CDN.
- Clique em Atualizar.
Remova o Cloud CDN de todos os serviços de back-end de uma origem
- No Console do Cloud, 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-services update BACKEND_SERVICE_NAME \ --no-enable-cdn
A desativação do Cloud CDN não invalida ou limpa os caches. Se você desativar e, em seguida, reativar o Cloud CDN, a maior parte do seu conteúdo em cache talvez ainda esteja armazenada. Para impedir que o conteúdo seja disponibilizado a partir do cache, é 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 saber como o Cloud CDN funciona, consulte a visão geral do Cloud CDN.