Gestione del traffico da più aree geografiche

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Per restituire risposte più rapide ai tuoi utenti di tutto il mondo, devi eseguire il deployment dei servizi in più aree geografiche e instradare gli utenti all'area geografica più vicina.

Tuttavia, il deployment dei servizi Cloud Run avviene in singole aree geografiche e, per indirizzare gli utenti a diverse aree geografiche del tuo servizio, devi configurare il bilanciamento del carico HTTP(S) esterno.

Questa guida illustra come configurare il bilanciamento del carico HTTP(S) esterno con un dominio protetto con un certificato TLS gestito che punta a un indirizzo IP anycast globale (che indirizza gli utenti al data center di Google più vicino di cui ha eseguito il deployment del servizio).

Prima di iniziare

Creazione di un Elastic Load Balancer (ELB)

La creazione di un bilanciatore del carico esterno comporta la creazione di diverse risorse di networking e la connessione tra loro, come mostrato nelle istruzioni seguenti.

Riga di comando

  1. Prenota un indirizzo IP statico in modo da non dover aggiornare i record DNS quando ricrei il bilanciatore del carico.
    gcloud compute addresses create --global SERVICE_IP
    Nel comando riportato sopra, sostituisci SERVICE_IP con un nome per la risorsa dell'indirizzo IP (ad es. myservice-ip).

    Questo indirizzo IP è un indirizzo IPv4 anycast globale che rimanda al data center di Google o al punto di presenza più vicino ai visitatori.

  2. Crea un servizio di backend.
    gcloud compute backend-services create --global BACKEND_NAME

    Nel comando riportato sopra, sostituisci BACKEND_NAME con il nome che vuoi assegnare al servizio di backend (ad es. myservice-backend).

  3. Crea una mappa URL
    gcloud compute url-maps create URLMAP_NAME --default-service=BACKEND_NAME

    Sostituisci URLMAP_NAME con un nome che vuoi assegnare alla mappa URL (ad es. myservice-urlmap).

  4. Crea un certificato TLS gestito per il tuo dominio per gestire il traffico HTTPS. Sostituisci example.com con il tuo nome di dominio.
    gcloud beta compute ssl-certificates create CERT_NAME \
      --domains=example.com

    Sostituisci CERT_NAME con il nome che vuoi che abbia il certificato SSL gestito (ad esempio myservice-cert).

  5. Creare un proxy HTTPS di destinazione.
    gcloud compute target-https-proxies create HTTPS_PROXY_NAME \
      --ssl-certificates=CERT_NAME \
      --url-map=URLMAP_NAME

    Sostituisci HTTPS_PROXY_NAME con il nome che vuoi assegnare al proxy HTTPS di destinazione (ad es. myservice-https).

  6. Crea una regola di forwarding che collega le risorse di networking create all'indirizzo IP.
    gcloud compute forwarding-rules create --global FORWARDING_RULE_NAME \
      --target-https-proxy=HTTPS_PROXY_NAME \
      --address=SERVICE_IP \
      --ports=443

    Sostituisci FORWARDING_RULE_NAME con il nome della risorsa della regola di forwarding che vuoi creare (ad es. myservice-lb).

Deployment in più aree geografiche

Esegui il deployment del tuo servizio nelle aree geografiche Cloud Run disponibili. Per facilitare la gestione, puoi utilizzare lo stesso nome di servizio in più aree geografiche.

  1. Scegli le aree geografiche in cui vuoi rendere disponibile il servizio.

  2. Esegui il deployment del tuo servizio Cloud Run su singole aree geografiche.

      gcloud run deploy SERVICE_NAME \
          --allow-unauthenticated \
          --image=IMAGE_URL \
          --region=REGION
    

    Sostituisci le seguenti variabili:

    • REGION con una delle regioni in cui vuoi eseguire il deployment.
    • SERVICE_NAME con il nome del tuo servizio. L'utilizzo dello stesso nome di servizio in più aree geografiche semplifica il monitoraggio dei deployment in più aree geografiche.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest.
  3. Ripeti il passaggio precedente per ogni area geografica.

Località di Cloud Run

Cloud Run è a livello di regione, ossia l'infrastruttura che esegue i tuoi servizi Cloud Run si trova in una regione specifica ed è gestita da Google in modo che sia ridondante disponibile in tutte le zone al suo interno.

Soddisfare i requisiti di latenza, disponibilità o durabilità sono fattori principali per la selezione dell'area geografica in cui vengono eseguiti i servizi Cloud Run. In genere, puoi selezionare l'area geografica più vicina ai tuoi utenti, ma dovresti considerare la località degli altri prodotti Google Cloud utilizzati dal servizio Cloud Run. L'utilizzo combinato dei prodotti Google Cloud in più località può influire sulla latenza del servizio e sui costi.

Cloud Run è disponibile nelle seguenti regioni:

Soggetto ai prezzi di Livello 1

  • asia-east1 (Taiwan)
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)
  • europe-north1 (Finlandia) icona Fogliolina Bassi livelli di CO2
  • europe-southwest1 (Madrid) icona Fogliolina CO bassa2
  • europe-west1 (Belgio) icona Fogliolina CO bassa2
  • europe-west4 (Paesi Bassi)
  • europe-west8 (Milano)
  • europe-west9 (Parigi) icona Fogliolina Basso livello di CO2
  • us-central1 (Iowa) icona Fogliolina CO basso2
  • us-east1 (Carolina del Sud)
  • us-east4 (Virginia del Nord)
  • us-east5 (Columbus)
  • us-south1 (Dallas)
  • us-west1 (Oregon) icona Fogliolina Bassi livelli di CO2

Soggetto ai prezzi di Livello 2

  • asia-east2 (Hong Kong)
  • asia-northeast3 (Seul, Corea del Sud)
  • asia-southeast1 (Singapore)
  • asia-southeast2 (Giacarta)
  • asia-south1 (Mumbai, India)
  • asia-south2 (Delhi, India)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Varsavia, Polonia)
  • europe-west2 (Londra, Regno Unito)
  • europe-west3 (Francoforte, Germania)
  • europe-west6 (Zurigo, Svizzera) icona Fogliolina Basso livello di CO2
  • northamerica-northeast1 (Montreal) icona Fogliolina CO bassa2
  • northamerica-northeast2 (Toronto) icona Fogliolina Basso livello di CO2
  • southamerica-east1 (San Paolo, Brasile) icona Fogliolina Basso CO2
  • southamerica-west1 (Santiago, Cile)
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

Se hai già creato un servizio Cloud Run, puoi visualizzare l'area geografica nella dashboard di Cloud Run nella Google Cloud Console.

Configurazione dei backend a livello di regione

Per ogni area geografica in cui hai eseguito il deployment nel passaggio precedente, devi creare gruppi di endpoint di rete serverless (NEG) e aggiungerli al servizio di backend, seguendo le istruzioni seguenti:

  1. Crea un gruppo di endpoint di rete per il servizio Cloud Run in REGION:

    gcloud beta compute network-endpoint-groups create NEG_NAME \
        --region=REGION \
        --network-endpoint-type=SERVERLESS \
        --cloud-run-service=SERVICE_NAME 

    Nel comando riportato di seguito, sostituisci:

    • NEG_NAME con il nome della risorsa di gruppo dell'endpoint di rete. (ad es. myservice-neg-uscentral1)
    • REGION con l'area geografica in cui viene eseguito il deployment del servizio.
    • SERVICE_NAME con il nome del tuo servizio.
  2. Aggiungi il gruppo di endpoint di rete al servizio di backend:

    gcloud beta compute backend-services add-backend --global BACKEND_NAME \
        --network-endpoint-group-region=REGION \
        --network-endpoint-group=NEG_NAME

    Specifica il NEG_NAME che hai creato nel passaggio precedente per l'area geografica.

  3. Ripeti i passaggi precedenti per ogni area geografica.

Configurazione dei record DNS nel tuo dominio

Per indirizzare il tuo nome di dominio alla regola di forwarding che hai creato, devi aggiornare i relativi record DNS con l'indirizzo IP che hai creato.

  1. Per trovare l'indirizzo IP riservato del bilanciatore del carico, esegui questo comando:

      gcloud compute addresses describe --global SERVICE_IP --format='value(address)'

    Sostituisci SERVICE_IP con il nome dell'indirizzo IP che hai creato in precedenza. Questo comando stampa l'indirizzo IP nell'output.

  2. Aggiorna i record DNS del tuo dominio aggiungendo un record A con questo indirizzo IP.

In attesa del provisioning del bilanciatore del carico

Dopo aver configurato il dominio con l'indirizzo IP del bilanciatore del carico, devi attendere un po' di tempo prima che i record DNS vengano propagati. Analogamente, devi attendere un po' di tempo prima che il certificato TLS gestito venga emesso per il tuo dominio e sia pronto per iniziare a gestire il traffico HTTPS a livello globale.

Potrebbero essere necessari fino a 30 minuti prima che il bilanciatore del carico inizi a gestire il traffico.

Quando sarà tutto pronto, visita l'URL del tuo sito web con il prefisso https:// per provarlo.

Verifica dello stato

  1. Per controllare lo stato della propagazione dei record DNS, utilizzando l'utilità a riga di comando dig:

    dig A +short example.com

    L'output dovrebbe mostrare l'indirizzo IP configurato nei record DNS.

  2. Controlla lo stato dell'emissione del certificato gestito, esegui:

    gcloud beta compute ssl-certificates describe CERT_NAME

    Sostituisci CERT_NAME con il nome che hai scelto in precedenza per la risorsa del certificato SSL.

    L'output dovrebbe mostrare una riga contenente status: ACTIVE.

Configurare il reindirizzamento da HTTP a HTTPS

Per impostazione predefinita, una regola di forwarding gestisce un solo protocollo, quindi le richieste agli endpoint http:// rispondono con 404 Not Found. Se le richieste ai tuoi URL http:// devono essere reindirizzate al protocollo https://, devi creare una mappa URL aggiuntiva e una regola di forwarding, seguendo le seguenti istruzioni:

  1. Creare una mappa URL con una regola di reindirizzamento.

    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

    Sostituisci HTTP_URLMAP_NAME con il nome della risorsa mappa URL che creerai (ad es. myservice-httpredirect).

  2. Crea un proxy HTTP di destinazione con la mappa URL.

    gcloud compute target-http-proxies create HTTP_PROXY_NAME \
      --url-map=HTTP_URLMAP_NAME

    Sostituisci HTTP_PROXY_NAME con il nome del proxy HTTP di destinazione che creerai (ad es. myservice-http).

  3. Crea una regola di forwarding sulla porta 80 con lo stesso indirizzo IP riservato.

    gcloud compute forwarding-rules create --global HTTP_FORWARDING_RULE_NAME \
      --target-http-proxy=HTTP_PROXY_NAME \
      --address=SERVICE_IP \
      --ports=80
    

    Sostituisci HTTP_FORWARDING_RULE_NAME con il nome della nuova regola di forwarding che creerai (ad es. myservice-httplb).

Utilizzo di sottoscrizioni push autenticate Pub/Sub con deployment a più aree geografiche

Per impostazione predefinita, un servizio Pub/Sub recapita i messaggi agli endpoint push nella stessa area geografica Google Cloud in cui il servizio Pub/Sub archivia i messaggi. Per una soluzione alternativa a questo comportamento, consulta Utilizzare un abbonamento Pub/Sub autenticato con un'implementazione Cloud Run in più aree geografiche.