Este guia usa um exemplo para descrever os fundamentos do uso de um back-end externo (às vezes chamado 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 por proxy 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 enviar solicitações por proxy 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 gerenciado de instâncias.
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 do usuário para /cart/id/1223515
são encontradas no back-end externo por HTTPS. Todos o resto do tráfego de entrada é direcionado 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 URL.
Antes de começar
Antes de seguir as instruções deste guia, familiarize-se com o seguinte:
Visão geral dos grupos de endpoints de rede da Internet, que inclui as limitações.
Permissões
Para seguir este guia, é preciso 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 papéis de IAM do Compute Engine a seguir.
Tarefa | Papel necessário |
---|---|
Criar e modificar componentes do balanceador de carga | Administrador de rede |
Criar e modificar NEGs | Admin da instância do Compute |
Configurar um balanceador de carga com um back-end externo
Este guia mostra como configurar e testar um NEG da 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 da 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 para a solicitação.
- 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 disponibilizaçã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 NEG e o endpoint de Internet
Console
- No console do Google Cloud , acesse a página Grupos de endpoints de 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 da Internet e defina o
--network-endpoint-type
comointernet-fqdn-port
(o nome do host e a porta em que o 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 endpoint à 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.
No balanceador de carga, o serviço padrão é um serviço do Google Cloud
. O exemplo modifica o mapa de URL adicionando um comparador de caminho que
envia todas as solicitações de cart/id/1223515
para o serviço de back-end images
, que
está associado à NEG da Internet.
Console
Criar o serviço de back-end e adicionar a NEG da 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 de aplicativo clássico, clique em Menu e selecione Editar.
- Clique em Configuração de back-end.
- No menu Serviços de back-ends 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 no balanceador de carga para a NEG da 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 da 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 haja 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 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 que a origem defina cabeçalhos de armazenamento em cache válidos para armazenar conteúdo em cache.FORCE_CACHE_ALL
: armazena em cache todo o conteúdo, ignorando a diretivaprivate
,no-store
ouno-cache
em cabeçalhos de respostaCache-Control
.
Configure o serviço de back-end para adicionar o cabeçalho da 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 da Internet conectado
Autorizar os intervalos de IP necessários na lista de permissões
Para permitir que um balanceador de carga de aplicativo externo envie solicitações ao NEG da Internet, é preciso
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 IP, da seguinte maneira:
34.96.0.0/20
34.127.192.0/18
Observe os intervalos de IP e verifique se esses intervalos são permitidos pelo firewall ou pela lista de controle de acesso (ACL, na sigla em inglês) à nuvem.
Para mais informações, consulte Como autenticar solicitações.
Conectar o domínio ao balanceador de carga
Após a criação do balanceador de carga, anote o endereço IP associado ao
balanceador de carga, por exemplo, 30.90.80.100
. Para apontar o 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, pode 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 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ê irá para a página inicial do serviçohelloworld
.Se você criou um balanceador de carga HTTPS, pode testá-lo usando um navegador da Web em
https://IP_ADDRESS
. SubstituaIP_ADDRESS
pelo endereço IP do balanceador de carga. Você irá para a página inicial do serviçohelloworld
.Se isso não funcionar e se estiver sendo usado um certificado gerenciado pelo Google, confirme se o status do recurso do certificado é ATIVO. Para mais informações, consulte Status do recurso do certificado SSL gerenciado pelo Google.
Se preferir, use o
curl
na linha de comando da máquina local. SubstituaIP_ADDRESS
pelo endereço IPv4 do balanceador de carga:Se estiver sendo usado 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 estiver sendo usado um domínio personalizado, talvez seja necessário aguardar até que as configurações de DNS atualizadas sejam propagadas. Em seguida, teste o 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 da 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.
No serviço de back-end com o back-end de NEG da Internet, clique em
Editar.Desmarque a caixa de seleção Ativar o Cloud CDN.
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 o Cloud CDN for desativado e ativado de novo, a maior parte do 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á disponibilizando respostas no cache, consulte Registros e métricas para armazenamento em cache.
- Para aprender mais sobre que conteúdo é ou não armazenável em cache, consulte Visão geral do armazenamento em cache.
- Para encontrar pontos de presença do GFE, consulte Locais de cache.