Esta página mostra como criar um Application Load Balancer externo para encaminhar pedidos para back-ends sem servidor. Aqui, o termo sem servidor refere-se aos seguintes produtos de computação sem servidor:
- App Engine
- Funções do Cloud Run
- Cloud Run
A integração de equilibradores de carga de aplicações externos com o API Gateway permite que os seus backends sem servidor tirem partido de todas as funcionalidades fornecidas pelo Cloud Load Balancing. Para configurar um balanceador de carga de aplicações externo para encaminhar tráfego para um API Gateway, consulte o artigo Introdução a um balanceador de carga de aplicações externo para o API Gateway. O suporte do balanceador de carga de aplicações externo para o gateway da API está em pré-visualização.
Os NEGs sem servidor permitem-lhe usar Google Cloud apps sem servidor com equilibradores de carga de aplicações externos. Depois de configurar um balanceador de carga com o back-end do NEG sem servidor, os pedidos ao balanceador de carga são encaminhados para o back-end da app sem servidor.
Para saber mais sobre os NEGs sem servidor, leia a vista geral dos NEGs sem servidor.
Antes de começar
- Implemente um App Engine, funções do Cloud Run ou um serviço do Cloud Run.
- Se ainda não o fez, instale a CLI Google Cloud.
- Configurar autorizações.
- Adicione um recurso de certificado SSL.
Implemente um serviço do App Engine, do Cloud Run ou funções do Cloud Run
As instruções nesta página pressupõem que já tem um serviço do Cloud Run, das funções do Cloud Run ou do App Engine em execução.
Para o exemplo nesta página, usámos o início rápido do Python do Cloud Run para implementar um serviço do Cloud Run na região us-central1
. O resto desta página mostra-lhe como configurar um Application Load Balancer externo que usa um back-end de NEG sem servidor para encaminhar pedidos para este serviço.
Se ainda não implementou uma app sem servidor ou se quiser experimentar um NEG sem servidor com uma app de exemplo, use um dos seguintes inícios rápidos. Pode criar uma app sem servidor em qualquer região, mas tem de usar a mesma região mais tarde para criar o NEG sem servidor e o equilibrador de carga.
Cloud Run
Para criar uma aplicação simples Hello World, agrupe-a numa imagem de contentor e, em seguida, implemente a imagem de contentor no Cloud Run. Consulte o Início rápido: crie e implemente.
Se já tiver um contentor de exemplo carregado para o registo de contentores, consulte o Início rápido: implemente um contentor de exemplo pré-criado.
Funções do Cloud Run
Consulte o Início rápido do Python: funções do Cloud Run.
App Engine
Consulte os seguintes guias de início rápido do App Engine para Python 3:
Instale a CLI Google Cloud
Instale a CLI do Google Cloud. Consulte a vista geral do gcloud para ver informações conceptuais e de instalação sobre a ferramenta.
Se não tiver executado a CLI gcloud anteriormente, execute primeiro gcloud init
para inicializar o diretório gcloud.
Configure autorizações
Para seguir este guia, tem de criar um NEG sem servidor e um balanceador de carga HTTP(S) externo num projeto. Deve ser proprietário ou editor do projeto, ou ter as seguintes funções IAM do Compute Engine:
Tarefa | Função necessária |
---|---|
Crie um balanceador de carga e componentes de rede | Administrador da rede |
Crie e modifique NEGs | Administrador de instâncias do Compute |
Crie e modifique certificados SSL | Administrador de segurança |
Reserve um endereço IP externo
Agora que os seus serviços estão em funcionamento, configure um endereço IP externo estático global que os seus clientes usam para aceder ao balanceador de carga.
Consola
Na Google Cloud consola, aceda à página Endereços IP externos.
Clique em Reservar endereço IP estático externo.
Em Nome, introduza
example-ip
.Para 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 EXAMPLE_IP \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global
Tome nota do endereço IPv4 que foi reservado:
gcloud compute addresses describe EXAMPLE_IP \ --format="get(address)" \ --global
Substitua EXAMPLE_IP
pelo nome do endereço IP.
Crie um recurso de certificado SSL
Para criar um balanceador de carga HTTPS, tem de adicionar um recurso de certificado SSL ao front-end do balanceador de carga. Crie um recurso de certificado SSL usando um certificado SSL gerido pela Google ou um certificado SSL autogerido.
Certificados geridos pela Google. Recomendamos a utilização de certificados geridos pela Google porque Google Cloud obtém, gere e renova estes certificados automaticamente. Para criar um certificado gerido pela Google, tem de ter um domínio e os registos de DNS desse domínio para que o certificado seja aprovisionado.
Além disso, tem de atualizar o registo A de DNS do domínio para apontar para o endereço IP do balanceador de carga criado no passo anterior. Se tiver vários domínios num certificado gerido pela Google, tem de atualizar os registos de DNS de todos os domínios e subdomínios para apontarem para o endereço IP do seu equilibrador de carga. Para instruções detalhadas, consulte o artigo Usar certificados geridos pela Google.
Certificados autoassinados. Se não quiser configurar um domínio neste momento, pode usar um certificado SSL autoassinado para testes.
Este exemplo pressupõe que já criou um recurso de certificado SSL.
Se quiser testar este processo sem criar um recurso de certificado SSL (ou um domínio, conforme exigido pelos certificados geridos pela Google), pode continuar a usar as instruções nesta página para configurar um balanceador de carga HTTP.
Crie o balanceador de carga
No diagrama seguinte, o balanceador de carga usa um back-end do NEG sem servidor para direcionar pedidos para um serviço do Cloud Run sem servidor. Para este exemplo, usámos o início rápido do Python do Cloud Run para implementar um serviço do Cloud Run.
Uma vez que as verificações de estado não são suportadas para serviços de back-end com back-ends NEG sem servidor, não precisa de criar uma regra de firewall que permita verificações de estado se o equilibrador de carga tiver apenas back-ends NEG sem servidor.
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 básica
- Para o nome do balanceador de carga, introduza
serverless-lb
. - Mantenha a janela aberta para continuar.
Configuração da interface
- Clique em Configuração do front-end.
- Em Nome, introduza um nome.
-
Para criar um balanceador de carga HTTPS, tem de ter
um certificado SSL
(
gcloud compute ssl-certificates list
).Recomendamos que use um certificado gerido pela Google, conforme descrito anteriormente.
- Clique em Concluído.
Para configurar um Application Load Balancer externo, preencha os campos da seguinte forma.
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 | example-ip |
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 resolver para o endereço IP do equilibrador de carga que criou anteriormente neste procedimento. Recomendamos a utilização de certificados geridos pela Google porque Google Cloud obtém, gere e renova 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. |
Configuração do back-end
- Clique em Configuração de back-end.
- Na lista Serviços de back-end e contentores de back-end, clique em Criar um serviço de back-end.
- Em Nome, introduza um nome.
- Em Tipo de back-end, selecione Grupo de pontos finais da rede sem servidor.
- Deixe o Protocolo inalterado. Este parâmetro é ignorado.
- Na secção Back-ends, para Novo back-end, selecione Criar grupo de pontos finais de rede sem servidor.
- Em Nome, introduza um nome.
- Clique em Criar.
- Na secção Novo back-end, clique em Concluído.
- Selecione Ativar Cloud CDN.
- Opcional: modifique o modo de cache e as definições de TTL.
- Clique em Criar.
Regras de encaminhamento
As regras de encaminhamento determinam como o seu tráfego é direcionado. Para configurar o encaminhamento, configura regras de anfitrião e correspondências de caminhos, que são componentes de configuração de um balanceador de carga de aplicações externo do mapa de URLs.
-
Clique em Regras de anfitrião e caminho.
- Manter os anfitriões e os caminhos predefinidos. Para este exemplo, todos os pedidos são enviados para o serviço de back-end criado no passo anterior.
Rever a configuração
- Clique em Rever e finalizar.
- Reveja todas as definições.
- Opcional: clique em Código equivalente para ver o pedido da API REST que vai ser usado para criar o balanceador de carga.
- Clique em Criar.
- Aguarde a criação do balanceador de carga.
- Clique no nome do balanceador de carga (serverless-lb).
- Tome nota do endereço IP do equilibrador de carga para a tarefa seguinte. É
conhecido como
IP_ADDRESS
.
gcloud
- Crie um NEG sem servidor para a sua app sem servidor.
Para mais opções, consulte o guia de referência para
gcloud compute network-endpoint-groups create
.gcloud
- Crie um serviço de back-end.
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --global \ --enable-cdn \ --cache-mode=CACHE_MODE \ --custom-response-header='Cache-Status: {cdn_cache_status}' \ --custom-response-header='Cache-ID: {cdn_cache_id}'
Defina o modo de cache substituindo CACHE_MODE por uma das seguintes opções:
CACHE_All_STATIC
(predefinição): coloca automaticamente em cache o conteúdo estático.USE_ORIGIN_HEADERS
: requer que a origem defina cabeçalhos de colocação em cache válidos para colocar conteúdo em cache.FORCE_CACHE_ALL
: coloca em cache todo o conteúdo, ignorando quaisquer diretivasprivate
,no-store
ouno-cache
nos cabeçalhos de respostaCache-Control
.
Para obter informações sobre as diretivas de cache que o Cloud CDN compreende e o que não é colocado em cache pelo Cloud CDN, consulte os artigos Conteúdo colocável em cache e Conteúdo não colocável em cache.
- Adicione o NEG sem servidor como back-end ao serviço de back-end:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --global \ --network-endpoint-group=SERVERLESS_NEG_NAME \ --network-endpoint-group-region=us-central1
- 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_NAME
Este mapa de URLs de exemplo segmenta apenas um serviço de back-end que representa uma app sem servidor única, pelo que não precisamos de configurar regras de anfitrião nem correspondências de caminhos. Se tiver mais do que um serviço de back-end, pode usar regras de anfitrião para direcionar pedidos para diferentes serviços com base no nome do anfitrião e pode configurar correspondências de caminhos para direcionar pedidos para diferentes serviços com base no caminho do pedido.
-
Para criar um balanceador de carga HTTPS, tem de ter um recurso de
certificado SSL
para usar no proxy HTTPS de destino.
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, gerem e renovam
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 autoassinado 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 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
- Crie uma regra de encaminhamento para encaminhar pedidos recebidos para o proxy.
Para um balanceador de carga HTTPS:
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --address=EXAMPLE_IP \ --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.
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.
Para um balanceador de carga HTTPS, pode testar o balanceador de carga através de um navegador de Internet acedendo a
https://IP_ADDRESS
. SubstituaIP_ADDRESS
pelo endereço IP do balanceador de carga. É apresentada 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.
Se usou um certificado autoassinado para testes, o navegador apresenta um aviso. Tem de instruir explicitamente o navegador para aceitar um certificado autossinado. Clique no aviso para ver a página real.Para validar as respostas da cache, use o curl a partir da linha de comandos do seu computador local. Substitua IP_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 -v -o/dev/null https://IP_ADDRESS
Se estiver a usar um certificado autoassinado, também tem de especificar a flag
-k
. Por exemplo:curl -v -o/dev/null -k -s 'https://DOMAIN:443' --connect-to DOMAIN:443:IP_ADDRESS:443
A opção curl
-k
permite que o curl funcione se tiver um certificado autoassinado. Só deve usar o parâmetro-k
para testar o seu próprio site. Em circunstâncias normais, um certificado válido é uma medida de segurança importante e os avisos de certificado não devem ser ignorados.O resultado deve conter os cabeçalhos personalizados
Cache-ID
eCache-Status
que configurou para indicar se a resposta foi publicada a partir da cache:HTTP/2 200 cache-status: hit cache-id: SEA-b9fa975e
O resultado contém os cabeçalhos de resposta que indicam que houve um resultado positivo da cache, o que significa que o recurso estático na app sem servidor foi fornecido ao utilizador a partir de uma cache na extremidade da CDN da Google Cloud.
O cabeçalho
cache-status
indica o valordisabled
para as respostas que não estão em cache na RFC do Google Cloud. Para respostas em cache, o valor do cabeçalhocache-status
éhit
,miss
ourevalidated
.
Desativar o Cloud CDN
Consola
Desative o Cloud CDN para um único serviço de back-end
Na Google Cloud consola, aceda à página Cloud CDN.
No lado direito da linha de origem, clique em Menu
e, de seguida, selecione Editar.Desmarque as caixas de verificação de todos os serviços de back-end que quer impedir de usar o Cloud CDN.
Clique em Atualizar.
Remova o RFC para todos os serviços de back-end de uma origem
Na Google Cloud consola, aceda à página Cloud CDN.
No lado direito da linha de origem, clique em Menu
e, de seguida, selecione Remover.Para confirmar, clique em Remover.
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?
- Consulte a documentação da RFC para saber mais sobre os modos de cache e determinar a capacidade de colocação em cache das suas respostas.