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 de aplicativo externo. Um back-end externo é um endpoint externo ao Google Cloud. Ao usar um back-end externo com um balanceador de carga de aplicativo externo, é possível melhorar o desempenho usando o armazenamento em cache do Cloud CDN.
O guia descreve como configurar um balanceador de carga de aplicativo 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 HTTPS para o back-end externo. Neste exemplo, presumimos que o back-end externo é compatível com HTTPS.
Outras opções seriam configurar um balanceador de carga para aceitar solicitações HTTP ou HTTPS 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. Para mais informações, consulte Configurar um balanceador de carga de aplicativo clássico com um back-end de grupo de instâncias gerenciadas.
A Figura 1 mostra um exemplo de arquitetura.
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 HTTPS. 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:
Visão geral dos grupos de endpoints de rede da Internet, que inclui as limitações.
Permissões
Para seguir este guia, você precisa criar um grupo de endpoints de rede (NEG, na sigla em inglês) da Internet e criar ou modificar um balanceador de carga de aplicativo 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 |
Configurar um balanceador de carga com um back-end externo
Esta seção 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 de aplicativo 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 personalizado, que é necessário quando o back-end externo espera um valor específico para o cabeçalho
Host
da solicitação HTTP.
A configuração é semelhante à seguinte.
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
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 clássico do aplicativo, clique em Menu e selecione Editar.
- Clique em Configuração de back-end.
- No menu Serviços e buckets de back-end, selecione 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 HTTPS.
- 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 Atualizar.
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
Autorizar os intervalos de IP necessários
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
, use o seguinte:
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Se você usa o Cloud DNS como provedor de DNS, consulte Adicionar, modificar e excluir registros.
Testar o balanceador de carga de aplicativo 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.
No Console do Google Cloud, acesse 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ê criou um balanceador de carga HTTP, teste-o usando um navegador da Web em
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ê criou um balanceador de carga HTTPS, é possível testá-lo usando um navegador da Web em
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. SubstituaIP_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://www.example.com:443' --resolve www.example.com:443:IP_ADDRESS
Opcional: se você estiver usando um domínio personalizado, talvez seja necessário aguardar até 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.
Desativar o Cloud CDN
Console
No Console do Google Cloud, acesse a página Balanceamento de carga.
Clique no nome do balanceador de carga que você quer modificar.
Clique em
Editar.Clique em Configuração de back-end.
Para o serviço de back-end com o back-end de NEG da Internet, clique em
Editar.Desmarque a caixa de seleção Ativar CDN do Cloud.
Para revisar as alterações, clique em Analisar e finalizar e em Atualizar.
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 Registros e métricas para armazenamento em cache.
- 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.