Traffic aus mehreren Regionen bereitstellen

Um Nutzern weltweit schneller Antworten liefern zu können, müssen Dienste in mehreren Regionen bereitgestellt und die Nutzer zur nächstgelegenen Region weitergeleitet werden.

Allerdings werden Cloud Run-Dienste in einzelnen Regionen bereitgestellt. Um Ihre Nutzer zu unterschiedlichen Regionen Ihres Dienstes weiterzuleiten, müssen Sie ein externes HTTP(S)-Load-Balancing konfigurieren.

In dieser Anleitung erfahren Sie, wie Sie einen externen HTTP(S)-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.

Hinweis

  • Cloud SDK installieren In dieser Anleitung wird das gcloud-Befehlszeilentool verwendet.
  • Es ist eine Domain für Ihre Anwendung erforderlich. Sie können dazu einen Domainnamen von Google Domains anmelden.

Load-Balancer erstellen

Zum Erstellen eines externen Load-Balancers müssen verschiedene Netzwerkressourcen erstellt und miteinander verbunden werden, wie in der folgenden Anleitung gezeigt.

Befehlszeile

  1. Reservieren Sie eine statische IP-Adresse, damit Sie Ihre DNS-Einträge bei der Neuerstellung des Load-Balancers nicht aktualisieren müssen.
    gcloud compute addresses create --global SERVICE_IP
    Ersetzen Sie im obigen Befehl SERVICE_IP durch einen Namen für die IP-Adressressource (z. B. 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.

  2. Erstellen Sie einen Back-End-Dienst.
    gcloud compute backend-services create --global BACKEND_NAME

    Ersetzen Sie im obigen Befehl BACKEND_NAME durch einen Namen, den Sie dem Back-End-Dienst geben möchten (z. B. myservice-backend).

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

  4. Erstellen Sie für Ihre Domain ein verwaltetes TLS-Zertifikat, um HTTPS-Traffic bereitzustellen. Ersetzen Sie example.com durch Ihren Domainnamen.
    gcloud beta 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).

  5. Erstellen Sie einen HTTPS-Ziel-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).

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

    Ersetzen Sie FORWARDING_RULE_NAME durch den Namen der Ressource für die Weiterleitungsregel, die Sie erstellen möchten (z. B. myservice-lb).

In mehreren Regionen bereitstellen

Stellen Sie den Dienst in den verfügbaren Cloud Run-Regionen bereit. Zur Vereinfachung der Verwaltung können Sie für mehrere Regionen denselben Dienstnamen verwenden.

  1. Wählen Sie Regionen aus, in denen Sie den Dienst verfügbar machen möchten.

  2. Stellen Sie Ihren Cloud Run-Dienst in einzelnen Regionen bereit.

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

    Ersetzen Sie die folgenden Variablen:

    • REGION durch eine der Regionen, in denen Sie die Bereitstellung vornehmen möchten.
    • SERVICE_NAME durch den Namen des Dienstes. Durch Verwendung eines einzigen Dienstnamens für mehrere Regionen lassen sich Bereitstellungen in mehreren Regionen leichter im Blick behalten.
    • IMAGE_URL durch einen Verweis auf das Container-Image, z. B. gcr.io/myproject/my-image:latest.
  3. Wiederholen Sie den vorherigen Schritt für jede Region.

Cloud Run-Standorte

Cloud Run ist regional. Die Infrastruktur, in der die Cloud Run-Dienste ausgeführt werden, befindet sich demnach in einer bestimmten Region. Aufgrund der Verwaltung durch Google sind die Anwendungen in allen Zonen innerhalb dieser Region redundant verfügbar.

Bei der Auswahl der Region, in der Ihre Cloud Run-Dienste ausgeführt werden, ist vorrangig, dass die Anforderungen hinsichtlich Latenz, Verfügbarkeit oder Langlebigkeit erfüllt werden. Sie können im Allgemeinen die Region auswählen, die Ihren Nutzern am nächsten liegt, aber Sie sollten den Standort der anderen Google Cloud-Produkte berücksichtigen, die von Ihrem Cloud Run-Dienst verwendet werden. Die gemeinsame Nutzung von Google Cloud-Produkten an mehreren Standorten kann sich auf die Latenz und die Kosten des Dienstes auswirken.

Cloud Run ist in diesen Regionen verfügbar:

Unterliegt Preisstufe 1

Unterliegt Preisstufe 2

  • asia-east2 (Hongkong)
  • asia-northeast3 (Seoul, Südkorea)
  • asia-southeast1 (Singapur)
  • asia-southeast2 (Jakarta)
  • asia-south1 (Mumbai, Indien)
  • asia-south2 (Delhi, Indien)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Warschau, Polen)
  • europe-west2 (London, Vereinigtes Königreich)
  • europe-west3 (Frankfurt, Deutschland)
  • europe-west6 (Zürich, Schweiz) Blattsymbol Niedrigster CO-Bilanz2
  • northamerica-northeast1 (Montreal) Blattsymbol Niedrigster CO-Bilanz2
  • southamerica-east1 (Sao Paulo, Brasilien) Blattsymbol Niedrigste CO2-Bilanz
  • us-west2 (Los Angeles)
  • us-west3 (Las Vegas)
  • us-west4 (Salt Lake City)

Wenn Sie bereits einen Cloud Run-Dienst erstellt haben, können Sie die Region in der Cloud Console im Cloud Run-Dashboard aufrufen.

Regionale Back-Ends 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:

  1. Erstellen Sie eine Netzwerk-Endpunktgruppe für den Cloud Run-Dienst in REGION:

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

    Ersetzen Sie im obigen Befehl 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.
  2. Fügen Sie dem Back-End-Dienst die Netzwerk-Endpunktgruppe hinzu:

    gcloud beta 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.

  3. Wiederholen Sie diese Schritte für jede Region.

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.

  1. Führen Sie den folgenden Befehl aus, um die reservierte IP-Adresse des Load-Balancers zu ermitteln:

      gcloud compute addresses describe --global SERVICE_IP --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.

  2. Aktualisieren Sie die DNS-Einträge Ihrer Domain. Fügen Sie dazu einen A-Eintrag mit dieser IP-Adresse hinzu.

Auf Bereitstellung des Load-Balancers warten

Nachdem Sie die Domain mit der IP-Adresse des Load-Balancers konfiguriert haben, müssen Sie etwas warten, bis die DNS-Einträge übernommen werden. Ebenso dauert es eine gewisse Zeit, 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 prüfen

  1. So prüfen Sie den Status der Weitergabe von DNS-Einträgen mit dem dig-Befehlszeilentool:

    dig A +short example.com

    Die Ausgabe sollte die IP-Adresse enthalten, die Sie in Ihren DNS-Einträgen konfiguriert haben.

  2. Führen Sie folgenden Befehl aus, um den Status der Ausstellung Ihres verwalteten Zertifikats zu prüfen:

    gcloud beta 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 sollte eine Zeile mit status: ACTIVE enthalten.

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:

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

  2. 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 dabei HTTP_PROXY_NAME durch den Namen des HTTP-Ziel-Proxys, den Sie erstellen möchten, z. B. myservice-http.

  3. Erstellen Sie eine Weiterleitungsregel auf Port 80 mit 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 dabei HTTP_FORWARDING_RULE_NAME durch den Namen der neuen Weiterleitungsregel, die Sie erstellen möchten, z. B. myservice-httplb.

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.