Questa guida mostra come eseguire il deployment di un servizio Cloud Run multiregionale ad alta disponibilità con failover e failback automatici per il traffico esterno. Puoi configurare un servizio Cloud Run con queste funzionalità configurando NEG serverless, un bilanciatore del carico delle applicazioni esterno globale e un probe di idoneità. Per maggiori informazioni, vedi Gestisci il traffico da più regioni.
Obiettivi
In questo tutorial, imparerai a:
Prima di iniziare
- Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Abilita le API Artifact Registry, Cloud Build, API Cloud Run Admin, Network Services e API Compute Engine.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (
roles/serviceusage.serviceUsageAdmin), che include l'autorizzazioneserviceusage.services.enable. Scopri come concedere i ruoli.- Installa e inizializza gcloud CLI.
- Aggiorna i componenti:
gcloud components update
- Imposta le variabili di configurazione utilizzate in questo tutorial:
Sostituisci PROJECT_ID con l'ID progetto Google Cloud .PROJECT_ID= gcloud config set core/project PROJECT_ID PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") SERVICE=health-example REGION_A=us-west1 REGION_B=europe-west1
Impostare i ruoli richiesti
Per eseguire il deployment dall'origine con la build, tu o il tuo amministratore dovete concedere al account di servizio Cloud Build i seguenti ruoli IAM.
Fai clic per visualizzare i ruoli richiesti per il account di servizio Cloud Build
Cloud Build utilizza automaticamente l'account di servizio predefinito di Compute Engine come service account Cloud Build predefinito per creare il codice sorgente e la risorsa Cloud Run, a meno che tu non esegua l'override di questo comportamento. Per consentire a Cloud Build di creare le tue origini, chiedi all'amministratore di concedere il ruolo Cloud Run Builder (roles/run.builder) al account di servizio Compute Engine predefinito nel tuo progetto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Sostituisci PROJECT_NUMBER con il numero del tuo progetto Google Cloude PROJECT_ID con l'ID progetto Google Cloud. Per istruzioni dettagliate su come trovare l'ID progetto e il numero di progetto,
vedi Creazione
e gestione dei progetti.
La concessione del ruolo Cloud Run Builder al account di servizio Compute Engine predefinito richiede alcuni minuti per la propagazione.
Per ottenere le autorizzazioni necessarie all'identità di servizio per accedere al file e al bucket Cloud Storage, chiedi all'amministratore di concedere all'identità di servizio il ruolo Storage Admin (roles/storage.admin).
Per maggiori dettagli su ruoli e autorizzazioni di Cloud Storage, consulta IAM per Cloud Storage.
Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il tuo servizio Cloud Run interagisce con le APIGoogle Cloud , come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per saperne di più sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestisci l'accesso.
Prepara l'applicazione di esempio
Per recuperare l'esempio di codice da utilizzare:
Clona il repository di esempio sulla tua macchina locale:
git clone https://github.com/GoogleCloudPlatform/golang-samplesPassa alla directory che contiene il codice campione di Cloud Run:
cd golang-samples/run/service-health
Esegui il deployment del servizio Cloud Run in due regioni con probe di disponibilità
I failover richiedono almeno due servizi di regioni diverse. Per eseguire il deployment dei servizi dall'origine in due regioni diverse con i probe di preparazione, esegui i seguenti comandi:
Esegui il deployment del servizio
health-exampleinus-west1eeurope-west1dalla directory di origine. Per configurare il controllo dell'integrità del servizio con i probe di preparazione, devi avere almeno un'istanza minima:gcloud beta run deploy $SERVICE \ --source=. \ --regions=$REGION_A,$REGION_B \ --min=10 \ --readiness-probe httpGet.path="/are_you_ready"Rispondi a eventuali richieste di installazione delle API necessarie rispondendo
yquando richiesto. Devi farlo solo una volta per progetto. Rispondi agli altri prompt fornendo la piattaforma e la regione, se non hai impostato i valori predefiniti per questi elementi come descritto nella sezione Prima di iniziare.
Configura un bilanciatore del carico delle applicazioni esterno globale
Per configurare un bilanciatore del carico delle applicazioni esterno globale per instradare il traffico tra
us-west1 e europe-west1, segui
questi passaggi:
Crea un servizio di backend:
gcloud compute backend-services create $SERVICE-bs \ --load-balancing-scheme=EXTERNAL_MANAGED \ --globalConfigura un indirizzo IP esterno statico e globale per raggiungere il bilanciatore del carico:
gcloud compute addresses create $SERVICE-ip \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --globalCrea una mappa URL per instradare le richieste in entrata al servizio di backend:
gcloud compute url-maps create $SERVICE-lb \ --default-service $SERVICE-bsCrea un proxy HTTP di destinazione per instradare le richieste alla mappa URL:
gcloud compute target-http-proxies create $SERVICE-hp \ --url-map=$SERVICE-lbCrea una regola di forwarding per indirizzare le richieste in entrata al proxy:
gcloud compute forwarding-rules create $SERVICE-fr \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=$SERVICE-ip \ --target-http-proxy=$SERVICE-hp \ --global \ --ports=80
Aggiungere i tuoi servizi tramite un NEG serverless
Per aggiungere i servizi che hai eseguito il deployment in us-west1 e
europe-west1 utilizzando il NEG serverless, segui questi
passaggi:
Crea un gruppo di endpoint di rete (NEG) serverless per il tuo servizio Cloud Run in
us-west1eeurope-west1:gcloud compute network-endpoint-groups create $SERVICE-neg-$REGION_A \ --region $REGION_A \ --network-endpoint-type=serverless \ --cloud-run-service=$SERVICEgcloud compute network-endpoint-groups create $SERVICE-neg-$REGION_B \ --region $REGION_B \ --network-endpoint-type=serverless \ --cloud-run-service=$SERVICEAggiungi il NEG serverless come backend ai servizi di backend in
us-west1eeurope-west1:gcloud compute backend-services add-backend $SERVICE-bs \ --global \ --network-endpoint-group=$SERVICE-neg-$REGION_A \ --network-endpoint-group-region=$REGION_Agcloud compute backend-services add-backend $SERVICE-bs \ --global \ --network-endpoint-group=$SERVICE-neg-$REGION_B \ --network-endpoint-group-region=$REGION_B
Per ulteriori opzioni di configurazione, consulta Configurare un bilanciatore del carico delle applicazioni esterno globale con Cloud Run.
Testa il failover
Per testare il failover per garantire l'affidabilità e la resilienza dei tuoi servizi Cloud Run, segui questi passaggi:
Esegui questo comando per ottenere l'indirizzo IP del bilanciatore del carico:
LBIP=$(gcloud compute addresses describe $SERVICE-ip --global --format='value(address)')(Facoltativo) Invia una richiesta al bilanciatore del carico se i tuoi servizi richiedono l'autenticazione:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $LBIPOttieni il valore della variabile LBIP eseguendo il comando
echo $LBIP. Viene restituito l'indirizzo IP del bilanciatore del carico. Ad esempio,11.22.33.44Per testare un failover, vai all'URL
http://LOAD_BALANCER_IP, dove LOAD_BALANCER_IP è il valore ottenuto nel passaggio precedente. Fai clic sul pulsante di attivazione/disattivazione per la tua regione nella sezione Regioni di pubblicazione. Indica la regione integra e l'istanza che gestisce il traffico:
Esegui la pulizia
Per evitare addebiti aggiuntivi al tuo account Google Cloud , elimina tutte le risorse che hai implementato con questo tutorial.
Elimina il progetto
Se hai creato un nuovo progetto per questo tutorial, eliminalo. Se hai utilizzato un progetto esistente e devi conservarlo senza le modifiche aggiunte in questo tutorial, elimina le risorse che hai creato per il tutorial.
Il modo più semplice per eliminare la fatturazione è eliminare il progetto creato per il tutorial.
Per eliminare il progetto:
- Nella console Google Cloud , vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona quello che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID progetto, quindi fai clic su Chiudi per eliminare il progetto.
Elimina le risorse del tutorial
Elimina il servizio Cloud Run di cui hai eseguito il deployment in questo tutorial. I servizi Cloud Run non comportano costi finché non ricevono richieste.
Per eliminare il servizio Cloud Run, esegui questo comando:
gcloud run services delete SERVICE-NAME
Sostituisci SERVICE-NAME con il nome del servizio.
Puoi eliminare i servizi Cloud Run anche dalla consoleGoogle Cloud .
Rimuovi la configurazione della regione predefinita
gcloudche hai aggiunto durante la configurazione del tutorial:gcloud config unset run/regionRimuovi la configurazione del progetto:
gcloud config unset project
Passaggi successivi
Scopri di più sulle configurazioni multiregionali in altri prodotti Google Cloud :
Scopri come configurare i controlli di integrità per i servizi Cloud Run
Configura un bilanciatore del carico delle applicazioni esterno globale con Cloud Run