In dieser Anleitung erfahren Sie, wie Sie einen hochverfügbaren, multiregionalen Cloud Run-Dienst mit automatischem Failover und Failback für externen Traffic bereitstellen. Sie können einen Cloud Run-Dienst mit diesen Funktionen konfigurieren, indem Sie serverlose NEGs, einen globalen externen Application Load Balancer und eine Bereitschaftsprüfung einrichten. Weitere Informationen finden Sie unter Traffic aus mehreren Regionen bereitstellen.
Ziele
In dieser Anleitung wird Folgendes beschrieben:
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
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.
Aktivieren Sie die APIs für Artifact Registry, Cloud Build, Cloud Run Admin, Network Services und Compute Engine.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (
roles/serviceusage.serviceUsageAdmin), die die Berechtigungserviceusage.services.enableenthält. Weitere Informationen zum Zuweisen von Rollen- Installieren und initialisieren Sie die gcloud CLI.
- Aktualisieren Sie die Komponenten:
gcloud components update
- Legen Sie die in dieser Anleitung verwendeten Konfigurationsvariablen fest:
Ersetzen Sie PROJECT_ID durch Ihre Google Cloud Projekt-ID.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
Erforderliche Rollen festlegen
Wenn Sie die Bereitstellung aus der Quelle mit Build durchführen möchten, müssen Sie oder Ihr Administrator dem Cloud Build-Dienstkonto die folgenden IAM-Rollen zuweisen.
Klicken, um die erforderlichen Rollen für das Cloud Build-Dienstkonto aufzurufen
Cloud Build verwendet automatisch das Compute Engine-Standarddienstkonto als Standard-Cloud Build-Dienstkonto zum Erstellen Ihres Quellcodes und Ihrer Cloud Run-Ressource, sofern Sie dieses Verhalten nicht überschreiben. Damit Cloud Build Ihre Quellen erstellen kann, bitten Sie Ihren Administrator, dem Compute Engine-Standarddienstkonto in Ihrem Projekt die Rolle Cloud Run Builder (roles/run.builder) zuzuweisen:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Ersetzen Sie PROJECT_NUMBER durch Ihre Google CloudProjektnummer und PROJECT_ID durch Ihre Google CloudProjekt-ID. Eine detaillierte Anleitung zum Ermitteln der Projekt-ID und der Projektnummer finden Sie unter Projekte erstellen und verwalten.
Es dauert einige Minuten, bis die Zuweisung der Rolle „Cloud Run-Builder“ für das Compute Engine-Standarddienstkonto übertragen wurde.
Bitten Sie Ihren Administrator, der Dienstidentität die Rolle Storage-Administrator (roles/storage.admin) zuzuweisen, um die Berechtigungen zu erhalten, die Ihre Dienstidentität benötigt, um auf die Datei und den Cloud Storage-Bucket zuzugreifen.
Weitere Informationen zu Cloud Storage-Rollen und -Berechtigungen finden Sie unter IAM für Cloud Storage.
Eine Liste der IAM-Rollen und -Berechtigungen im Zusammenhang mit Cloud Run finden Sie unter IAM-Rollen für Cloud Run und IAM-Berechtigungen für Cloud Run. Wenn Ihr Cloud Run-Dienst mitGoogle Cloud -APIs wie Cloud-Clientbibliotheken verknüpft ist, lesen Sie die Konfigurationsanleitung für Dienstidentitäten. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Bereitstellungsberechtigungen und Zugriff verwalten.
Beispielanwendung vorbereiten
So rufen Sie das gewünschte Codebeispiel ab:
Klonen Sie das Beispiel-Repository auf Ihren lokalen Computer:
git clone https://github.com/GoogleCloudPlatform/golang-samplesWechseln Sie in das Verzeichnis, das den Cloud Run-Beispielcode enthält:
cd golang-samples/run/service-health
Cloud Run-Dienst in zwei Regionen mit Bereitschaftsprobes bereitstellen
Für Failover sind mindestens zwei Dienste aus verschiedenen Regionen erforderlich. Führen Sie die folgenden Befehle aus, um Ihre Dienste aus dem Quellcode in zwei verschiedenen Regionen mit Bereitschaftstests bereitzustellen:
Stellen Sie Ihren Dienst
health-exampleinus-west1undeurope-west1aus dem Quellverzeichnis bereit. Sie benötigen mindestens eine Mindestinstanz, um den Dienststatus mit Bereitschaftstests zu konfigurieren:gcloud beta run deploy $SERVICE \ --source=. \ --regions=$REGION_A,$REGION_B \ --min=10 \ --readiness-probe httpGet.path="/are_you_ready"Beantworten Sie die Aufforderungen, die erforderlichen APIs zu installieren, indem Sie nach Aufforderung
yantworten. Dies ist nur einmal für ein Projekt erforderlich. Antworten Sie auf andere Aufforderungen, indem Sie die Plattform und Region angeben, sofern Sie diese nicht wie im Abschnitt Vorbereitung beschrieben eingerichtet haben.
Globalen externen Application Load Balancer einrichten
So richten Sie einen globalen externen Application Load Balancer ein, um Traffic zwischen us-west1 und europe-west1 weiterzuleiten:
Erstellen Sie einen Backend-Dienst.
gcloud compute backend-services create $SERVICE-bs \ --load-balancing-scheme=EXTERNAL_MANAGED \ --globalRichten Sie eine globale statische externe IP-Adresse ein, um den Load Balancer zu erreichen:
gcloud compute addresses create $SERVICE-ip \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --globalErstellen Sie eine URL-Zuordnung, um eingehende Anfragen an den Backend-Dienst weiterzuleiten:
gcloud compute url-maps create $SERVICE-lb \ --default-service $SERVICE-bsErstellen Sie einen Ziel-HTTP-Proxy, um Anfragen an Ihre URL-Zuordnung weiterzuleiten:
gcloud compute target-http-proxies create $SERVICE-hp \ --url-map=$SERVICE-lbErstellen Sie eine Weiterleitungsregel, um eingehende Anfragen an den Proxy weiterzuleiten:
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
Dienste über eine serverlose NEG hinzufügen
So fügen Sie die Dienste hinzu, die Sie in us-west1 und europe-west1 mit der serverlosen NEG bereitgestellt haben:
Erstellen Sie eine serverlose Netzwerk-Endpunktgruppe (NEG) für Ihren Cloud Run-Dienst in
us-west1undeurope-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=$SERVICEFügen Sie den Backend-Diensten in
us-west1undeurope-west1das serverlose NEG als Backend hinzu: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
Weitere Konfigurationsoptionen finden Sie unter Globalen externen Application Load Balancer mit Cloud Run einrichten.
Failover testen
So testen Sie das Failover, um die Zuverlässigkeit und Ausfallsicherheit Ihrer Cloud Run-Dienste zu gewährleisten:
Führen Sie den folgenden Befehl aus, um die IP-Adresse des Load Balancers abzurufen:
LBIP=$(gcloud compute addresses describe $SERVICE-ip --global --format='value(address)')Optional: Senden Sie eine Anfrage an Ihren Load Balancer, wenn für Ihre Dienste eine Authentifizierung erforderlich ist:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $LBIPRufen Sie den Wert der LBIP-Variablen ab, indem Sie den Befehl
echo $LBIPausführen. Dadurch wird die IP-Adresse des Load-Balancers ausgegeben. Beispiel:11.22.33.44.Wenn Sie einen Failover testen möchten, rufen Sie die URL
http://LOAD_BALANCER_IPauf. Dabei ist LOAD_BALANCER_IP der Wert, den Sie im vorherigen Schritt erhalten haben. Klicken Sie im Bereich Serving Regions (Regionen für die Auslieferung) auf die Ein/Aus-Schaltfläche für Ihre Region. Dies gibt die fehlerfreie Region und die Instanz an, die Traffic bereitstellt:
Bereinigen
Damit Ihrem Google Cloud Konto keine zusätzlichen Kosten in Rechnung gestellt werden, löschen Sie alle Ressourcen, die Sie mit dieser Anleitung bereitgestellt haben.
Projekt löschen
Wenn Sie ein neues Projekt für diese Anleitung erstellt haben, löschen Sie das Projekt. Wenn Sie ein vorhandenes Projekt verwendet haben und es beibehalten möchten, ohne die Änderungen in dieser Anleitung hinzuzufügen, löschen Sie die für die Anleitung erstellten Ressourcen.
Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das zum Ausführen der Anleitung erstellte Projekt löschen.
So löschen Sie das Projekt:
- Wechseln Sie in der Google Cloud -Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.
Anleitungsressourcen löschen
Löschen Sie den Cloud Run-Dienst, den Sie in dieser Anleitung bereitgestellt haben. Für Cloud Run-Dienste fallen erst Kosten an, wenn sie Anfragen empfangen.
Führen Sie den folgenden Befehl aus, um Ihren Cloud Run-Dienst zu löschen:
gcloud run services delete SERVICE-NAME
Ersetzen Sie SERVICE-NAME durch den Namen Ihres Dienstes.
Sie können Cloud Run-Dienste auch über die Google Cloud Console löschen.
Entfernen Sie die Konfiguration der Standardregion
gcloud, die Sie während der Einrichtung für die Anleitung hinzugefügt haben:gcloud config unset run/regionEntfernen Sie die Projektkonfiguration:
gcloud config unset project
Nächste Schritte
Weitere Informationen zu Konfigurationen für mehrere Regionen in anderen Google Cloud -Produkten:
Informationen zum Konfigurieren von Systemdiagnosen für Cloud Run-Dienste
Globalen externen Application Load Balancer mit Cloud Run einrichten