Este guia usa um exemplo para ensinar os princípios básicos da utilização de um back-end externo (por vezes, denominado origem personalizada) com um Application Load Balancer externo global. Um backend externo é um ponto final externo a Google Cloud. Quando usa um back-end externo com um Application Load Balancer externo global, pode melhorar o desempenho usando o armazenamento em cache da RFC.
O guia mostra como configurar um Application Load Balancer externo global com um serviço de back-end ativado para a RFC da Google que envia pedidos por proxy para um servidor de back-end externo.
Antes de seguir este guia, familiarize-se com a documentação de vista geral do NEG da Internet, incluindo as limitações.O diagrama de arquitetura seguinte mostra um front-end do Application Load Balancer externo global com um back-end externo.
Autorizações
Para seguir este guia, tem de criar um NEG de Internet e criar ou modificar um Application Load Balancer externo num projeto. Deve ser proprietário ou
editor (roles/owner
ou roles/editor
) do projeto ou ter ambas as seguintes funções do IAM do Compute Engine.
Tarefa | Função necessária |
---|---|
Crie e modifique componentes do balanceador de carga | Administrador de rede de Calcular ( roles/compute.networkAdmin )
|
Crie e modifique NEGs | Administrador de instância de computação ( roles/compute.instanceAdmin )
|
Configure o ambiente de back-end externo fora Google Cloud
Para configurar o seu ambiente, consulte as seguintes secções.
Configure pontos finais de rede
Configure um ponto final de rede para expor o seu back-end externo ao Google Cloud. Certifique-se de que o ponto final, ou seja, uma combinação de IP:Porta ou um nome de domínio totalmente qualificado (FQDN) e uma porta, é acessível através da Internet. Este ponto final é referenciado posteriormente a partir do NEG da Internet.
Para ver os requisitos de configuração detalhados para pontos finais de NEG da Internet, consulte a vista geral dos NEGs da Internet.
Permitir que o back-end externo receba tráfego de Google Cloud
Para permitir que os pedidos de Google Cloud alcancem o seu back-end externo, tem de
adicionar à lista de autorizações os intervalos de endereços IP que a Google usa para enviar pedidos para
back-ends externos. Para procurar os endereços IP que têm de ser permitidos para enviar tráfego para os seus back-ends externos, consulte o registo TXT de DNS _cloud-eoips.googleusercontent.com
através de uma ferramenta como dig
ou nslookup
.
Exemplos:
Execute o seguinte comando
nslookup
:nslookup -q=TXT _cloud-eoips.googleusercontent.com 8.8.8.8
O resultado tem o seguinte aspeto:
Non-authoritative answer: _cloud-eoips.googleusercontent.com text = "v=spf1 ip4:34.96.0.0/20 ip4:34.127.192.0/18 ~all"
Tenha em atenção os intervalos de CIDR após
ip4:
e certifique-se de que estes intervalos são permitidos pelas regras de firewall ou pelas listas de controlo de acesso (ACLs) na nuvem configuradas no seu back-end externo.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 endereços IP, da seguinte forma:
34.96.0.0/20 34.127.192.0/18
Configure o seu Google Cloud ambiente
Crie o balanceador de carga de aplicações externo global com um back-end do NEG da Internet.
Reserve um endereço IP externo
Reserve um endereço IP externo estático global que os clientes usam para alcançar a sua aplicação.
Consola
Na Google Cloud consola, aceda à página Endereços IP externos.
Clique em Reservar endereço estático externo para reservar um endereço IPv4.
Introduza um nome.
Para o Nível de serviço de rede, selecione Premium.
Para Versão do IP, selecione IPv4.
Para Tipo, selecione Global.
Clique em Reservar.
gcloud
gcloud compute addresses create LB_IP_ADDRESS_NAME \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global
Tome nota do endereço IPv4 que foi reservado:
gcloud compute addresses describe LB_IP_ADDRESS_NAME \ --format="get(address)" \ --global
Configure o NEG 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 um nome.
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.
Introduza o nome do domínio totalmente qualificado.
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 INTERNET_NEG_NAME \ --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 INTERNET_NEG_NAME \ --add-endpoint="fqdn=FULLY_QUALIFIED_DOMAIN_NAME,port=443" \ --global
Crie o balanceador de carga
Consola
Selecione o tipo de balanceador de carga
Na Google Cloud consola, aceda à página Equilíbrio de carga.
- Clique em Criar equilibrador de carga.
- Em Tipo de balanceador de carga, selecione Balanceador de carga de aplicações (HTTP/HTTPS) e clique em Seguinte.
- Para Público ou interno, selecione Público (externo) e clique em Seguinte.
- Para a Implementação global ou de região única, selecione Melhor para cargas de trabalho globais e clique em Seguinte.
- Para Geração do balanceador de carga, selecione Classic Application Load Balancer e clique em Seguinte.
- Clique em Configurar.
Configuração da interface
- Clique em Configuração do front-end.
- Introduza um nome.
Para criar um balanceador de carga HTTPS, tem de ter um certificado SSL. Recomendamos a utilização de um certificado gerido pela Google.
Verifique se as seguintes opções estão configuradas com estes valores.
Propriedade Valor (introduza um valor ou selecione uma opção conforme especificado) Protocolo HTTPS Nível de serviço de rede Premium Versão do IP IPv4 Endereço IP Selecione o endereço IP criado no passo Reserve um endereço IP externo. Porta 443 Certificado Selecione um certificado SSL existente ou crie um novo certificado.
Para criar um balanceador de carga HTTPS, tem de ter um recurso de certificado SSL para usar no proxy HTTPS. Pode criar um recurso de certificado SSL através de um certificado SSL gerido pela Google ou um certificado SSL autogerido.
Para criar um certificado gerido pela Google, tem de ter um domínio. O registo A do domínio tem de ser resolvido para o endereço IP do equilibrador de carga (neste exemplo,
example-ip
). Recomendamos a utilização de certificados geridos pela Google porque Google Cloud obtém, gere e renova Google Cloud estes certificados automaticamente. Se não tiver um domínio, pode usar um certificado SSL autoassinado para testes.Opcional: ative o redirecionamento de HTTP para HTTPS Use esta caixa de verificação para ativar os redirecionamentos de HTTP para HTTPS.
Selecione esta caixa de verificação para criar um balanceador de carga HTTP parcial adicional que usa o mesmo endereço IP que o seu balanceador de carga HTTPS e redireciona os pedidos HTTP para o frontend HTTPS do seu balanceador de carga.
Esta caixa de verificação só pode ser selecionada quando o protocolo HTTPS estiver selecionado e for usado um endereço IP reservado.
Se quiser testar este processo sem configurar um recurso de certificado SSL (ou um domínio, conforme exigido pelos certificados geridos pela Google), pode configurar um balanceador de carga HTTP.
Para criar um HTTP, verifique se as seguintes opções estão configuradas com estes valores:
Propriedade Valor (introduza um valor ou selecione uma opção conforme especificado) Protocolo HTTP Nível de serviço de rede Premium Versão do IP IPv4 Endereço IP Selecione o endereço IP criado no passo Reserve um endereço IP externo. Porta 80 Clique em Concluído.
Configuração do back-end
- Clique em Configuração de back-end.
- Clique em Serviços de back-end e contentores de back-end.
- Clique em Criar um serviço de back-end.
- Introduza um nome.
- Para Tipo de back-end, selecione Grupo de pontos finais da rede da Internet.
- Para Protocolo, selecione o protocolo que pretende usar do balanceador de carga para o NEG da Internet. Para este exemplo, selecione HTTP/2.
- Para Back-ends, na janela Novo back-end, selecione o NEG da Internet criado no passo anterior.
- Clique em Criar.
Reveja e finalize
- Clique em Rever e finalizar.
- Se tudo parecer correto, clique em Criar.
gcloud
- Crie um serviço de back-end:
gcloud compute backend-services create BACKEND_SERVICE \ --global
- Adicione o NEG da Internet ao serviço de back-end:
gcloud compute backend-services add-backend BACKEND_SERVICE \ --network-endpoint-group=INTERNET_NEG_NAME \ --global-network-endpoint-group \ --global
- Crie um mapa de URLs para encaminhar pedidos recebidos para o serviço de back-end:
gcloud compute url-maps create URL_MAP_NAME \ --default-service=BACKEND_SERVICE \ --global
Execute este passo apenas se quiser criar um balanceador de carga HTTPS. Este passo não é obrigatório para equilibradores de carga HTTP.
Para criar um balanceador de carga HTTPS, tem de ter um recurso de certificado SSL para usar no proxy de destino HTTPS. Pode criar um recurso de certificado SSL usando um certificado SSL gerido pela Google ou um certificado SSL autogerido. Recomendamos a utilização de certificados geridos pela Google, uma vez que Google Cloud obtém, gere e renova estes certificados automaticamente.
Para criar um certificado gerido pela Google, tem de ter um domínio. Se não tiver um domínio, pode usar um certificado SSL autogerido para testes.
Para criar um recurso de certificado SSL gerido pela Google: Para criar um recurso de certificado SSL autogerido:gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --domains DOMAIN
gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH
Crie um proxy HTTP(S) de destino para encaminhar pedidos para o seu mapa de URLs.
Para um balanceador de carga HTTP, crie um proxy HTTP de destino:
gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --global
Para um balanceador de carga HTTPS, crie um proxy HTTPS de destino. O proxy é a parte do balanceador de carga que contém o certificado SSL para o balanceamento de carga HTTPS, pelo que também carrega o certificado neste passo.
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME \ --global
Substitua o seguinte:
TARGET_HTTP_PROXY_NAME
: o nome do proxy HTTP de destino.TARGET_HTTPS_PROXY_NAME
: o nome do proxy HTTPS de destino.SSL_CERTIFICATE_NAME
: o nome do certificado SSL.URL_MAP_NAME
: o nome do mapa de URLs.
Crie uma regra de encaminhamento para encaminhar pedidos recebidos para o proxy.
Para um balanceador de carga HTTP:
gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \ --address=LB_IP_ADDRESS_NAME \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --global \ --ports=80
Para um balanceador de carga HTTPS:
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --address=LB_IP_ADDRESS_NAME \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --global \ --ports=443
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
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.
Consola
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.
Envie tráfego para o balanceador de carga.
Se criou um balanceador de carga HTTP, pode testá-lo acedendo a
http://IP_ADDRESS
. SubstituaIP_ADDRESS
pelo endereço IP do balanceador de carga. Deve ser direcionado para a aplicação que está a executar no back-end externo.Se criou um balanceador de carga HTTPS, pode testá-lo acedendo a
https://IP_ADDRESS
. SubstituaIP_ADDRESS
pelo endereço IP do balanceador de carga. Deve ser direcionado para a sua aplicação em execução no back-end externo.
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 domínio 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.
Configuração adicional
Esta secção expande o exemplo de configuração para oferecer opções de configuração alternativas e adicionais. Todas as tarefas são opcionais. Pode realizá-las por qualquer ordem.
Ative o Cloud CDN
Quando o Cloud CDN está ativado, o Application Load Balancer externo envia pedidos ao back-end do NEG da Internet apenas quando existe uma falha de cache do 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.Selecione Ativar Cloud CDN.
Opcional: modifique o modo de cache e as definições de TTL.
Clique em Atualizar.
Para rever as alterações, clique em Rever e finalizar e, de seguida, clique em Atualizar.
gcloud
- Para ativar o Cloud CDN no serviço de back-end, use o seguinte comando:
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --enable-cdn \ --cache-mode=CACHE_MODE
Defina o modo de cache substituindo
CACHE_MODE
por uma das seguintes opções:CACHE_All_STATIC
: coloca automaticamente em cache o conteúdo estático.USE_ORIGIN_HEADERS
(predefinição): requer que a origem defina cabeçalhos de colocação em cache válidos para colocar conteúdo em cache.FORCE_CACHE_ALL
: armazena em cache todo o conteúdo, ignorando quaisquer diretivasprivate
,no-store
ouno-cache
nos cabeçalhos de respostaCache-Control
.
Use um cabeçalho personalizado para autenticar pedidos
Para autenticar pedidos enviados para o seu back-end externo, pode definir um cabeçalho personalizado para indicar que o pedido foi feito a partir de um equilibrador de carga. Google Cloud Por exemplo, pode configurar o back-end externo para esperar um valor específico para o cabeçalho Host
do pedido HTTP e pode configurar o serviço de back-end para definir o cabeçalho Host
para esse valor esperado.
Siga os passos abaixo para configurar o serviço de back-end de modo a adicionar um cabeçalho Host
personalizado a cada pedido.
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.Clique em Configurações avançadas.
Para Cabeçalhos de pedidos personalizados, clique em Adicionar cabeçalho:
- Em Nome do cabeçalho, introduza
Host
. - Em Valor do cabeçalho, introduza
FQDN_NEG_ENDPOINT
.
- Em Nome do cabeçalho, introduza
Clique em Atualizar.
Para rever as alterações, clique em Rever e finalizar e, de seguida, clique em Atualizar.
gcloud
- Use o seguinte comando para configurar o serviço de back-end de modo a adicionar um cabeçalho `Host` personalizado a cada pedido.
gcloud compute backend-services update BACKEND_SERVICE \ --custom-request-header "Host: HEADER_VALUE" \ --global
Certifique-se de que também configurou o back-end externo para esperar um cabeçalho Host
para que possa autenticar os pedidos recebidos.
Para ver informações gerais sobre cabeçalhos de pedidos personalizados, consulte o artigo Configure cabeçalhos de pedidos personalizados. Para outros métodos de autenticação, consulte o artigo Autenticar pedidos para o back-end externo.
Ative a IAP no Application Load Balancer externo
Nota: o IAP não é compatível com o Cloud CDN.Pode configurar as CAs para estarem ativadas ou desativadas (predefinição). Se a opção estiver ativada, tem de fornecer valores para
oauth2-client-id
e oauth2-client-secret
.
Para ativar as CAs, atualize o serviço de back-end
para incluir a flag --iap=enabled
com oauth2-client-id
e
oauth2-client-secret
.
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --iap=enabled,oauth2-client-id=ID,oauth2-client-secret=SECRET \ --global
Opcionalmente, pode ativar a IAP para um recurso do Compute Engine através da Google Cloud consola, da CLI gcloud ou da API.
O que se segue?
- Para verificar se o Cloud CDN está a enviar respostas da cache, consulte a secção Ver registos.
- Para saber que conteúdo é armazenável em cache ou não, consulte o artigo Vista geral da colocação em cache.
- Para encontrar os pontos de presença do Cloud CDN, consulte o artigo Localizações da cache.
- Limpe a configuração do balanceador de carga.