Este guia usa um exemplo para descrever os princípios básicos da utilização de um back-end externo (por vezes, denominado origem personalizada) num Application Load Balancer externo. Um backend externo é um ponto final externo ao Google Cloud. Quando usa um back-end externo com um Application Load Balancer externo, pode melhorar o desempenho através da colocação em cache da RFC do Cloud CDN.
O guia explica como configurar um Application Load Balancer externo global com um serviço de back-end ativado para o Cloud CDN que usa um proxy para um servidor de back-end externo em backend.example.com
.
No exemplo, o balanceador de carga aceita pedidos HTTPS de clientes e encaminha estes pedidos como HTTPS para o back-end externo. Este exemplo pressupõe que o back-end externo suporta HTTPS.
Outras opções seriam configurar um balanceador de carga para aceitar pedidos HTTP ou HTTPS e usar HTTPS ao encaminhar pedidos para o back-end externo.
Este guia pressupõe que já configurou um equilibrador de carga e que está a adicionar um novo back-end externo. Para mais informações, consulte o artigo Configure um Application Load Balancer clássico com um grupo de instâncias gerido no back-end.
A Figura 1 mostra uma arquitetura de exemplo.
No diagrama, www.example.com
tem um front-end do balanceador de carga com o endereço IP 120.1.1.1
. Quando existe uma falha de cache, os pedidos de utilizador para /cart/id/1223515
são obtidos do back-end externo através de HTTPS. Todo o
outro tráfego de entrada é direcionado para o serviço de
backend com VMs do Compute Engine ou para o contentor de backend, com base no
mapa de URLs. Google Cloud
Antes de começar
Antes de seguir este guia, familiarize-se com o seguinte:
Vista geral dos grupos de pontos finais de rede da Internet, que inclui as limitações.
Back-ends externos especificados através de NEGs da Internet
Autorizações
Para seguir este guia, tem de criar um grupo de pontos finais de rede (NEG) da Internet e criar ou modificar um Application Load Balancer externo num projeto. Deve ser proprietário ou editor do projeto, ou ter ambas as funções do IAM do Compute Engine seguintes.
Tarefa | Função necessária |
---|---|
Crie e modifique componentes do balanceador de carga | Administrador da rede |
Crie e modifique NEGs | Administrador de instâncias do Compute |
Configure um balanceador de carga com um back-end externo
Esta secção mostra como configurar e testar um NEG de Internet.
Vista geral da configuração
A configuração de um NEG de Internet envolve o seguinte:
- Definir o ponto final da Internet num NEG da Internet.
- Adicionar um NEG da Internet como back-end a um serviço de back-end.
- Definir que tráfego de utilizadores mapear para este serviço de back-end configurando o mapa de URLs do balanceador de carga da aplicação externo.
- Adicionar os intervalos de IP necessários à lista de autorizações.
Este exemplo cria os seguintes recursos:
- Uma regra de encaminhamento com o endereço IP
120.1.1.1
direciona os pedidos recebidos para um proxy de destino. - O
networkTier
da regra de encaminhamento tem de serPREMIUM
. - O proxy de destino verifica cada pedido em relação ao mapa de URLs para determinar o serviço de back-end adequado para o pedido.
- Para back-ends externos, o proxy de destino tem de ser
TargetHttpProxy
ouTargetHttpsProxy
. Este exemplo usaTargetHttpsProxy
. - A RFC da nuvem ativada (opcional) no serviço de back-end permite colocar em cache e publicar respostas a partir de caches da RFC da nuvem.
- 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
do pedido HTTP.
A configuração tem o seguinte aspeto.
Crie o NEG e o ponto final da Internet
Consola
- Na Google Cloud consola, aceda à página Grupos de pontos finais de rede.
- Clique em Criar grupo de pontos finais de rede.
- Introduza o nome do grupo de pontos finais da rede:
example-fqdn-neg
. - Para o Tipo de grupo de pontos finais da rede, selecione Grupo de pontos finais da rede (Internet).
- Para Porta predefinida, introduza
443
. - Para Novo ponto final de rede, selecione Nome do domínio totalmente qualificado e porta.
- Para o FQDN, introduza
backend.example.com
. - Para Tipo de porta, selecione Predefinição e verifique se o Número da porta é
443
. - Clique em Criar.
gcloud
Crie um NEG de Internet e defina o
--network-endpoint-type
comointernet-fqdn-port
(o nome do anfitrião e a porta onde o 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 o seu ponto final ao NEG. Se não for especificada uma porta, a seleção de portas é predefinida para a porta
80
(HTTP) ou443
(HTTPS; HTTP/2), consoante o protocolo configurado no serviço de back-end. Certifique-se de que inclui a flag--global
:gcloud compute network-endpoint-groups update example-fqdn-neg \ --add-endpoint="fqdn=backend.example.com,port=443" \ --global
Liste o NEG da Internet criado:
gcloud compute network-endpoint-groups list --global
Saída:
NAME LOCATION ENDPOINT_TYPE SIZE example-fqdn-neg global INTERNET_FQDN_PORT 1
Indique o ponto final nesse NEG:
gcloud compute network-endpoint-groups list-network-endpoints example-fqdn-neg \ --global
Saída:
INSTANCE IP_ADDRESS PORT FQDN backend.example.com
Adicione um back-end externo a um balanceador de carga
O exemplo seguinte atualiza um balanceador de carga existente.
No equilibrador de carga existente, o serviço predefinido é um Google Cloud
serviço. O exemplo modifica o mapa de URLs existente adicionando um correspondente de caminhos que envia todos os pedidos para cart/id/1223515
para o serviço de back-end images
, que está associado ao NEG da Internet.
Consola
Crie o serviço de back-end e adicione o NEG da Internet
- Na Google Cloud consola, aceda à página Equilíbrio de carga.
- Para adicionar o serviço de back-end a um equilibrador de carga existente, selecione o seu equilibrador de carga de aplicações clássico, clique em Menu e, de seguida, selecione Editar.
- Clique em Configuração de back-end.
- No menu Serviços de back-end e contentores de back-end, selecione Criar um serviço de back-end.
- Defina o nome do serviço de back-end como
images
. - Para Tipo de back-end, selecione Grupo de pontos finais da rede da Internet.
- Selecione o protocolo que pretende usar do balanceador de carga para o NEG de Internet. Para este exemplo, selecione HTTPS.
- Em Novo back-end > Grupo de pontos finais de rede da Internet, selecione
example-fqdn-neg
e, de seguida, clique em Concluído. - Selecione Ativar Cloud CDN.
- Opcional: modifique o modo de cache e as definições de TTL.
- Em Configurações avançadas, em Cabeçalhos de pedidos personalizados,
clique em Adicionar cabeçalho.
- Em Nome do cabeçalho, introduza
Host
. - Em Valor do cabeçalho, introduza
backend.example.com
.
- Em Nome do cabeçalho, introduza
- 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 anfitrião e caminho.
- A primeira linha ou linhas têm Google Cloud serviços na coluna
direita e um deles já está preenchido com a regra predefinida
Any unmatched (default)
para Anfitriões e Caminhos. - Certifique-se de que existe uma linha com
images
selecionado na coluna do lado direito. Se não existir, clique em Adicionar regra de anfitrião e caminho e selecioneimages
. Preencha os outros campos da seguinte forma:- Em Anfitriões, introduza
*
. - Em Caminhos, introduza
/cart/id/1223515
.
- Em Anfitriões, introduza
Reveja e finalize
- Clique em Rever e finalizar.
- Compare as suas definições com o que pretendia criar.
- Se estiver tudo correto, 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 uma das seguintes opções:
CACHE_ALL_STATIC
: armazena automaticamente em cache conteúdo estáticoUSE_ORIGIN_HEADERS
(predefinição): requer que a origem defina cabeçalhos de colocação em cache válidos para colocar conteúdo em cacheFORCE_CACHE_ALL
: armazena em cache todo o conteúdo, ignorando todas as diretivasprivate
,no-store
ouno-cache
nos cabeçalhos de respostaCache-Control
Configure o serviço de back-end para adicionar o cabeçalho do pedido personalizado
Host: backend.example.com
ao pedido: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 da 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
Associe o novo serviço de back-end ao mapa de URLs do balanceador de carga criando uma nova regra de correspondência para direcionar pedidos 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 o seguinte:
EXAMPLE_URL_MAP
: o nome do seu mapa de URLs existenteGCP_SERVICE_EXAMPLE
: o nome de um serviço de back-end predefinido existenteCUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE
: o nome desta nova regra de caminho/CART/ID/1223515
: o caminhoIMAGES
: o nome do novo serviço de back-end com o NEG da Internet anexado
Adicione os intervalos de IP necessários à lista de autorizações
Para permitir que um Application Load Balancer externo envie pedidos para o seu NEG de Internet, tem de
consultar o _cloud-eoips.googleusercontent.com
Registo TXT de DNS através de 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 IP, da seguinte forma:
34.96.0.0/20
34.127.192.0/18
Tome nota dos intervalos de IP e certifique-se de que estes intervalos são permitidos pela sua firewall ou lista de controlo de acesso (ACL) na nuvem.
Para mais informações, consulte o artigo Autenticar pedidos.
Associe o seu domínio ao balanceador de carga
Após a criação do balanceador de carga, tome nota do endereço IP associado ao balanceador de carga, por exemplo, 30.90.80.100
. Para direcionar o seu domínio para o
equilibrador de carga, crie um registo A
através do serviço de registo de domínios. Se
adicionou vários domínios ao seu certificado SSL, tem de adicionar um registo A
para cada um, todos a apontar para o endereço IP do equilibrador de carga. Por exemplo, para criar registos 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 usar o Cloud DNS como fornecedor de DNS, consulte o artigo Adicione, modifique e elimine registos.
Teste o balanceador de carga de aplicações externo
Agora que configurou o equilibrador de carga, pode começar a enviar tráfego para o endereço IP do equilibrador de carga. Se configurou um domínio, também pode enviar tráfego para o nome de domínio. No entanto, a propagação de DNS pode demorar algum tempo a ser concluída, pelo que pode começar por usar o endereço IP para testes.
Na Google Cloud consola, aceda à página Equilíbrio de carga.
Clique no balanceador de carga que acabou de criar.
Tome nota do endereço IP do balanceador de carga.
Se criou um balanceador de carga de HTTP, pode testá-lo através de um navegador de Internet em
http://IP_ADDRESS
. SubstituaIP_ADDRESS
pelo endereço IP do balanceador de carga. É feito o redirecionamento para a página inicial do serviçohelloworld
.Se criou um balanceador de carga HTTPS, pode testá-lo através de um navegador de Internet em
https://IP_ADDRESS
. SubstituaIP_ADDRESS
pelo endereço IP do balanceador de carga. É feito o redirecionamento para a página inicial do serviçohelloworld
.Se isso não funcionar e estiver a usar um certificado gerido pela Google, confirme que o estado do recurso do certificado é ACTIVE. Para mais informações, consulte o estado do recurso do certificado SSL gerido pela Google.
Em alternativa, pode usar
curl
a partir da linha de comandos da sua máquina local. SubstituaIP_ADDRESS
pelo endereço IPv4 do equilibrador de carga.Se estiver a usar um certificado gerido pela Google, teste o domínio que aponta para o endereço IP do balanceador de carga. Por exemplo:
curl -s 'https://www.example.com:443' --resolve www.example.com:443:IP_ADDRESS
Opcional: se estiver a usar um domínio personalizado, pode ter de aguardar que as definições de DNS atualizadas sejam propagadas. Em seguida, teste o seu domínio (por exemplo,
backend.example.com
) no navegador de Internet.Para obter ajuda na resolução de problemas, consulte o artigo Resolva problemas de NEG externos e de back-end da Internet.
Desative o Cloud CDN
Consola
Na Google Cloud consola, aceda à página Equilíbrio de carga.
Clique no nome do equilibrador de carga que quer modificar.
Clique em
Editar.Clique em Configuração de back-end.
Para o serviço de back-end com o back-end do NEG da Internet, clique em
Editar.Desmarque a caixa de verificação Ativar RFC.
Para rever as alterações, clique em Rever e finalizar e, de seguida, clique em Atualizar.
gcloud
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --no-enable-cdn
A desativação do Cloud CDN não invalida nem remove as caches. Se desativar e voltar a ativar o Cloud CDN, a maioria ou todo o seu conteúdo em cache pode continuar em cache. Para impedir que o conteúdo seja usado pelas caches, tem de invalidar esse conteúdo.
O que se segue?
- Para verificar se o Cloud CDN está a publicar respostas a partir da cache, consulte o artigo Registos e métricas para o armazenamento em cache.
- Para saber que conteúdo é armazenável em cache ou não, consulte o artigo Vista geral da colocação em cache.
- Para encontrar pontos de presença da GFE, consulte o artigo Localizações da cache.