Nesta página, mostramos como criar um balanceador de carga de aplicativo externo para encaminhar solicitações para back-ends sem servidor. Aqui, o termo sem servidor refere-se aos seguintes produtos de computação sem servidor:
- App Engine
- Cloud Run functions
- Cloud Run
A integração de balanceadores de carga aplicativo externos com o gateway de API permite que os back-ends sem servidor aproveitem todos os recursos fornecidos pelo Cloud Load Balancing. Para configurar um balanceador de carga de aplicativo externo para rotear o tráfego para um gateway de API, consulte Noções básicas sobre balanceador de carga de aplicativo externo para gateway de API. O suporte do balanceador de carga de aplicativo externo para o gateway de API está em visualização.
Os NEGs sem servidor permitem usar aplicativos sem servidor do Google Cloud com balanceadores de carga de aplicativo externos. Depois de configurar um balanceador de carga com o back-end NEG sem servidor, as solicitações para o balanceador de carga são roteadas para o back-end do aplicativo sem servidor.
Para saber mais sobre NEGs sem servidor, consulte a visão geral de NEGs sem servidor.
Antes de começar
- Implante um serviço do App Engine, do Cloud Functions ou do Cloud Run.
- Instale a CLI do Google Cloud, caso ainda não tenha feito isso.
- Configurar permissões.
- Adicione um recurso de certificado SSL.
Implantar um serviço do App Engine, do Cloud Functions ou do Cloud Run
As instruções nesta página presumem que você já tem um o Cloud Run, as funções do Cloud Run ou do App Engine em execução.
No exemplo desta página, usamos o guia de início rápido
do Cloud Run em Python para implantar um serviço
do Cloud Run na região us-central1
. O restante desta página mostra como
configurar um balanceador de carga de aplicativo externo que usa um back-end NEG sem servidor para encaminhar solicitações para
este serviço.
Se você ainda não implantou um aplicativo sem servidor ou se quiser testar um NEG sem servidor com um aplicativo de amostra, use um dos guias de início rápido a seguir. É possível criar um aplicativo sem servidor em qualquer região, mas você precisa usar a mesma região posteriormente para criar o NEG e o balanceador de carga sem servidor.
Cloud Run
Para criar um aplicativo Hello World simples, empacotá-lo em uma imagem de contêiner e implantá-la no Cloud Run, consulte o Guia de início rápido: criar e implantar.
Se você já tiver feito upload de um contêiner de amostra para o Container Registry, consulte Guia de início rápido: implantar um contêiner de amostra predefinido.
Funções do Cloud Run
Consulte Funções do Cloud Run: guia de início rápido do Python.
App Engine
Consulte os seguintes guias de início rápido do App Engine para Python 3:
Instale a CLI do Google Cloud
Instale a CLI do Google Cloud. Consulte Visão geral do gcloud para ver informações conceituais e de instalação sobre a ferramenta.
Caso ainda não tenha usado a CLI , primeiro execute
gcloud init
para inicializar o diretório do gcloud.
Configurar permissões
Para seguir este guia, você precisa criar um NEG sem servidor e um balanceador de carga HTTP(S) 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 balanceador de carga e componentes de rede | Administrador de rede |
Criar e modificar NEGs | Administrador da instância do Compute |
Criar e modificar certificados SSL | Administrador de segurança |
Reservar um endereço IP externo
Agora que seus serviços estão funcionando, configure um endereço IP externo, estático e global que seus clientes possam usar para alcançar seu balanceador de carga.
Console
No console do Google Cloud, acesse a página Endereços IP externos.
Clique em Reservar endereço IP estático externo.
Em Nome, insira
example-ip
.Em Nível de serviço de rede, selecione Premium.
Em Versão IP, selecione IPv4.
Em Tipo, selecione Global.
Clique em Reservar.
gcloud
gcloud compute addresses create example-ip \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global
Anote o endereço IPv4 que foi reservado:
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
É possível criar um recurso de certificado SSL
Para criar um balanceador de carga HTTPS, é necessário adicionar um recurso de certificado SSL ao front-end do balanceador de carga. Crie um recurso de certificado SSL usando um certificado SSL gerenciado pelo Google ou um certificado SSL autogerenciado.
Certificados gerenciados pelo Google. O uso de certificados gerenciados pelo Google é recomendado porque o Google Cloud recebe, gerencia e renova esses certificados automaticamente. Para criar um certificado gerenciado pelo Google, você precisa ter um domínio e os registros DNS desse domínio para que o certificado seja provisionado. Além disso, você precisa atualizar o registro DNS A do domínio para apontar para o endereço IP do balanceador de carga criado na etapa anterior (
example-ip
). Para instruções detalhadas, consulte Como usar chaves de criptografia certificados do Google Cloud.Certificados autoassinados. Se você não quiser configurar um domínio agora, use um certificado SSL autoassinado para o teste.
Este exemplo pressupõe que você já criou um recurso de certificado SSL.
Se você quiser testar esse processo sem criar um recurso de certificado SSL (ou um domínio conforme exigido pelos certificados gerenciados pelo Google), ainda será possível usar as instruções nesta página para configurar uma carga HTTP.
Criar o balanceador de carga
No diagrama a seguir, o balanceador de carga usa um back-end NEG sem servidor para direcionar solicitações para um serviço do Cloud Run sem servidor. Neste exemplo, usamos o guia de início rápido do Cloud Run Python para implantar um serviço do Cloud Run.
Como as verificações de integridade não são compatíveis com serviços de back-end com back-ends de NEG sem servidor, você não precisa criar uma regra de firewall que permita verificações de integridade se o balanceador de carga tiver apenas back-ends de NEG sem servidor.
Console
Iniciar a configuração
No console do Google Cloud, acesse a página Balanceamento de carga.
- Clique em Criar balanceador de carga.
- Em Tipo de balanceador de carga, selecione Balanceador de carga de aplicativo (HTTP/HTTPS) e clique em Próxima.
- Em Voltado ao público ou interno, selecione Voltado ao público (externo) e clique em Próxima.
- Em Implantação global ou de região única, selecione Melhor para cargas de trabalho globais e clique em Próxima.
- Em Geração do balanceador de carga, selecione Balanceador de carga de aplicativo clássico e clique em Próxima.
- Clique em Configurar.
Configuração básica
- Digite
serverless-lb
como o nome do balanceador de carga. - Mantenha a janela aberta para continuar.
Configuração de front-end
- Clique em Configuração de front-end.
- Em Nome, digite um nome.
-
Para criar um balanceador de carga HTTPS, é necessário ter um
certificado SSL
(
gcloud compute ssl-certificates list
).Recomendamos o uso de um certificado gerenciado pelo Google, conforme descrito anteriormente.
- Clique em Concluído.
Para configurar um balanceador de carga de aplicativo externo, preencha os campos da seguinte maneira.
Verifique se as seguintes opções estão configuradas com estes valores:
Propriedade | Valor: digite um valor ou selecione uma opção conforme especificado |
---|---|
Protocolo | HTTPS |
Nível de serviço da rede | Premium |
Versão IP | IPv4 |
Endereço IP | example-ip |
Porta | 443 |
Certificado | Selecione um certificado SSL existente ou crie um novo. Para criar um balanceador de carga HTTPS, você precisa ter um recurso de certificado SSL para usar no proxy HTTPS. É possível criar um recurso de certificado SSL usando um certificado SSL gerenciado pelo Google ou um certificado SSL autogerenciado. Para criar um certificado gerenciado pelo Google, você precisa ter um domínio. O registro A do domínio precisa ser resolvido para o endereço IP do balanceador de carga (neste exemplo, example-ip). É recomendável usar certificados gerenciados pelo Google porque o Google Cloud recebe, gerencia e renova esses certificados automaticamente. Se você não tiver um domínio, será possível usar um certificado SSL autoassinado para testes. |
Opcional: ativar o redirecionamento de HTTP para HTTPS |
Use essa caixa de seleção para ativar os redirecionamentos de HTTP para HTTPS.
Ativar esta caixa de seleção cria um balanceador de carga HTTP parcial que utiliza o mesmo endereço IP que o balanceador de carga HTTPS e redireciona solicitações HTTP para o front-end HTTPS do balanceador de carga. Essa caixa de seleção só poderá ser marcada quando o protocolo HTTPS estiver selecionado e um endereço IP reservado for utilizado. |
Configuração de back-end
- Clique em Configuração de back-end.
- Na lista Serviços e buckets de back-end, clique em Criar um serviço de back-end.
- Em Nome, digite um nome.
- Em Tipo de back-end, selecione Grupo de endpoints de rede sem servidor.
- Deixe o Protocolo inalterado. Este parâmetro é ignorado.
- Na seção Back-ends, em Novo back-end, selecione Criar grupo de endpoints de rede sem servidor.
- Em Nome, digite um nome.
- Clique em Criar.
- Na seção Novo back-end, clique em Concluído.
- Selecione Ativar Cloud CDN.
- Opcional: modifique as configurações do modo de cache e TTL.
- Clique em Criar.
Regras de roteamento
As regras de roteamento determinam como o tráfego é direcionado. Para configurar o roteamento, configure regras de host e correspondências de caminho, que são componentes de configuração do mapa de URLs de um balanceador de carga de aplicativo externo.
-
Clique em Regras de host e caminho.
- Mantenha os hosts e caminhos padrão. Neste exemplo, todas as solicitações vão para o serviço de back-end criado na etapa anterior.
Como verificar a configuração
- Clique em Analisar e finalizar.
- Revise todas as configurações.
- Opcional: clique em Código equivalente para conferir a solicitação de API REST que será usada para criar o balanceador de carga.
- Clique em Criar.
- Aguarde o balanceador de carga ser criado.
- Clique no nome do balanceador de carga (serverless-lb).
- Anote o endereço IP do balanceador de carga para a próxima tarefa. Ele
é referenciado como
IP_ADDRESS
.
gcloud
- Crie um NEG sem servidor para seu app sem servidor.
Para mais opções, consulte o guia de referência da
gcloud
paragcloud compute network-endpoint-groups create
. - 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 um dos seguintes itens:
CACHE_All_STATIC
(padrão): armazena automaticamente o conteúdo estático em cache.USE_ORIGIN_HEADERS
: 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
.
Para informações sobre as diretivas de cache que o Cloud CDN entende e o que não é armazenado em cache pelo Cloud CDN, consulte Conteúdo armazenável em cache e Conteúdo não armazenável em cache.
- Adicione o NEG sem servidor como um 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 URL para encaminhar solicitações recebidas para o
serviço de back-end :
gcloud compute url-maps create URL_MAP_NAME \ --default-service BACKEND_SERVICE_NAME
Este mapa de URL de exemplo segmenta apenas um serviço de back-end que representa um único app sem servidor. Portanto, não é necessário configurar regras de host ou correspondências de caminho. Se você tiver mais de um serviço de back-end, poderá usar regras de host para direcionar solicitações para serviços diferentes com base no nome do host e configurar correspondências de caminho para direcionar solicitações para serviços diferentes com base no caminho da solicitação.
-
Para criar um balanceador de carga HTTPS, você precisa ter um
recurso
de certificado SSL para usar no proxy HTTPS.
É possível criar um recurso de certificado
SSL usando um certificado SSL gerenciado pelo Google ou
um certificado SSL autogerenciado. O uso de certificados gerenciados pelo Google
é recomendado porque o Google Cloud recebe, gerencia e renova
esses certificados automaticamente.
Para criar um certificado gerenciado pelo Google, você precisa ter um domínio. Se você não tiver um domínio, será possível usar um certificado SSL autoassinado para testes.
Para criar um recurso de certificado SSL gerenciado pelo Google: Para criar um recurso de certificado SSL autogerenciado: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 de destino HTTP(S) para encaminhar solicitações ao mapa de URLs.
Para um balanceador de carga HTTPS, crie um proxy de destino HTTPS. O proxy é a parte do balanceador de carga onde é armazenado o certificado SSL para balanceamento de carga HTTPS, portanto, nesta etapa carregue também o certificado.
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 as solicitações recebidas 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
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
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.
Para um balanceador de carga HTTPS, é possível testar seu balanceador de carga usando um navegador da Web acessando
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.
Caso você tenha usado um certificado autoassinado durante o teste, o navegador exibirá um aviso. Você precisa permitir que o navegador aceite um certificado autoassinado. Clique no aviso para ver a página real.Para verificar as respostas do cache, use o curl na linha de comando da sua máquina local. Substitua IP_ADDRESS pelo endereço IPv4 do balanceador de carga:
curl -v -o/dev/null https://IP_ADDRESS
Se você estiver usando um certificado gerenciado pelo Google, teste o domínio que aponta para o endereço IP do balanceador de carga. Por exemplo:
curl -v -o/dev/null -k -s 'https://DOMAIN:443' --connect-to DOMAIN:443:IP_ADDRESS:443
Se você estiver usando um certificado autoassinado, também precisará especificar a sinalização
-k
. A opção curl-k
permite que o curl funcione se você tiver um certificado autoassinado. Use o parâmetro-k
somente para testar seu próprio site. Em circunstâncias normais, um certificado válido é uma medida de segurança importante. Não ignore os avisos de certificados.A saída precisa conter os cabeçalhos personalizados
Cache-ID
eCache-Status
que você configurou para indicar se a resposta foi veiculada a partir do cache:HTTP/2 200 cache-status: hit cache-id: SEA-b9fa975e
A saída contém os cabeçalhos de resposta que indicam que houve uma ocorrência em cache, o que significa que o recurso estático no app sem servidor foi veiculado ao usuário de um cache de ponta do Cloud CDN.
O cabeçalho
cache-status
informa o valordisabled
para as respostas que não são armazenadas em cache no Cloud CDN. Para respostas em cache, o valor do cabeçalhocache-status
éhit
,miss
ourevalidated
.
Como desativar a Cloud CDN
Console
Desative o Cloud CDN para um único serviço de back-end
No console do Google Cloud, acesse a página do Cloud CDN.
No lado direito da linha de origem, clique emMenu
e selecione Editar.Desmarque as caixas de seleção dos serviços de back-end que você não quer mais que usem o Cloud CDN.
Clique em Atualizar.
Remova o Cloud CDN de todos os serviços de back-end de uma origem
No console do Google Cloud, acesse a página do Cloud CDN.
No lado direito da linha de origem, clique em Menu
e selecione Remover.Para confirmar, clique em Remover.
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
- Consulte a documentação do Cloud CDN para saber mais sobre os modos de cache e determinar a capacidade de armazenamento em cache das suas respostas.