Esta página mostra-lhe como implementar um Application Load Balancer externo regional com um back-end do Cloud Run. Para configurar esta opção, usa um back-end de NEG sem servidor para o balanceador de carga.
Antes de experimentar este procedimento, certifique-se de que conhece os seguintes tópicos:
Este documento mostra como configurar um Application Load Balancer que envia pedidos por proxy para um back-end de NEG sem servidor.
Os NEGs sem servidor permitem-lhe usar os serviços do Cloud Run com o seu equilibrador de carga. 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 do Cloud Run.
Antes de começar
Instale o SDK do Google Cloud
Instale a ferramenta CLI Google Cloud. Para informações conceptuais e de instalação sobre a CLI gcloud, consulte o artigo Vista geral da CLI gcloud.
Se não tiver executado a CLI gcloud anteriormente, execute primeiro gcloud init
para inicializar o diretório da CLI gcloud.
Implemente um serviço do Cloud Run
As instruções nesta página pressupõem que já tem um serviço do Cloud Run em execução.
Para o exemplo nesta página, pode usar qualquer um dos inícios rápidos do Cloud Run para implementar um serviço do Cloud Run.
O NEG sem servidor e o equilibrador de carga têm de estar na mesma região que o serviço do Cloud Run. Pode bloquear pedidos externos enviados diretamente para os URLs predefinidos do serviço Cloud Run restringindo a entrada ainternal and cloud load
balancing
. Por exemplo:
gcloud run deploy CLOUD_RUN_SERVICE_NAME \ --platform=managed \ --allow-unauthenticated \ --ingress=internal-and-cloud-load-balancing \ --region=REGION \ --image=IMAGE_URL
Tome nota do nome do serviço que criar. O resto desta página mostra-lhe como configurar um equilibrador de carga que encaminha pedidos para este serviço.
Configure autorizações
Para seguir este guia, tem de criar um NEG sem servidor e um equilibrador de carga num projeto. Tem de ser proprietário ou editor do projeto, ou ter as seguintes funções e autorizações do IAM do Compute Engine:
Tarefa | Função necessária |
---|---|
Crie um balanceador de carga e componentes de rede | Administrador de rede de Calcular (roles/compute.networkAdmin ) |
Crie e modifique NEGs | Administrador de instâncias do Compute (v1) (roles/compute.instanceAdmin.v1 ) |
Crie e modifique certificados SSL | Administrador de segurança (roles/iam.securityAdmin ) |
Configure a rede e as sub-redes
Para configurar a rede e as respetivas sub-redes, execute as seguintes tarefas:
- Crie uma rede e uma sub-rede da nuvem virtual privada (VPC).
- Crie uma sub-rede só de proxy.
Crie a rede de VPC
Crie uma rede VPC no modo personalizado.
Consola
Na Google Cloud consola, aceda à página Redes VPC.
Clique em Criar rede de VPC.
Em Nome, introduza
lb-network
.Clique em Criar.
gcloud
Crie a rede VPC personalizada com o comando
gcloud compute networks create
:gcloud compute networks create lb-network --subnet-mode=custom
Crie uma sub-rede só de proxy
Crie uma sub-rede apenas de proxy para todos os balanceadores de carga baseados no Envoy regionais numa região específica da rede lb-network
.
Consola
Na Google Cloud consola, aceda à página Redes VPC.
Clique no nome da rede de VPC partilhada à qual quer adicionar a sub-rede apenas de proxy.
Clique em Adicionar sub-rede.
No campo Nome, introduza
proxy-only-subnet
.Selecione uma região.
Defina Purpose como Regional Managed Proxy.
Introduza um intervalo de endereços IP como
10.129.0.0/23
.Clique em Adicionar.
gcloud
Crie a sub-rede só de proxy com o comando gcloud compute networks subnets
create
.
Este exemplo usa um intervalo de endereços IP de 10.129.0.0/23
para a sub-rede apenas de proxy. Pode configurar qualquer intervalo de sub-rede
válido.
gcloud compute networks subnets create proxy-only-subnet \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION \ --network=lb-network \ --range=10.129.0.0/23
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.
O tráfego que vai do balanceador de carga para os back-ends do NEG sem servidor usa rotas especiais definidas fora da sua VPC que não estão sujeitas a regras de firewall. Como tal, se o seu balanceador de carga tiver apenas back-ends de NEG sem servidor, não precisa de criar regras de firewall para permitir o tráfego da sub-rede só de proxy para o back-end 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 regionais e clique em Seguinte.
- Clique em Configurar.
Configuração básica
- Para o nome do balanceador de carga, introduza
serverless-lb
. - Selecione a Rede como
lb_network
. - Mantenha a janela aberta para continuar.
Configure a interface
- Antes de continuar, certifique-se de que tem um certificado SSL.
- Clique em Configuração do front-end.
- Introduza um Nome.
- Para configurar um Application Load Balancer externo regional, preencha os campos da seguinte forma:
- Para Protocolo, selecione HTTPS.
- Para Nível de serviço de rede, selecione Padrão.
- Para Versão de IP, selecione IPv4.
- Para Endereço IP, selecione Efémero.
- Em Porta, selecione
443
. Em Escolher repositório de certificados, selecione Certificados clássicos.
O exemplo seguinte mostra como criar certificados SSL do Compute Engine:
- Clique em Criar um novo certificado.
- No campo Nome, introduza um nome.
- Nos campos adequados, carregue os seus ficheiros formatados em PEM:
- Certificado
- Chave privada
- Clique em Criar.
- Opcional: para criar um balanceador de carga HTTP, faça o seguinte:
- Para Protocolo, selecione HTTP.
- Para Nível de serviço de rede, selecione Padrão.
- Para Versão de IP, selecione IPv4.
- Para Endereço IP, selecione Efémero.
- Em Porta, selecione
80
. - Clique em Concluído.
Se quiser testar este processo sem configurar um recurso de certificado SSL, pode configurar um balanceador de carga HTTP.
Configure os serviços de back-end
- Clique em Configuração de back-end.
- No menu Criar ou selecionar serviços de back-end, mantenha o ponteiro sobre Serviços de back-end e, de seguida, selecione Criar um serviço de back-end.
- Na janela Criar um serviço de back-end, introduza um Nome.
- Para Tipo de back-end, selecione Grupo de pontos finais da rede sem servidor.
- Deixe o Protocolo inalterado. Este parâmetro é ignorado.
- Para Back-ends > Novo back-end, selecione Criar grupo de pontos finais de rede sem servidor.
- Na janela Criar grupo de pontos finais de rede sem servidor, introduza um Nome.
- Para Região, é apresentada a região do balanceador de carga.
- No campo Tipo de grupo de pontos finais da rede sem servidor, selecione Cloud Run. O Cloud Run é o único tipo suportado.
- Selecione Selecionar nome do serviço.
- Na lista Serviço, selecione o serviço do Cloud Run para o qual quer criar um balanceador de carga.
- Clique em Concluído.
- Clique em Criar.
-
Opcional: configure uma política de segurança do back-end predefinida. A política de segurança predefinida limita o tráfego acima de um limite configurado pelo utilizador. Para mais informações sobre as políticas de segurança predefinidas, consulte a vista geral da limitação de taxa.
- Para desativar a política de segurança predefinida do Cloud Armor, selecione
None
na lista Política de segurança de back-end do Cloud Armor. - Para configurar a política de segurança predefinida do Cloud Armor, selecione Política de segurança predefinida na lista Política de segurança de back-end do Cloud Armor.
- No campo Nome da política, aceite o nome gerado automaticamente ou introduza um nome para a sua política de segurança.
- No campo Contagem de pedidos, aceite a contagem de pedidos predefinida ou introduza um número inteiro entre
1
e10,000
. - No campo Intervalo, selecione um intervalo.
- No campo Aplicar à chave, escolha um dos seguintes valores: Tudo, Endereço IP ou Endereço IP X-Forwarded-For. Para mais informações sobre estas opções, consulte o artigo Identificar clientes para a limitação de taxa.
- Para desativar a política de segurança predefinida do Cloud Armor, selecione
- Na janela Criar serviço de back-end, clique em Criar.
Configure regras de encaminhamento
As regras de encaminhamento determinam como o seu tráfego é direcionado. Pode direcionar o tráfego para um serviço de back-end ou um serviço Kubernetes. Todo o tráfego que não corresponda explicitamente a um anfitrião e a um matcher de caminho é enviado para o serviço predefinido.
- Clique em Regra simples de anfitrião e caminho.
- Selecione um serviço de back-end na lista Back-end.
Reveja a configuração
- Clique em Rever e finalizar.
- Reveja os valores de Backend, Regras de anfitriões e caminhos e Frontend.
- 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.
gcloud
- Reserve um endereço IP externo estático para o balanceador de carga.
gcloud compute addresses create IP_ADDRESS_NAME \ --region=REGION \ --network-tier=STANDARD
- Crie um NEG sem servidor para o seu serviço do Cloud Run:
gcloud compute network-endpoint-groups create SERVERLESS_NEG_NAME \ --region=REGION \ --network-endpoint-type=serverless \ --cloud-run-service=CLOUD_RUN_SERVICE_NAME
- Crie um serviço de back-end regional. Defina o
--protocol
como HTTP. Este parâmetro é ignorado, mas é obrigatório porque, caso contrário, a predefinição é TCP.--protocol
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --region=REGION
- Adicione o NEG sem servidor como back-end ao serviço de back-end:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --region=REGION \ --network-endpoint-group=SERVERLESS_NEG_NAME \ --network-endpoint-group-region=REGION
- Crie um mapa de URLs regional para encaminhar pedidos recebidos para o serviço de back-end:
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 precisa de configurar regras de anfitrião nem correspondências de caminhos.gcloud compute url-maps create URL_MAP_NAME \ --default-service=BACKEND_SERVICE_NAME \ --region=REGION
- Opcional: execute este passo se estiver a usar HTTPS entre o cliente e o balanceador de carga. Este passo não é necessário para balanceadores de carga HTTP.
Pode criar certificados do Compute Engine ou do Certificate Manager. Use qualquer um dos seguintes métodos para criar certificados através do gestor de certificados:
- Certificados autogeridos regionais. Para obter informações sobre como criar e usar certificados autogeridos regionais, consulte Implemente um certificado autogerido regional. Os mapas de certificados não são suportados.
Certificados geridos pela Google regionais. Os mapas de certificados não são suportados.
Os seguintes tipos de certificados regionais geridos pela Google são suportados pelo Gestor de certificados:
- Certificados geridos pela Google regionais com autorização de DNS por projeto. Para mais informações, consulte o artigo Implemente um certificado gerido pela Google com autorização de DNS.
- Certificados (privados) geridos pela Google regionais com o serviço de autoridade de certificação. Para mais informações, consulte o artigo Implemente um certificado gerido pela Google com o serviço de autoridade de certificação.
Depois de criar os certificados, anexe-os diretamente ao proxy de destino.
Para criar um recurso de certificado SSL autogerido regional:gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH \ --region=REGION
- Crie um proxy de destino regional para encaminhar pedidos para o mapa de URLs.
Para um balanceador de carga HTTP, crie um proxy HTTP de destino: 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-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --region=REGION
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME \ --region=REGION
- Crie uma regra de encaminhamento para encaminhar pedidos recebidos para o proxy.
Para um balanceador de carga HTTP:
Para um balanceador de carga HTTPS:gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=lb-network \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --target-http-proxy-region=REGION \ --region=REGION \ --ports=80
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=lb-network \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --target-https-proxy-region=REGION \ --region=REGION \ --ports=443
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.
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 de HTTP, pode testar o balanceador de carga através de um navegador de Internet acedendo a
http://IP_ADDRESS
. SubstituaIP_ADDRESS
pelo endereço IP do equilibrador de carga. Deve aceder à página inicial do serviço do Cloud Run.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 equilibrador de carga. A página é redirecionada para a página inicial do serviço do Cloud Run.
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.
Opções de configuração adicionais
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.
Usar uma máscara de URL
Quando cria um NEG sem servidor, em vez de selecionar um serviço do Cloud Run específico, pode usar uma máscara de URL para apontar para vários serviços publicados no mesmo domínio. Uma máscara de URL é um modelo do seu esquema de URL. O NEG sem servidor usa este modelo para extrair o nome do serviço do URL do pedido recebido e mapear o pedido para o serviço adequado.
As máscaras de URL são particularmente úteis se o seu serviço estiver mapeado para um domínio personalizado em vez do endereço predefinido que Google Cloud fornece para o serviço implementado. Uma máscara de URL permite-lhe segmentar vários serviços e versões com uma única regra, mesmo quando a sua aplicação está a usar um padrão de URL personalizado.
Se ainda não o fez, certifique-se de que lê a vista geral dos NEGS sem servidor: máscaras de URL.
Construa uma máscara de URL
Para criar uma máscara de URL para o seu equilibrador de carga, comece com o URL do seu serviço. Este exemplo usa uma app sem servidor de exemplo em execução em
https://example.com/login
. Este é o URL onde o serviço login
da app é publicado.
- Remova o
http
ou ohttps
do URL. Temexample.com/login
. - Substitua o nome do serviço por um marcador de posição para a máscara de URL.
- Cloud Run: substitua o nome do serviço do Cloud Run pelo marcador de posição
<service>
. Se o serviço do Cloud Run tiver uma etiqueta associada, substitua o nome da etiqueta pelo marcador de posição<tag>
. Neste exemplo, a máscara de URL que lhe resta éexample.com/<service>
.
- Cloud Run: substitua o nome do serviço do Cloud Run pelo marcador de posição
Opcional: se for possível extrair o nome do serviço da parte do caminho do URL, o domínio pode ser omitido. A parte do caminho da máscara de URL distingue-se pelo primeiro caráter de barra (
/
). Se não estiver presente uma barra (/
) na máscara de URL, entende-se que a máscara representa apenas o anfitrião. Por conseguinte, para este exemplo, a máscara de URL pode ser reduzida a/<service>
.Da mesma forma, se for possível extrair
<service>
da parte do anfitrião do URL, pode omitir completamente o caminho da máscara de URL.Também pode omitir quaisquer componentes de anfitrião ou subdomínio que venham antes do primeiro marcador de posição, bem como quaisquer componentes de caminho que venham depois do último marcador de posição. Nestes casos, o marcador de posição captura as informações necessárias para o componente.
Seguem-se mais alguns exemplos que demonstram estas regras:
Esta tabela pressupõe que tem um domínio personalizado denominado example.com
e que todos os seus serviços do Cloud Run estão a ser mapeados
para este domínio.
Serviço, nome da etiqueta | URL de domínio personalizado do Cloud Run | Máscara de URL |
---|---|---|
service: login | https://login-home.example.com/web | <service>-home.example.com |
service: login | https://example.com/login/web | example.com/<service> ou /<service> |
service: login, tag: test | https://test.login.example.com/web | <tag>.<service>.example.com |
service: login, tag: test | https://example.com/home/login/test | example.com/home/<service>/<tag> ou /home/<service>/<tag> |
service: login, tag: test | https://test.example.com/home/login/web | <tag>.example.com/home/<service> |
Criar um NEG sem servidor com uma máscara de URL
Consola
Para um novo equilibrador de carga, pode usar o mesmo processo completo, conforme descrito anteriormente neste documento. Quando configurar o serviço de back-end, em vez de selecionar um serviço específico, introduza uma máscara de URL.
Se tiver um balanceador de carga existente, pode editar a configuração do back-end e fazer com que o NEG sem servidor aponte para uma máscara de URL em vez de um serviço específico.
Para adicionar um NEG sem servidor baseado em máscara de URL a um serviço de back-end existente, faça o seguinte:
- Na Google Cloud consola, aceda à página Equilíbrio de carga.
Aceder a Balanceamento de carga - Clique no nome do equilibrador de carga que tem o serviço de back-end que quer editar.
- Na página Detalhes do equilibrador de carga, clique em Editar.
- Na página Editar balanceador de carga de aplicações externo global, clique em Configuração do back-end.
- Na página Configuração de back-end, clique em Editar para o serviço de back-end que quer modificar.
- Clique em Adicionar back-end.
- Selecione Criar grupo de pontos finais de rede sem servidor.
- No campo Nome, introduza
helloworld-serverless-neg
. - Em Região, é apresentada a região do balanceador de carga.
- Em Tipo de grupo de pontos finais de rede sem servidor, o Cloud Run é o único tipo de grupo de pontos finais de rede suportado.
- Selecione Usar máscara de URL.
- Introduza uma máscara de URL. Para obter informações sobre como criar uma máscara de URL, consulte o artigo Construir uma máscara de URL.
- Clique em Criar.
- No novo back-end, clique em Concluído.
- Clique em Atualizar.
gcloud
Para criar um NEG sem servidor com uma máscara de URL de exemplo de
example.com/<service>
:
gcloud compute network-endpoint-groups create SERVERLESS_NEG_MASK_NAME \ --region=REGION \ --network-endpoint-type=serverless \ --cloud-run-url-mask="example.com/<service>"
Eliminar um NEG sem servidor
Não é possível eliminar um grupo de pontos finais de rede se estiver anexado a um serviço de back-end. Antes de eliminar um NEG, certifique-se de que está desvinculado do serviço de back-end.
Consola
- Para se certificar de que o NEG sem servidor que quer eliminar não está a ser usado por nenhum serviço de back-end, aceda ao separador Serviços de back-end na página Componentes de equilíbrio de carga.
Aceda aos serviços de back-end - Se o NEG sem servidor estiver em utilização, faça o seguinte:
- Clique no nome do serviço de back-end que está a usar o NEG sem servidor.
- Clique em Editar.
- Na lista de Back-ends, clique em para remover o back-end do NEG sem servidor do serviço de back-end.
- Clique em Guardar.
- Aceda à página Grupo de pontos finais de rede na Google Cloud consola.
Aceda a Grupo de pontos finais da rede - Selecione a caixa de verificação do NEG sem servidor que quer eliminar.
- Clique em Eliminar.
- Clique novamente em Eliminar para confirmar.
gcloud
Para remover um NEG sem servidor de um serviço de back-end, tem de especificar a região onde o NEG foi criado.
gcloud compute backend-services remove-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=SERVERLESS_NEG_NAME \ --network-endpoint-group-region=REGION \ --region=REGION
Para eliminar o NEG sem servidor:
gcloud compute network-endpoint-groups delete SERVERLESS_NEG_NAME \ --region=REGION
O que se segue?
- Usar o registo e a monitorização
- Resolução de problemas de NEGs sem servidor
- Limpe a configuração do equilibrador de carga
- Usar um módulo Terraform para um balanceador de carga HTTPS externo com um back-end do Cloud Run