Para dar respostas mais rápidas a usuários por todo o mundo, você precisa implantar serviços em várias regiões e encaminhar esses usuários para a região mais próxima.
No entanto, os serviços do Cloud Run (totalmente gerenciado) são implantados em regiões individuais. Encaminhar os usuários para diferentes regiões do serviço, exige configurar o balanceamento de carga HTTP(S) externo.
Este guia mostra como configurar o balanceador de carga HTTP(S) externo com um domínio protegido por um certificado TLS gerenciado que aponta para um endereço IP anycast global, que direciona os usuários para o data center do Google mais próximo com seu serviço implantado.
Antes de começar
- Instalar o SDK do Cloud. Este guia usa a ferramenta de
linha de comando
gcloud
. - Um domínio para seu aplicativo. É possível registrar um nome de domínio no Google Domains.
Como criar um balanceador de carga
A criação de um balanceador de carga externo envolve criar vários recursos de rede e conectá-los, conforme mostrado nas instruções a seguir.
Linha de comando
- Reserve um endereço IP estático para não precisar atualizar seus registros DNS ao recriar seu balanceador de carga.
gcloud compute addresses create --global SERVICE_IP
No comando acima, substitua SERVICE_IP por um nome para o recurso de endereço IP (por exemplo,myservice-ip
).Por exemplo, é um endereço IPv4 anycast global que encaminha para o data center do Google ou para o ponto de presença mais próximo dos visitantes.
- Crie um serviço de back-end.
gcloud compute backend-services create --global BACKEND_NAME
No comando acima, substitua BACKEND_NAME pelo nome que você quer fornecer ao serviço de back-end (por exemplo,
myservice-backend
). - Crie um mapa de URLs.
gcloud compute url-maps create URLMAP_NAME --default-service=BACKEND_NAME
Substitua URLMAP_NAME pelo nome que você quer dar ao mapa de URLs (por exemplo,
myservice-urlmap
). - Crie um certificado TLS gerenciado para seu domínio para exibir o tráfego HTTPS. (Substitua example.com pelo nome do seu domínio.)
gcloud beta compute ssl-certificates create CERT_NAME \ --domains=example.com
Substitua CERT_NAME pelo nome que você quer dar ao certificado SSL gerenciado (por exemplo,
myservice-cert
). - Crie um proxy de destino HTTPS.
gcloud compute target-https-proxies create HTTPS_PROXY_NAME \ --ssl-certificates=CERT_NAME \ --url-map=URLMAP_NAME
Substitua HTTPS_PROXY_NAME pelo nome que você quer fornecer ao proxy de destino HTTPS (por exemplo,
myservice-https
). - Crie uma regra de encaminhamento que conecte os recursos de rede que você criou ao endereço IP.
gcloud compute forwarding-rules create --global FORWARDING_RULE_NAME \ --target-https-proxy=HTTPS_PROXY_NAME \ --address=SERVICE_IP \ --ports=443
Substitua FORWARDING_RULE_NAME pelo nome do recurso de regra de encaminhamento que você quer criar (por exemplo,
myservice-lb
).
Como implantar em várias regiões
Implante o serviço nas regiões disponíveis do Cloud Run (totalmente gerenciado). Para facilitar o gerenciamento, use o mesmo nome de serviço em várias regiões.
Escolha as regiões em que você quer disponibilizar seu serviço.
Implante o serviço do Cloud Run em regiões individuais.
gcloud run deploy SERVICE_NAME \ --platform=managed \ --allow-unauthenticated \ --image=IMAGE_URL \ --region=REGION
Substitua as seguintes variáveis:
- REGION por uma das regiões em que você quer implantar;
- SERVICE_NAME pelo nome do serviço. Usar o mesmo nome de serviço em várias regiões facilita o controle das implantações em várias regiões;
IMAGE_URL
por uma referência à imagem de contêiner, por exemplo,gcr.io/myproject/my-image:latest
;
Repita a etapa anterior para cada região.
Locais do Cloud Run
O Cloud Run é regional, o que significa que a infraestrutura que executa seus serviços do Cloud Run está localizada em uma região específica e é gerenciada pelo Google para estar disponível de maneira redundante em todas as zonas da região.
Atender aos seus requisitos de latência, disponibilidade ou durabilidade são os principais fatores para selecionar a região em que seus serviços do Cloud Run são executados.
Geralmente, é possível selecionar a região mais próxima de seus usuários, mas considere a localização dos outros produtos do Google Cloud usados pelo serviço do Cloud Run.
O uso de produtos do Google Cloud em vários locais pode afetar a latência e o custo do serviço.
O Cloud Run está disponível nas regiões a seguir:
Sujeitas aos preços do nível 1
asia-east1
(Taiwan)asia-northeast1
(Tóquio)asia-northeast2
(Osaka)europe-north1
(Finlândia)europe-west1
(Bélgica)europe-west4
(Países Baixos)us-central1
(Iowa)us-east1
(Carolina do Sul)us-east4
(Norte da Virgínia)us-west1
(Oregon)
Sujeitas aos preços do nível 2
asia-east2
(Hong Kong)asia-northeast3
(Seul, Coreia do Sul)asia-southeast1
(Singapura)asia-southeast2
(Jacarta)asia-south1
(Mumbai, Índia)australia-southeast1
(Sydney)europe-west2
(Londres, Reino Unido)europe-west3
(Frankfurt, Alemanha)europe-west6
(Zurique, Suíça)northamerica-northeast1
(Montreal)southamerica-east1
(São Paulo, Brasil)
Se você já criou um serviço do Cloud Run, poderá ver a região no painel do Cloud Run no Console do Cloud.
Como configurar back-ends regionais
Para cada região implantada na etapa anterior, você precisa criar grupos de endpoints de rede sem servidor (NEGs, na sigla em inglês) e adicioná-los ao serviço de back-end usando as seguintes instruções:
Crie um grupo de endpoints de rede para o serviço Cloud Run (totalmente gerenciado) em
REGION
:gcloud beta compute network-endpoint-groups create NEG_NAME \ --region=REGION \ --network-endpoint-type=SERVERLESS \ --cloud-run-service=SERVICE_NAME
No comando acima, substitua:
- NEG_NAME pelo nome do recurso de grupo de endpoints da rede.
(por exemplo,
myservice-neg-uscentral1
) - REGION pela região em que o serviço foi implantado;
- SERVICE_NAME pelo nome do serviço.
- NEG_NAME pelo nome do recurso de grupo de endpoints da rede.
(por exemplo,
Adicione o grupo de endpoints da rede ao serviço de back-end:
gcloud beta compute backend-services add-backend --global BACKEND_NAME \ --network-endpoint-group-region=REGION \ --network-endpoint-group=NEG_NAME
Especifique o NEG_NAME que você criou na etapa anterior para a região.
Repita as etapas acima para cada região.
Como configurar registros DNS no seu domínio
Apontar seu nome de domínio para a regra de encaminhamento criada por você exige atualizar seus registros DNS com o endereço IP que você criou.
Encontre o endereço IP reservado do balanceador de carga executando:
gcloud compute addresses describe --global SERVICE_IP --format='value(address)'
Substitua SERVICE_IP pelo nome do endereço IP criado anteriormente. Esse comando imprimirá o endereço IP na saída.
Atualize os registros DNS do seu domínio adicionando um registro
A
a esse endereço IP.
Aguardando o provisionamento do balanceador de carga
Depois de configurar o domínio com o endereço IP do balanceador de carga, você precisa aguardar um tempo para que os registros DNS sejam propagados. Da mesma forma, é necessário esperar um pouco até que o certificado TLS gerenciado seja emitido para seu domínio e esteja pronto para começar a disponibilizar o tráfego HTTPS globalmente.
Pode levar até 30 minutos para que o balanceador de carga comece a disponibilizar tráfego.
Quando ele estiver pronto, acesse o URL do seu site com o prefixo https://
para fazer um teste.
Como verificar o status
Para verificar o status da propagação de registro DNS usando o utilitário de linha de comando
dig
:dig A +short example.com
A saída precisa mostrar o endereço IP configurado nos registros DNS.
Verifique o status da emissão do certificado gerenciado. Execute:
gcloud beta compute ssl-certificates describe CERT_NAME
Substitua CERT_NAME pelo nome escolhido anteriormente para o recurso de certificado SSL.
A saída deve mostrar uma linha contendo
status: ACTIVE
.
Como configurar o redirecionamento de HTTP para HTTPS
Por padrão, uma regra de encaminhamento só processa um único protocolo. Portanto,
as solicitações para os endpoints http://
responderão com o erro 404 Not Found. Se você
precisar que as solicitações para seus URLs http://
sejam redirecionadas para o protocolo https://
,
será necessário criar um mapa de URL adicional e uma regra de encaminhamento usando
as seguintes instruções:
Crie um mapa de URL com uma regra de redirecionamento.
gcloud compute url-maps import HTTP_URLMAP_NAME \ --global \ --source /dev/stdin <<EOF name: HTTP_URLMAP_NAME defaultUrlRedirect: redirectResponseCode: MOVED_PERMANENTLY_DEFAULT httpsRedirect: True EOF
Substitua HTTP_URLMAP_NAME pelo nome do recurso de mapa de URL que você criará (por exemplo,
myservice-httpredirect
).Crie um proxy HTTP de destino com o mapa de URL.
gcloud compute target-http-proxies create HTTP_PROXY_NAME \ --url-map=HTTP_URLMAP_NAME
Substitua HTTP_PROXY_NAME pelo nome do proxy HTTP de destino que você criará (por exemplo,
myservice-http
).Crie uma regra de encaminhamento na porta
80
com o mesmo endereço IP reservado.gcloud compute forwarding-rules create --global HTTP_FORWARDING_RULE_NAME \ --target-http-proxy=HTTP_PROXY_NAME \ --address=SERVICE_IP \ --ports=80
Substitua HTTP_FORWARDING_RULE_NAME pelo nome da nova regra de encaminhamento que você criará (por exemplo,
myservice-httplb
).