Sie können Nutzern weltweit schneller Antworten liefern, indem Sie Dienste in mehreren Regionen bereitstellen und die Nutzer zur nächstgelegenen Region weiterleiten. Die Bereitstellung über mehrere Regionen hinweg sorgt für eine geringe Latenz und eine höhere Verfügbarkeit bei regionalen Ausfällen.
Da Cloud Run-Dienste in einzelnen Regionen bereitgestellt werden, müssen Sie Ihren Dienst in mehreren Regionen bereitstellen und dann globales Load-Balancing für den Dienst konfigurieren.
Sie können das regionsübergreifende Failover mithilfe der Systemdiagnose für Cloud Run-Dienste automatisieren.
Hinweise
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
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.
- Richten Sie Ihre Cloud Run-Entwicklungsumgebung in Ihrem Google Cloud -Projekt ein.
- Installieren und initialisieren Sie die gcloud CLI.
- Prüfen Sie, ob Ihrem Konto die folgenden IAM-Rollen zugewiesen sind:
- Cloud Run-Administrator (
roles/run.admin) - Project IAM Admin (
roles/resourcemanager.projectIamAdmin) - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer)
- Cloud Run-Administrator (
-
Rufen Sie in der Google Cloud Console die Seite IAM auf.
IAM aufrufen - Wählen Sie das Projekt aus.
- Klicken Sie auf Zugriffsrechte erteilen.
-
Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Dies ist in der Regel die E‑Mail-Adresse des Google-Kontos, mit dem der Cloud Run-Dienst bereitgestellt wurde.
- Wählen Sie in der Liste Rolle auswählen eine Rolle aus.
- Wenn Sie weitere Rollen zuweisen möchten, klicken Sie auf Weitere Rolle hinzufügen und wählen Sie die gewünschten Rollen aus.
- Klicken Sie auf Speichern.
- PROJECT_NUMBER durch die Google Cloud Projektnummer.
- PROJECT_ID durch Ihre Google Cloud Projekt-ID.
- PRINCIPAL durch das Konto, für das Sie die Bindung hinzufügen. Dies ist in der Regel die E‑Mail-Adresse des Google-Kontos, das zum Bereitstellen des Cloud Run-Dienstes verwendet wird.
- ROLE durch die Rolle, die Sie dem Bereitstellerkonto hinzufügen.
- Preise für Cloud Run Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
- Aktivieren Sie die APIs für Artifact Registry, Cloud Build, Cloud Run Admin API, Compute Engine und Network Services API, indem Sie den folgenden Befehl ausführen:
- Wiederholen Sie die Schritte, um die App in einer einzelnen Region bereitzustellen.
- Stellen Sie einen multiregionalen Dienst bereit.
Führen Sie den Befehl
gcloud run deploymit dem Flag--regionsaus, um einen multiregionalen Dienst für zu erstellen und bereitzustellen:gcloud run deploy
SERVICE_NAME\ --image=IMAGE_URL\ --regions=REGIONSErsetzen Sie Folgendes:
SERVICE_NAME: Der Name des multiregionalen Dienstes, den Sie bereitstellen möchten.IMAGE_URL: Ein Verweis auf das Container-Image, z. B.us-docker.pkg.dev/cloudrun/container/hello:latestREGIONS: Die Liste von mehreren Regionen, in denen Sie die Bereitstellung vornehmen möchten. Beispiel:europe-west1,asia-east1.
Erstellen Sie die YAML-Datei für Ihren Dienst und verwenden Sie das Attribut
run.googleapis.com/regions, um die mehreren Regionen festzulegen, in denen Sie Ihren Dienst bereitstellen möchten:apiVersion: serving.knative.dev/v1 kind: Service metadata: name:
SERVICE_NAMEannotations: run.googleapis.com/regions:REGIONSspec: template: spec: containers: - image:IMAGE_URLErsetzen Sie Folgendes:
SERVICE_NAME: Der Name des multiregionalen Dienstes, in dem Sie die Bereitstellung vornehmen möchten.REGIONS: Die Liste von mehreren Regionen, die Sie aktualisieren möchten. Beispiel:europe-west1,asia-east1.IMAGE_URL: Ein Verweis auf das Container-Image, z. B.us-docker.pkg.dev/cloudrun/container/hello:latest
Erstellen Sie den Dienst mit dem folgenden Befehl:
gcloud run multi-region-services replace service.yaml
Verwenden Sie das Flag
--add-regions, um den multiregionalen Dienst einer oder mehreren zusätzlichen Regionen hinzuzufügen:gcloud run multi-region-services update
SERVICE_NAME\ --add-regions=REGIONSVerwenden Sie das Flag
--remove-regions, um den multiregionalen Dienst aus einer oder mehreren Regionen zu entfernen:gcloud run multi-region-services update
SERVICE_NAME\ --remove-regions=REGIONSErsetzen Sie Folgendes:
SERVICE_NAME: Der Name des multiregionalen Dienstes, den Sie aktualisieren möchten.REGIONS: Die Region oder Regionen, in denen Sie Ihren Dienst hinzufügen oder aus denen Sie ihn entfernen möchten. Beispiel:us-central1,asia-east1
Wenn Sie einen vorhandenen Dienst mit mehreren Regionen aktualisieren möchten, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud run multi-region-services describe SERVICE_NAME --format export > service.yaml
Aktualisieren Sie das Attribut
run.googleapis.com/regions, um die Liste der Regionen hinzuzufügen oder zu entfernen, in denen der Dienst bereitgestellt werden soll:apiVersion: serving.knative.dev/v1 kind: Service metadata: name:
SERVICE_NAMEannotations: run.googleapis.com/regions:REGIONSErsetzen Sie Folgendes:
SERVICE_NAME: Der Name des multiregionalen Dienstes, in dem Sie die Bereitstellung vornehmen möchten.REGIONS: Die neue Liste von mehreren Regionen, in denen die Dienstversion bereitgestellt werden soll.
Aktualisieren Sie den Dienst mit dem folgenden Befehl:
gcloud run multi-region-services replace service.yaml
Führen Sie den Befehl
gcloud run multi-region-services deleteaus, um einen multiregionalen Dienst zu löschen:gcloud run multi-region-services delete
SERVICE_NAMEErsetzen Sie
SERVICE_NAMEdurch den Namen des multiregionalen Dienstes, den Sie löschen möchten.- Regionsübergreifendes Failover mit dem Cloud Run-Dienststatus automatisieren
- Ausreißererkennung konfigurieren, um fehlerhafte Cloud Run-Dienste anhand ihrer HTTP-Fehlerrate zu identifizieren und einige Anfragen an eine andere Region weiterzuleiten.
- Reservieren Sie eine statische IP-Adresse, damit Sie Ihre DNS-Einträge bei der Neuerstellung Ihres Load-Balancers nicht aktualisieren müssen.
Ersetzen Sie im obigen Befehl SERVICE_IP durch einen Namen für die IP-Adressressource (z. B.gcloud compute addresses create --global SERVICE_IP
myservice-ip).Diese IP-Adresse ist eine globale Anycast-IPv4-Adresse, über die eine Weiterleitung an das Google-Rechenzentrum oder an den Point of Presence erfolgt, der den Besuchern am nächsten liegt.
- Erstellen Sie einen Back-End-Dienst.
gcloud compute backend-services create \ --global BACKEND_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED
Ersetzen Sie BACKEND_NAME durch einen Namen, den Sie dem Backend-Dienst geben möchten. Beispiel:
myservice-backend. - Erstellen Sie eine URL-Zuordnung.
gcloud compute url-maps create URLMAP_NAME --default-service=BACKEND_NAME
Ersetzen Sie URLMAP_NAME durch den Namen, den Sie der URL-Zuordnung zuweisen möchten (z. B.
myservice-urlmap). - Erstellen Sie für Ihre Domain ein verwaltetes TLS-Zertifikat, um HTTPS-Traffic bereitzustellen. Ersetzen Sie example.com durch Ihren Domainnamen.
gcloud compute ssl-certificates create CERT_NAME \ --domains=example.com
Ersetzen Sie CERT_NAME durch den Namen, den das verwaltete SSL-Zertifikat haben soll (z. B.
myservice-cert). - Erstellen Sie einen Ziel-HTTPS-Proxy.
gcloud compute target-https-proxies create HTTPS_PROXY_NAME \ --ssl-certificates=CERT_NAME \ --url-map=URLMAP_NAME
Ersetzen Sie HTTPS_PROXY_NAME durch den Namen, den Sie dem HTTPS-Ziel-Proxy geben möchten (z. B.
myservice-https). - Erstellen Sie eine Weiterleitungsregel, um die von Ihnen erstellten Netzwerkressourcen mit der IP-Adresse zu verbinden.
gcloud compute forwarding-rules create --global FORWARDING_RULE_NAME \ --target-https-proxy=HTTPS_PROXY_NAME \ --address=SERVICE_IP \ --ports=443 \ --load-balancing-scheme=EXTERNAL_MANAGED
Ersetzen Sie FORWARDING_RULE_NAME durch den Namen der Ressource für die Weiterleitungsregel, die Sie erstellen möchten. Beispiel:
myservice-lb. -
Konfigurieren Sie die IP-Adresse:
Der IP-Adressressourcenname wird als
myservice-service-ipkonfiguriert. Sie können das in Ihren eigenen Wert ändern. Diese IP-Adresse ist eine globale Anycast-IPv4-Adresse, über die eine Weiterleitung an das Google-Rechenzentrum oder an den Point of Presence erfolgt, der den Besuchern am nächsten liegt. -
Erstellen und konfigurieren Sie den Backend-Dienst:
Diese Ressource konfiguriert den Backend-Dienst sodas er
myservice-backendheißt. Sie können das in Ihren eigenen Wert ändern. -
URL-Zuordnung konfigurieren
Verbindet die Backend-Dienstressource (
myservice-backend) mit der neuen URL-Zuordnungsressource (myservice-lb-urlmap). Sie können diese Werte in Ihre eigenen ändern. -
Erstellen Sie für Ihre Domain ein verwaltetes TLS-Zertifikat, um HTTPS-Traffic bereitzustellen. Ersetzen Sie
example.comdurch Ihren Domainnamen in der Ressourcegoogle_compute_managed_ssl_certificate: -
Konfigurieren Sie den HTTPS-Proxy:
Erstellt die Ressource
google_compute_target_https_proxymit dem Zielnamenmyservice-https-proxyund verbindet das zuvor erstellte TLS-Zertifikat (myservice-ssl-cert) und die URL-Zuordnungsressourcen (myservice-lb-urlmap). Sie können diese Werte in Ihre eigenen ändern. -
Weiterleitungsregel konfigurieren
Erstellt die Ressource
google_compute_global_forwarding_rulemit dem Zielnamenmyservice-https-proxyund verbindet das zuvor erstellte HTTPS-Proxy-Ziel (myservice-https-proxy) und die IP-Adressressource (myservice-service-ip). Sie können diese Werte in Ihre eigenen ändern. -
Wenden Sie diese Konfiguration an:
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud -Projekt anzuwenden.
Cloud Shell vorbereiten
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Standardprojekt Google Cloud fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tfhaben, z. B.main.tf. In dieser Anleitung wird die Datei alsmain.tfbezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgradeein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
Änderungen anwenden
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yesan der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
-
Erstellen Sie eine Netzwerk-Endpunktgruppe für den Cloud Run-Dienst in
REGION:gcloud compute network-endpoint-groups create NEG_NAME \ --region=REGION \ --network-endpoint-type=serverless \ --cloud-run-service=SERVICE_NAME
Ersetzen Sie Folgendes:
-
NEG_NAME durch den Namen der Netzwerk-Endpunktgruppenressource
(z. B.
myservice-neg-uscentral1) - REGION durch die Region, in der Ihr Dienst bereitgestellt wird.
- SERVICE_NAME durch den Namen des Dienstes.
-
NEG_NAME durch den Namen der Netzwerk-Endpunktgruppenressource
(z. B.
-
Fügen Sie dem Back-End-Dienst die Netzwerk-Endpunktgruppe hinzu:
gcloud compute backend-services add-backend --global BACKEND_NAME \ --network-endpoint-group-region=REGION \ --network-endpoint-group=NEG_NAME
Geben Sie den Namen für NEG_NAME an, den Sie im vorherigen Schritt für die Region festgelegt haben.
-
Wiederholen Sie die vorherigen Schritte für jede Region.
-
Konfigurieren Sie eine Netzwerk-Endpunktgruppe mit dem Namen
myservice-negfür den Cloud Run-Dienst für jede Region, die in der Variablerun_regionsangegeben ist: -
Konfigurieren Sie einen Backend-Dienst, um die Netzwerk-Endpunktgruppe (
myservice-neg) anzuhängen: Führen Sie den folgenden Befehl aus, um die reservierte IP-Adresse des Load Balancers zu ermitteln:
gcloud compute addresses describe SERVICE_IP \ --global \ --format='value(address)'
Ersetzen Sie SERVICE_IP durch den Namen der zuvor erstellten IP-Adresse. Mit diesem Befehl wird die IP-Adresse in der Ausgabe angegeben.
Aktualisieren Sie die DNS-Einträge Ihrer Domain. Fügen Sie dazu einen
A-Eintrag mit dieser IP-Adresse hinzu.So prüfen Sie den Status der Weitergabe von DNS-Einträgen mit dem
dig-Befehlszeilen-Dienstprogramm:dig A +short example.com
Die Ausgabe sollte die IP-Adresse enthalten, die Sie in Ihren DNS-Einträgen konfiguriert haben.
Führen Sie den folgenden Befehl aus, um den Status der Ausstellung Ihres verwalteten Zertifikats zu prüfen:
gcloud compute ssl-certificates describe CERT_NAME
Ersetzen Sie CERT_NAME durch den Namen, den Sie zuvor für die SSL-Zertifikatsressource ausgewählt haben.
Die Ausgabe enthält eine Zeile mit
status: ACTIVE.-
Erstellen Sie eine URL-Zuordnung mit einer Weiterleitungsregel.
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
Ersetzen Sie dabei HTTP_URLMAP_NAME durch den Namen der URL-Zuordnungsressource, die Sie erstellen möchten, z. B.
myservice-httpredirect. -
Erstellen Sie einen HTTP-Ziel-Proxy mit der URL-Zuordnung.
gcloud compute target-http-proxies create HTTP_PROXY_NAME \ --url-map=HTTP_URLMAP_NAME
Ersetzen Sie HTTP_PROXY_NAME durch den Namen des HTTP-Ziel-Proxys, den Sie erstellen möchten, z. B.
myservice-http. -
Erstellen Sie eine Weiterleitungsregel auf Port
80mit derselben reservierten IP-Adresse.gcloud compute forwarding-rules create --global HTTP_FORWARDING_RULE_NAME \ --target-http-proxy=HTTP_PROXY_NAME \ --address=SERVICE_IP \ --ports=80
Ersetzen Sie HTTP_FORWARDING_RULE_NAME durch den Namen der neuen Weiterleitungsregel, die Sie erstellen möchten (z. B.
myservice-httplb). -
Erstellen Sie eine URL-Zuordnungsressource mit einer Weiterleitungsregel.
-
Erstellen Sie einen HTTP-Ziel-Proxy mit der neu erstellten URL-Zuordnungsressource (
myservice-https-urlmap): -
Erstellen Sie eine Weiterleitungsregel auf Port
80mit derselben reservierten IP-Adressen-Ressource (myservice-http-proxy). - Sie müssen mindestens eine Mindestinstanz auf Dienst- oder Überarbeitungsebene pro Region konfigurieren, um den Zustand zu berechnen. Sie können auch den Messwert Anzahl der Containerinstanzen in Cloud Monitoring verwenden, um die erforderliche Mindestanzahl von Instanzen für Ihre Regionen zu schätzen.
- Für Failover sind mindestens zwei Dienste aus verschiedenen Regionen erforderlich. Andernfalls wird bei einem Fehler in einem Dienst die Fehlermeldung
no healthy upstreamangezeigt. - Die Systemdiagnose für Cloud Run-Dienste unterstützt keine regionenübergreifenden internen Application Load Balancer mit mehr als fünf serverlosen NEG-Back-Ends.
- Sie können keine URL-Maske oder Tags in serverlosen NEGs konfigurieren.
- Sie können IAP nicht über einen Backend-Dienst oder Load-Balancer aktivieren. IAP direkt über Cloud Run aktivieren
- Wenn ein Cloud Run-Dienst gelöscht wird, meldet Cloud Run keinen fehlerhaften Status an den Load Balancer.
- Beim Starten einer neuen Instanz wird die erste Bereitschaftsprüfung nicht berücksichtigt. Daher kann es sein, dass eine Anfrage kurzzeitig an einen neu gestarteten Dienst weitergeleitet wird, bevor dieser als fehlerhaft eingestuft wird.
- Die Integrität des Cloud Run-Dienstes wird über alle Instanzen hinweg berechnet. Versionen ohne Tests werden als unbekannt behandelt. Der Load Balancer behandelt unbekannte Instanzen als fehlerfrei.
Stellen Sie eine Cloud Run-Dienstversion in mehreren Regionen mit einer oder mehreren Mindestanzahl von Instanzen bereit. Führen Sie den folgenden Befehl aus, um die Bereitschaftsprüfung zu verwenden, die Sie im vorherigen Schritt konfiguriert haben:
gcloud beta run deploy
SERVICE_NAME\ --regions=REGION_A,REGION_B\ --min=MIN_INSTANCESErsetzen Sie Folgendes:
- SERVICE_NAME ist der Name des Diensts.
- REGION_A, REGION_B: Verschiedene Regionen für Ihre Dienstversion. Legen Sie beispielsweise REGION_A auf
us-central1und REGION_B aufeurope-west1fest. - MIN_INSTANCES: Die Anzahl der Containerinstanzen, die einsatzbereit gehalten werden und zum Empfangen von Anfragen bereit sein sollen. Der Mindestwert muss mindestens 1 sein.
Konfigurieren Sie eine gRPC- oder HTTP-Bereitschaftsprüfung, die für jede Containerinstanz eingerichtet ist.
Konfigurieren Sie einen regionenübergreifenden internen Application Load Balancer, um Traffic von fehlerhaften Regionen wegzuleiten.
Richten Sie serverlose NEGs für jeden Cloud Run-Dienst in jeder Region ein.
Konfigurieren Sie einen Backend-Dienst, um eine Verbindung zu serverlosen NEGs herzustellen.
Stellen Sie die neue Überarbeitung in einer einzelnen „Canary“-Region mit einer konfigurierten Bereitschaftsprüfung bereit.
Senden Sie eine geringe Menge an Traffic (z. B. 1%) an die neue Überarbeitung.
Verwenden Sie eine Mindestanzahl von Instanzen ungleich 0 auf Dienstebene und nicht auf Überarbeitungsebene.
Prüfen Sie den Messwert für den Bereitschaftsprobing (
run.googleapis.com/container/instance_count_with_readiness), um sicherzustellen, dass neue Instanzen fehlerfrei sind.Erhöhen Sie den Prozentsatz des Traffics für die neue Überarbeitung schrittweise. Behalten Sie während der Hochskalierung die regionale Messwert für den Zustand des Cloud Run-Dienstes (
run.googleapis.com/service_health_count) im Blick, der vom Load-Balancer verwendet wird. Cloud Run-DienststatusberichteUNKNOWN, bis genügend Traffic an die neue Überarbeitung weitergeleitet wird.Sobald die Version 100% des Traffics empfängt und der regionale Cloud Run-Dienst fehlerfrei und stabil ist, wiederholen Sie diesen Vorgang für alle anderen Regionen.
Wenn Sie die URL-Zuordnung des globalen externen Application Load Balancers aktualisieren möchten, entfernen Sie die NEG aus dem Backend-Dienst mit dem Flag
--global:gcloud compute backend-services remove-backend
BACKEND_NAME\ --network-endpoint-group=NEG_NAME\ --network-endpoint-group-region=REGION\ --globalErsetzen Sie Folgendes:
BACKEND_NAMEist der Name des Backend-Dienstes.NEG_NAME: Der Name der Netzwerk-Endpunktgruppenressource, z. B.myservice-neg-uscentral1.REGION: Die Region, in der die NEG erstellt wurde und aus der Sie Ihren Dienst entfernen möchten. Beispiel:us-central1,asia-east1
Rufen Sie https://
<domain-name>auf, um zu prüfen, ob eine fehlerfreie Region jetzt Traffic bereitstellt.- Informationen zum Konfigurieren von Systemdiagnosen für Cloud Run-Dienste, einschließlich Bereitschaftsprobes
Rollen zuweisen
Console
gcloud
So weisen Sie Ihrem Konto die erforderlichen IAM-Rollen für Ihr Projekt zu:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
Ersetzen Sie:
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com \ compute.googleapis.com \ networkservices.googleapis.com
Dienst in mehreren Regionen bereitstellen
Die von Ihnen konfigurierten Skalierungsparameter gelten für mehrere Regionen. Bei einer Bereitstellung in mehreren Regionen gilt der Wert für die Mindestanzahl von Instanzen beispielsweise für jede der mehreren Regionen.
Sie stellen denselben Dienst mit einer der folgenden Methoden in mehreren Regionen bereit:
Multiregionalen Dienst bereitstellen
In diesem Abschnitt erfahren Sie, wie Sie einen multiregionalen Dienst mit einem einzigen Befehl der gcloud CLI oder mit einer YAML- oder Terraform-Datei bereitstellen und konfigurieren.
gcloud
YAML
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Fügen Sie der Ressource google_cloud_run_v2_service in Ihrer Terraform-Konfiguration Folgendes hinzu.
resource "google_cloud_run_v2_service" "default" {
name = "cloudrun-service-multi-region"
regions = [
"REGION_1",
"REGION_2",
]
template {
containers {
image = "us-docker.pkg.dev/cloudrun/container/hello"
}
}
}
Ersetzen Sie "REGION_1" und "REGION_2" durch die erforderlichenGoogle Cloud -Regionen. Beispiel: europe-west1 und us-central1.
Multiregionalen Dienst aktualisieren
In diesem Abschnitt erfahren Sie, wie Sie einem multiregionalen Dienst mit einem einzigen Befehl der gcloud CLI oder einer YAML-Datei Regionen hinzufügen oder daraus entfernen.
gcloud
Wenn Sie einem multiregionalen Dienst Regionen hinzufügen oder daraus entfernen möchten, führen Sie den Befehl gcloud run multi-region-services update aus.
YAML
Multiregionalen Dienst löschen
Globalen externen Application Load Balancer konfigurieren
In diesem Abschnitt erfahren Sie, wie Sie einen globalen externen Application Load Balancer mit einer Domain konfigurieren, die mit einem verwalteten TLS-Zertifikat geschützt wird und auf eine globale Anycast-IP-Adresse verweist. Über diese Adresse werden die Nutzer zum nächsten Google-Rechenzentrum weitergeleitet, in dem Ihr Dienst bereitgestellt ist.
Die in den folgenden Abschnitten beschriebene Architektur leitet Anfragen nicht automatisch an eine andere Region weiter, wenn ein regionaler Cloud Run-Dienst nicht mehr reagiert oder Fehler zurückgibt.
So erhöhen Sie die Verfügbarkeit Ihres multiregionalen Dienstes:
Globalen externen Application Load Balancer erstellen
Zum Erstellen eines globalen externen Application Load Balancers müssen verschiedene Netzwerkressourcen erstellt und miteinander verbunden werden:
gcloud
Terraform
Alternativ zu den in diesem Abschnitt beschriebenen Schritten können Sie das Terraform-Modul für globale HTTP-Load-Balancer verwenden.
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Regionale Netzwerk-Endpunktgruppen konfigurieren
Für jede Region, in der Sie im vorherigen Schritt eine Bereitstellung vorgenommen haben, müssen Sie serverlose Netzwerk-Endpunktgruppen (NEGs) erstellen und diese dem Back-End-Dienst hinzufügen. Gehen Sie dazu folgendermaßen vor:
gcloud-CLI
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
DNS-Einträge in Ihrer Domain konfigurieren
Damit der Domainname auf die von Ihnen erstellte Weiterleitungsregel verweist, müssen Sie die DNS-Einträge mit der von Ihnen erstellten IP-Adresse aktualisieren.
Benutzerdefinierte Zielgruppe bei Verwendung authentifizierter Dienste konfigurieren
Authentifizierte Dienste sind durch IAM geschützt. Solche Cloud Run-Dienste erfordern eine Clientauthentifizierung, die den vorgesehenen Empfänger einer Anfrage zum Zeitpunkt der Erstellung von Anmeldedaten deklariert (die Zielgruppe).
Das Ziel ist in der Regel die vollständige URL des Zieldienstes, die für Cloud Run-Dienste standardmäßig eine generierte URL ist, die auf run.app endet. In einer multiregionalen Bereitstellung ist es jedoch nicht möglich, dass ein Client im Voraus weiß, an welchen regionalen Dienst eine Anfrage weitergeleitet wird.
Konfigurieren Sie Ihren Dienst für eine multiregionale Bereitstellung so, dass benutzerdefinierte Zielgruppen verwendet werden.
Auf Bereitstellung des Load-Balancers warten
Nachdem Sie die Domain mit der IP-Adresse des Load-Balancers konfiguriert haben, müssen Sie warten, bis die DNS-Einträge übernommen werden. Ebenso müssen Sie warten, bis das verwaltete TLS-Zertifikat für Ihre Domain ausgestellt wurde und bereit ist, HTTPS-Traffic weltweit bereitzustellen.
Es kann bis zu 30 Minuten dauern, bis der Load-Balancer Traffic bereitstellt.
Anschließend können Sie testweise die Website über die URL mit dem Präfix https:// aufrufen.
Status bestätigen
HTTP-zu-HTTPS-Weiterleitung einrichten
Standardmäßig verarbeitet eine Weiterleitungsregel nur ein einzelnes Protokoll, sodass bei Anfragen an Ihre http://-Endpunkte die Meldung „404 Nicht gefunden“ angezeigt wird. Wenn Anfragen an Ihre http://-URLs zum https://-Protokoll weitergeleitet werden sollen, müssen Sie mithilfe der folgenden Anleitung eine zusätzliche URL-Zuordnung und eine Weiterleitungsregel erstellen:
gcloud-CLI
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Weitere Konfigurationsoptionen finden Sie unter Globalen externen Application Load Balancer mit Cloud Run einrichten.
Regionsübergreifendes Failover mit dem Cloud Run-Dienststatus automatisieren
Die Dienstintegrität von Cloud Run minimiert Dienstunterbrechungen und automatisiert regionsübergreifende Failover und Failback. Richten Sie einen multiregionalen Cloud Run-Dienst für Hochverfügbarkeit mit automatischen Failover- und Failback-Funktionen für internen Traffic ein.
Beschränkungen
Für den Cloud Run-Dienststatus gelten die folgenden Einschränkungen:
Regionalen Gesundheitsstatus melden
So aggregieren Sie den Status der regionalen Cloud Run-Dienste und melden dem Load-Balancer einen fehlerfreien oder fehlerhaften Status:
Best Practices
Sie können eine Kombination aus Bereitschaftsprüfungen, Trafficaufteilung und Mindestanzahl von Instanzen verwenden, um sichere, schrittweise Rollouts durchzuführen. So können Sie die Integrität einer neuen Revision in einer einzelnen „Canary“-Region prüfen, bevor Sie sie hochstufen. Dadurch wird sichergestellt, dass der Load Balancer Traffic nur an fehlerfreie regionale Back-Ends sendet.
Empfohlener Einführungsprozess
Sie können eine Dienstüberarbeitung für einen vorhandenen Cloud Run-Dienst bereitstellen, der keine Bereitschaftsprüfung oder keinen Cloud Run-Dienststatus verwendet. Gehen Sie für jede Region einzeln vor, um eine neue Version sicher bereitzustellen:
Systemdiagnosen überwachen
Nachdem Sie die Systemdiagnose für Cloud Run-Dienste eingerichtet haben, wird der Cloud Monitoring-Messwert für die Systemdiagnose von serverlosen NEGs erfasst. Sie können den Status der vorhandenen regionalen Dienste aufrufen. Das folgende Diagramm zeigt, wie diese Komponenten für die Systemdiagnose von Cloud Run-Diensten auf Anfragen an Ihren Dienst reagieren:
Wenn ein Dienst in einer Region fehlerhaft ist, leitet der Load-Balancer den Traffic von der fehlerhaften Region in eine fehlerfreie Region um. Der Traffic wird wiederhergestellt, nachdem die Region wieder fehlerfrei ist.
Authentifizierte Pub/Sub-Push-Abos mit Bereitstellung in mehreren Regionen verwenden
Ein Pub/Sub-Dienst sendet standardmäßig Nachrichten an Push-Endpunkte in derselben Google Cloud Region, in der der Pub/Sub-Dienst die Nachrichten speichert. Eine Behelfslösung für dieses Verhalten finden Sie unter Authentifiziertes Pub/Sub-Push-Abo mit einer multiregionalen Cloud Run-Bereitstellung verwenden.
Manuelles Failover konfigurieren
Wenn Sie manuell konfigurieren möchten, dass der Traffic ein Failover auf eine fehlerfreie Region macht, ändern Sie das URL-Mapping des globalen externen Application Load Balancers.