Como exibir o tráfego de várias regiões

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 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

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

  1. 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.

  2. 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).

  3. 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).

  4. 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).

  5. 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).

  6. 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. Para facilitar o gerenciamento, use o mesmo nome de serviço em várias regiões.

  1. Escolha as regiões em que você quer disponibilizar seu serviço.

  2. Implante o serviço do Cloud Run em regiões individuais.

      gcloud run deploy SERVICE_NAME \
          --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;
  3. 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-central2 (Varsóvia, Polônia)
  • europe-west2 (Londres, Reino Unido)
  • europe-west3 (Frankfurt, Alemanha)
  • europe-west6 (Zurique, Suíça)
  • northamerica-northeast1 (Montreal)
  • southamerica-east1 (São Paulo, Brasil)
  • us-west2 (Los Angeles)
  • us-west3 (Las Vegas)
  • us-west4 (Salt Lake City)

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:

  1. Crie um grupo de endpoints de rede para o serviço Cloud Run 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.
  2. 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.

  3. 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.

  1. 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.

  2. 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

  1. 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.

  2. 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:

  1. 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).

  2. 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).

  3. 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).

Como usar assinaturas de push do Pub/Sub autenticadas com implantação em várias regiões

Por padrão, um serviço Pub/Sub entrega mensagens para endpoints de push na mesma região do Google Cloud em que o serviço do Pub/Sub armazena as mensagens. Para uma solução alternativa para esse comportamento, consulte Como usar uma assinatura de push do Pub/Sub autenticada com uma implantação de várias regiões do Cloud Run.