Este guia usa um exemplo para ensinar os fundamentos do uso de um back-end externo (às vezes chamado de origem personalizada) em um balanceador de carga HTTP(S) externo. Um back-end externo é um endpoint externo ao Google Cloud. Ao usar um back-end externo com um balanceador de carga HTTP(S) externo, é possível melhorar o desempenho usando o armazenamento em cache do Cloud CDN.
Os back-ends externos não são compatíveis com o balanceador de carga HTTP(S) externo global com o recurso de gerenciamento de tráfego avançado. Só é possível usar back-ends externos com o balanceador de carga HTTP(S) externo global (versão clássica).
O guia descreve como configurar um balanceador de carga HTTP(S) externo global com um
serviço de back-end ativado para o Cloud CDN que envia proxies a um
servidor de back-end externo em backend.example.com
.
No exemplo, o balanceador de carga aceita solicitações HTTPS de clientes e envia essas solicitações como HTTP/2 para o back-end externo. Este exemplo supõe que o back-end externo seja compatível com HTTP/2.
Outras opções seriam configurar um balanceador de carga para aceitar solicitações HTTP ou HTTP/2 e usar HTTPS ao fazer proxy de solicitações para o back-end externo.
Neste, guia, presumimos que você já tenha configurado um balanceador de carga e esteja adicionando um novo back-end externo.
Uma arquitetura de exemplo tem esta aparência:
No diagrama, www.example.com
tem um front-end do balanceador de carga com o endereço IP 120.1.1.1
. Quando há uma ausência no cache, as solicitações de /cart/id/1223515
são obtidos do back-end externo por meio de HTTP/2. Todos os outros tipos de tráfego de entrada são direcionados para o serviço de back-end do Google Cloud com VMs do Compute Engine ou para o bucket de back-end, com base no mapa de URLs.
Antes de começar
Antes de seguir as instruções deste guia, familiarize-se com os itens abaixo:
Permissões
Para seguir este guia, você precisa criar uma NEG na Internet e criar ou modificar um balanceador de carga HTTP(S) externo 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 e modificar componentes do balanceador de carga | Administrador de rede |
Criar e modificar NEGs | Administrador da instância do Compute |
Como configurar um balanceador de carga com um back-end externo
Este guia mostra como configurar e testar um NEG na Internet.
Visão geral da configuração
A configuração de um NEG da Internet envolve o seguinte:
- Definindo o endpoint na Internet em uma NEG na Internet.
- Adicionar um NEG na Internet como back-end para um serviço de back-end.
- Para definir o tráfego de usuários a ser mapeado para esse serviço de back-end, configure o mapa de URLs do seu balanceador de carga HTTP(S) externo.
- Adicionar os intervalos de IPs necessários à lista de permissões
Neste exemplo, criamos os seguintes recursos:
- Uma regra de encaminhamento com o endereço IP
120.1.1.1
direciona solicitações recebidas para um proxy de destino. - O
networkTier
da regra de encaminhamento precisa serPREMIUM
. - O proxy de destino verifica cada solicitação em um mapa de URL para determinar o serviço de back-end apropriado a ela.
- Para back-ends externos, o proxy de destino precisa ser
TargetHttpProxy
ouTargetHttpsProxy
. O exemplo usaTargetHttpsProxy
. - O Cloud CDN ativado (opcional) no serviço de back-end permite o armazenamento em cache e a veiculação de respostas dos caches do Cloud CDN.
- Este exemplo inclui um
cabeçalho de solicitação
definido pelo usuário, que é obrigatório quando o back-end externo espera um
valor específico para o cabeçalho
Host
da solicitação HTTP.
A configuração é semelhante a esta:
Como criar o endpoint NEG e Internet
Console
- No Console do Google Cloud, acesse a página Grupos de endpoints da rede.
- Clique em Criar grupo de endpoints de rede.
- Digite o Nome do grupo de endpoints de rede:
example-fqdn-neg
. - Em Tipo de grupo de endpoints de rede, selecione Grupo de endpoints de rede (Internet).
- Em Porta padrão, insira
443
. - Para o Novo endpoint da rede, selecione Nome de domínio totalmente qualificado e porta.
- Para o FQDN, insira
backend.example.com
. - Em Tipo de porta, selecione Padrão e verifique se Número da porta é
443
. - Clique em Criar.
gcloud
Crie uma NEG na Internet e defina
--network-endpoint-type
comointernet-fqdn-port
(o nome do host e a porta em que seu back-end externo pode ser alcançado):gcloud compute network-endpoint-groups create example-fqdn-neg \ --network-endpoint-type="internet-fqdn-port" --global
Adicione seu endpoint ao NEG. Se uma porta não for especificada, o padrão de seleção da porta será
80
(HTTP) ou443
(HTTPS; HTTP/2), dependendo do protocolo configurado no serviço de back-end. Certifique-se de incluir a sinalização--global
:gcloud compute network-endpoint-groups update example-fqdn-neg \ --add-endpoint="fqdn=backend.example.com,port=443" \ --global
Listar o NEG na Internet criado:
gcloud compute network-endpoint-groups list --global
Saída:
NAME LOCATION ENDPOINT_TYPE SIZE example-fqdn-neg global INTERNET_FQDN_PORT 1
Liste o endpoint dentro do NEG:
gcloud compute network-endpoint-groups list-network-endpoints example-fqdn-neg \ --global
Saída:
INSTANCE IP_ADDRESS PORT FQDN backend.example.com
Como adicionar um back-end externo a um balanceador de carga
O exemplo a seguir atualiza um balanceador de carga existente.
No balanceador de carga existente, o serviço padrão é um serviço do Google Cloud. O exemplo modifica o mapa de URLs existente adicionando um correspondente de caminho que envia todas as solicitações de cart/id/1223515
para o serviço de back-end images
, que está associado à NEG na Internet.
Console
Crie o serviço de back-end e adicione a NEG na Internet
- No Console do Google Cloud, acesse a página Balanceamento de carga.
- Para adicionar o serviço de back-end a um balanceador de carga, selecione o balanceador de carga HTTP(S) externo, clique em Menu e selecione Editar.
- Clique em Configuração de back-end.
- No menu suspenso Criar ou selecionar serviços e buckets de back-end, selecione Serviços de back-end. Em seguida, clique em Criar um serviço de back-end.
- Defina o Nome do serviço de back-end como
images
. - Para o tipo de back-end, selecione Grupo de endpoints da rede na Internet.
- Selecione o protocolo que você pretende usar do balanceador de carga para a NEG na Internet. Neste exemplo, selecione HTTP/2.
- Em Novo back-end > Grupo de endpoints de rede da Internet, selecione
example-fqdn-neg
e clique em Concluído. - Selecione Ativar Cloud CDN.
- Opcional: modifique as configurações do modo de cache e TTL.
- Em Configurações avançadas, em Cabeçalhos de solicitação personalizada, clique em Adicionar cabeçalho.
- Em Nome do cabeçalho, digite
Host
. - Em Valor do cabeçalho, insira
backend.example.com
.
- Em Nome do cabeçalho, digite
- Clique em Criar.
- Mantenha a janela aberta para continuar.
Anexe o serviço de back-end a um mapa de URLs existente
- Clique em Regras de host e caminho.
- A primeira linha ou linhas têm serviços do Google Cloud na coluna à direita e uma delas já está preenchida com a regra padrão
Any unmatched (default)
para Hosts e Caminhos. - Certifique-se de que há uma linha com
images
selecionado na coluna da direita. Se ela não existir, clique em Adicionar regra de host e caminho e selecioneimages
. Preencha os outros campos da seguinte forma:- Em Hosts, insira
*
. - Em Caminhos, digite
/cart/id/1223515
.
- Em Hosts, insira
Revisar e finalizar
- Clique em Analisar e finalizar.
- Compare as configurações com o que você pretendia criar.
- Se tudo parecer certo, clique em Criar para criar o balanceador de carga HTTP(S).
gcloud
Crie um novo serviço de back-end para o NEG:
gcloud compute backend-services create images \ --global \ --enable-cdn \ --cache-mode=CACHE_MODE --protocol=HTTP2
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.USE_ORIGIN_HEADERS
(padrão): 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
.
Configure o serviço de back-end para adicionar o cabeçalho de solicitação personalizado
Host: backend.example.com
à solicitação:gcloud compute backend-services update images \ --custom-request-header "Host: backend.example.com" --global
Use o comando
backend-services add-backend
para adicionar o NEG na Internet ao serviço de back-end:gcloud compute backend-services add-backend images \ --network-endpoint-group "example-fqdn-neg" \ --global-network-endpoint-group \ --global
Anexe o novo serviço de back-end ao mapa de URLs do balanceador de carga ao criar uma nova regra de correspondência para direcionar solicitações para esse back-end:
gcloud compute url-maps add-path-matcher EXAMPLE_URL_MAP \ --default-service=GCP_SERVICE_EXAMPLE \ --path-matcher-name=CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE \ --backend-service-path-rules=/CART/ID/1223515=IMAGES
Substitua:
EXAMPLE_URL_MAP
: o nome do seu mapa de URLs atualGCP_SERVICE_EXAMPLE
: o nome de um serviço de back-end padrão existenteCUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE
: o nome dessa nova regra de caminho/CART/ID/1223515
: o caminhoIMAGES
: o nome do novo serviço de back-end com o NEG conectado à Internet
Como adicionar os intervalos de IPs necessários à lista de permissões
Para permitir que um balanceador de carga HTTP(S) externo envie solicitações ao NEG da Internet, você precisa
consultar o registro TXT _cloud-eoips.googleusercontent.com
do DNS usando uma ferramenta
como dig
ou nslookup
.
Por exemplo, execute o seguinte comando dig
:
dig TXT _cloud-eoips.googleusercontent.com | grep -Eo 'ip4:[^ ]+' | cut -d':' -f2
A saída contém dois intervalos de IPs, da seguinte maneira:
34.96.0.0/20
34.127.192.0/18
Observe os intervalos de IPs e verifique se esses intervalos são permitidos pelo firewall ou pela lista de controle de acesso à nuvem (ACL).
Para mais informações, consulte Como autenticar solicitações.
Como conectar seu domínio ao balanceador de carga
Após a criação do balanceador de carga, anote o endereço IP associado a
ele, por exemplo, 30.90.80.100
. Para apontar seu domínio para o
balanceador de carga, crie um registro A
usando o serviço de registro de domínio. Se
você adicionou vários domínios ao certificado SSL, adicione um registro A
para cada um deles, todos apontando para o endereço IP do balanceador de carga. Por exemplo, para criar registros A
para
www.example.com
e example.com
:
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Se você estiver usando o Google Domains, consulte a página de Ajuda do Google Domains para ver mais informações.
Como testar o balanceador de carga HTTP(S) externo
Agora que você configurou o balanceador de carga, é possível começar a enviar tráfego para o endereço IP dele. Se você tiver configurado um domínio, também será possível enviar tráfego para o nome do domínio. No entanto, a propagação de DNS pode levar algum tempo para ser concluída. Portanto, é possível começar usando o endereço IP para o teste.
- Acesse a página Balanceamento de carga no Console do Google Cloud.
Acessar a página "Balanceamento de carga" - Clique no balanceador de carga que você acabou de criar.
- Anote o Endereço IP do balanceador de carga.
Se você tiver criado um balanceador de carga HTTP, será possível testar seu balanceador de carga usando um navegador da Web acessando
http://IP_ADDRESS
. SubstituaIP_ADDRESS
pelo endereço IP do balanceador de carga. Você será direcionado para a página inicial do serviçohelloworld
.Se você tiver criado um balanceador de carga HTTPS, será possível testar seu balanceador de carga usando um navegador da Web acessando
https://IP_ADDRESS
. SubstituaIP_ADDRESS
pelo endereço IP do balanceador de carga. Você será direcionado para a página inicial do serviçohelloworld
.Se isso não funcionar e você estiver usando 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.
Se preferir, use o curl na linha de comando da sua máquina local. Substitua IP_ADDRESS pelo endereço IPv4 do balanceador de carga:
Se você estiver usando um certificado gerenciado pelo Google, teste o domínio que aponta para o endereço IP do balanceador de carga. Exemplo:
curl -s 'https://backend.example.com:443' --resolve backend.example.com:443:IP_ADDRESS
(Opcional) Se você estiver usando um domínio personalizado, talvez seja necessário aguardar para que as configurações de DNS atualizadas sejam propagadas. Em seguida, teste seu domínio (por exemplo,
backend.example.com
) no navegador da Web.Para ajuda com a solução de problemas, consulte Solução de problemas de back-end externo e NEG na Internet.
Como desativar a 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 Google 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 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 verificar se o Cloud CDN está exibindo respostas a partir do cache, consulte Como visualizar registros.
- Para saber qual conteúdo é armazenável em cache ou não, consulte Visão geral do armazenamento em cache.
- Para encontrar pontos de presença do GFE, consulte Locais de cache.