Globalen externen HTTP(S)-Load-Balancer (klassisch) mit Cloud Storage-Buckets einrichten

Dieses Dokument beschreibt, wie Sie einen externen HTTP(S)-Load-Balancer erstellen, um Anfragen für statische Inhalte an Cloud Storage-Buckets weiterzuleiten. Nachdem Sie einen Load-Balancer mit den Back-End-Buckets konfiguriert haben, werden mit /love-to-fetch beginnende Anfragen an URL-Pfade an den Cloud us-east1-Cloud-Storage-Bucket gesendet. Alle anderen Anfragen werden an den europe-north1-Cloud Storage-Bucket gesendet, unabhängig von der Region des Nutzers.

Wenn Ihre Back-Ends dynamische Inhalte über HTTP(S) bereitstellen, sollten Sie statt Back-End-Diensten Back-End-Buckets verwenden.


Eine detaillierte Anleitung zu dieser Aufgabe finden Sie direkt in der Console. Klicken Sie dazu einfach auf Anleitung:

Anleitung


Die folgenden Abschnitte führen Sie durch dieselben Schritte wie das Klicken auf Anleitung.

Cloud Storage-Buckets als Back-Ends des Load-Balancers

Ein externer HTTP(S)-Load-Balancer leitet über eine URL-Zuordnung Traffic von angegebenen URL-Pfaden an Ihre Back-Ends weiter.

Im folgenden Diagramm sendet der Load-Balancer Traffic mit dem Pfad /love-to-fetch/ an einen Cloud Storage-Bucket in der Region us-east1. Alle anderen Anfragen werden an einen Cloud Storage-Bucket in der Region europe-north1 gesendet.

Der Load-Balancer sendet Traffic an ein Cloud Storage-Back-End.
Traffic an Cloud Storage verteilen

Cloud Storage verwendet standardmäßig den gleichen Cache wie Cloud CDN. Wenn Sie Cloud CDN für den Back-End-Bucket aktivieren, können Sie Cloud CDN-Steuerelemente für Ihre Inhalte verwenden. Cloud CDN-Steuerelemente umfassen beispielsweise Cache-Modi, signierte URLs und Entwertung. Mit Cloud CDN können Sie auch große Inhalte (> 10 MB) im Cache speichern. Wenn Sie Cloud CDN nicht für Ihren Back-End-Bucket aktivieren, können Sie nur Cache-Control-Ursprungsheader verwenden, um das Caching für kleinere Inhalte zu steuern, wie durch die Cloud Storage-Metadaten festgelegt.

Hinweis

Richten Sie Ihr System so ein, dass die folgenden Voraussetzungen erfüllt sind. Wenn Sie die Dienstprogramme gcloud und gsutil verwenden, können Sie beide entsprechend den Erläuterungen in der Kurzanleitung: gsutil-Tool verwenden installieren.

Standardprojekt festlegen

Console

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch 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.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

  4. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  5. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

gcloud/gsutil

gcloud config set project PROJECT_ID

oder

gsutil config set project PROJECT_ID

Ersetzen Sie PROJECT_ID durch das Projekt, das Sie für diesen Leitfaden verwenden.

Berechtigungen

Um diesem Leitfaden zu folgen, müssen Sie Cloud Storage-Buckets und einen Load-Balancer in einem Projekt erstellen. Sie sollten entweder Inhaber oder Bearbeiter des Projekts sein oder die folgenden IAM-Rollen für Compute Engine haben:

Aufgabe Erforderliche Rolle
Load-Balancer-Komponenten erstellen Netzwerkadministrator
Cloud Storage-Buckets erstellen Storage-Objekt-Administrator

Weitere Informationen finden Sie in folgenden Leitfäden:

SSL-Zertifikatsressource einrichten

Erstellen Sie für einen HTTPS-Load-Balancer eine SSL-Zertifikatsressource, wie in der folgenden Dokumentation beschrieben:

Wir empfehlen die Verwendung eines von Google verwalteten Zertifikats.

In diesem Beispiel wird angenommen, dass Sie bereits eine SSL-Zertifikatsressource mit dem Namen www-ssl-cert haben.

Cloud Storage-Buckets und Inhalte vorbereiten

So bereiten Sie die Cloud Storage-Buckets vor:

  • Erstellen Sie die Buckets.

  • Kopieren Sie Inhalte in die Buckets.

  • Gewähren Sie öffentlichen Zugriff auf die Buckets.

Cloud Storage-Buckets erstellen

In diesem Beispiel erstellen Sie zwei Cloud Storage-Buckets für den Zugriff durch den Load-Balancer. Für Produktionsbereitstellungen empfehlen wir die Auswahl eines multiregionalen Buckets, der Objekte automatisch in mehreren Google Cloud-Regionen repliziert. Dies kann die Verfügbarkeit Ihrer Inhalte verbessern und die Fehlertoleranz in Ihrer gesamten Anwendung verbessern.

Notieren Sie die Namen der von Ihnen erstellten Cloud Storage-Buckets, da sie später verwendet werden. In diesem Leitfaden werden sie als BUCKET_1_NAME und BUCKET_2_NAME bezeichnet.

Console

  1. Wechseln Sie in der Konsole zum Cloud Storage-Browser.

    Zum Cloud Storage Browser

  2. Klicken Sie auf Bucket erstellen.

  3. Geben Sie im Feld Bucket benennen einen global eindeutigen Namen ein, der den Benennungsrichtlinien entspricht.

  4. Klicken Sie auf Speicherort für Daten auswählen.

  5. Legen Sie Standorttyp auf Region fest.

  6. Setzen Sie Standort auf europe-north1. Dies ist BUCKET_1_NAME in diesem Leitfaden.

  7. Klicken Sie auf Erstellen.

  8. Klicken Sie auf Browser, um zum Cloud Storage-Browser zurückzukehren. Folgen Sie dieser Anleitung, um einen zweiten Bucket zu erstellen. Legen Sie dabei Standort auf us-east1 fest. Dies ist BUCKET_2_NAME in diesem Leitfaden.

gcloud/gsutil

gsutil mb -p PROJECT_ID -c standard -l europe-north1 -b on gs://BUCKET_1_NAME
gsutil mb -p PROJECT_ID -c standard -l us-east1 -b on gs://BUCKET_2_NAME

Ersetzen Sie BUCKET_1_NAME und BUCKET_2_NAME durch die Namen der Buckets, die Sie erstellen möchten.

Inhalte in Cloud Storage-Buckets übertragen

Sie können die Einrichtung später testen, indem Sie die folgenden Images aus einem öffentlichen Cloud Storage-Bucket in Ihre eigenen Cloud Storage-Buckets kopieren.

  1. Klicken Sie auf Google Cloud Shell aktivieren.

  2. Führen Sie in Cloud Shell die folgenden Befehle aus und ersetzen Sie die Variablen für die Bucket-Namen durch Ihre Cloud Storage-Bucket-Namen:

    gsutil cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_1_NAME/never-fetch/
    
    gsutil cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET_2_NAME/love-to-fetch/
    
  3. Klicken Sie in der Console auf der Detailseite jedes Buckets auf Aktualisieren, um zu prüfen, ob die Datei erfolgreich kopiert wurde.

Cloud Storage-Buckets öffentlich lesbar machen

Wenn Sie Cloud Storage-Buckets öffentlich lesbar machen, kann jeder im Internet die zugehörigen Objekte auflisten und ansehen sowie die zugehörigen Metadaten (mit Ausnahme von ACLs) aufrufen. Nehmen Sie keine vertraulichen Informationen in Ihre öffentlichen Buckets auf.

Speichern Sie keine öffentlichen Objekte und sensiblen Daten im selben Bucket, um die Wahrscheinlichkeit einer versehentlichen Veröffentlichung vertraulicher Informationen zu verringern. Weitere Informationen finden Sie unter Empfohlene Bucket-Architektur.

Console

Um allen Nutzern Zugriff auf Objekte in Ihren Buckets zu gewähren, wiederholen Sie das folgende Verfahren für jeden Bucket:

  1. Wechseln Sie in der Konsole zum Cloud Storage-Browser.

    Zum Cloud Storage Browser

  2. Klicken Sie auf den Bucket-Namen, gefolgt vom Tab Berechtigungen.

  3. Klicken Sie auf Add.

  4. Geben Sie im Feld Neue Hauptkonten allUsers ein.

  5. Wählen Sie im Feld Rolle auswählen die Option Cloud Storage > Storage-Objekt-Betrachter aus.

  6. Klicken Sie auf Speichern.

  7. Klicken Sie auf Öffentlichen Zugriff erlauben.

gcloud/gsutil

Führen Sie die folgenden Befehle aus, um allen Nutzern Zugriff auf Objekte in Ihren Buckets zu gewähren:

gsutil iam ch allUsers:objectViewer gs://BUCKET_1_NAME
gsutil iam ch allUsers:objectViewer gs://BUCKET_2_NAME

Externe IP-Adresse reservieren

Nachdem Sie Ihre Cloud Storage-Buckets eingerichtet haben, können Sie eine globale statische externe IP-Adresse reservieren, die Ihre Zielgruppe verwendet, um Ihren Load-Balancer zu erreichen.

Dieser Schritt ist optional, wird jedoch empfohlen, da eine statische externe IP-Adresse eine einzelne Adresse bietet, auf die Ihre Domain verweisen soll.

Console

  1. Gehen Sie in der Google Cloud Console auf die Seite Externe IP-Adressen.

    Zu externen IP-Adressen

  2. Klicken Sie auf Statische Adresse reservieren.

  3. Geben Sie im Feld Name den Wert example-ip ein.

  4. Setzen Sie die Netzwerkdienststufe auf Premium.

  5. Setzen Sie die IP-Version auf IPv4.

  6. Legen Sie für Typ Global fest.

  7. Klicken Sie auf Reservieren.

gcloud/gsutil

gcloud compute addresses create example-ip \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

Notieren Sie sich die reservierte IPv4-Adresse:

gcloud compute addresses describe example-ip \
    --format="get(address)" \
    --global

Externen HTTP(S)-Load-Balancer mit Back-End-Buckets erstellen

In dieser Anleitung wird beschrieben, wie Sie einen HTTP- oder einen HTTPS-Load-Balancer erstellen. Zum Erstellen eines HTTPS-Load-Balancers müssen Sie dem Front-End des Load-Balancers eine SSL-Zertifikatsressource hinzufügen. Weitere Informationen finden Sie in der Übersicht zu SSL-Zertifikaten.

Console

Konfiguration starten

  1. Öffnen Sie in der Google Cloud Console die Seite "Load-Balancing".

    Load-Balancing aufrufen

  2. Klicken Sie auf Load-Balancer erstellen.
  3. Klicken Sie in der Karte HTTP(S)-Load-Balancing auf Konfiguration starten.
  4. Wählen Sie unter Internet oder nur intern die Option Vom Internet zu meinen VMs oder serverlosen Diensten aus.
  5. Wählen Sie unter Global oder regional die Option Globaler HTTP(S)-Load-Balancer (klassisch) aus.
  6. Klicken Sie auf Weiter.

Back-End konfigurieren

  1. Geben Sie im Feld Name den Wert http-lb ein.

  2. Klicken Sie auf Back-End-Konfiguration.

  3. Klicken Sie auf das Feld Back-End-Dienste und Back-End-Buckets und dann auf Back-End-Bucket erstellen.

  4. Geben Sie im Feld Name des Back-End-Buckets den Wert cats ein.

  5. Klicken Sie im Feld Cloud Storage-Bucket auf Durchsuchen.

  6. Wählen Sie BUCKET_1_NAME aus und klicken Sie dann auf Auswählen. Wenn Sie den Back-End-Bucket cats zuerst erstellen, wird dieser zum Standard-Bucket, an den alle nicht übereinstimmenden Trafficanfragen weitergeleitet werden. Sie können die Weiterleitungsregeln eines Standard-Back-End-Buckets im Load-Balancer nicht ändern.

  7. Klicken Sie auf Erstellen.

  8. Verwenden Sie denselben Prozess, um einen Back-End-Bucket mit dem Namen dogs zu erstellen, und wählen Sie BUCKET_2_NAME aus.

  9. Klicken Sie auf OK.

Host- und Pfadregeln konfigurieren

Hostregeln und Pfad-Matcher sind Konfigurationskomponenten der URL-Zuordnung eines externen HTTP(S)-Load-Balancers. So richten Sie die Regeln für dieses Beispiel ein:

  1. Klicken Sie auf Host- und Pfadregeln.

  2. Geben Sie für dogs den Wert * im Feld Hosts und /love-to-fetch/* im Feld Pfade ein.

Front-End konfigurieren

  1. Klicken Sie auf Front-End-Konfiguration.

  2. Prüfen Sie, ob die folgenden Optionen mit diesen Werten konfiguriert sind:

    Attribut Wert (Wert eingeben bzw. Option auswählen)
    Protokoll HTTP
    Netzwerkdienststufe Premium
    IP-Version IPv4
    IP-Adresse Beispiel-IP
    Port 80

    Wenn Sie einen HTTPS-Load-Balancer statt eines HTTP-Load-Balancers erstellen möchten, benötigen Sie ein SSL-Zertifikat (gcloud compute ssl-certificates list) und müssen die Felder so ausfüllen:

    Attribut Wert (Wert eingeben bzw. Option auswählen)
    Protokoll HTTP(S)
    Netzwerkdienststufe Premium
    IP-Version IPv4
    IP-Adresse Beispiel-IP
    Port 443
    Wählen Sie ein Zertifikat aus oder erstellen Sie ein neues Zertifikat.
    (Optional) HTTP-zu-HTTPS-Weiterleitung aktivieren Klicken Sie dieses Kästchen an, um Weiterleitungen von Port 80 zu Port 443 zu aktivieren.

    Wenn Sie dieses Kästchen anklicken, wird ein zusätzlicher partieller HTTP-Load-Balancer erstellt, der dieselbe IP-Adresse wie Ihr HTTPS-Load-Balancer verwendet und die HTTP-Anfragen an das HTTPS-Front-End des Load-Balancers weiterleitet.

    Dieses Kästchen kann nur angeklickt werden, wenn das HTTPS-Protokoll ausgewählt ist und eine reservierte IP-Adresse verwendet wird.

  3. Klicken Sie auf Fertig.

Konfiguration prüfen

  1. Klicken Sie auf Prüfen und abschließen.

  2. Prüfen Sie das Front-End, Host- und Pfadregeln sowie die Back-End-Buckets.

  3. Klicken Sie auf Erstellen und warten Sie, bis der Load-Balancer erstellt ist.

  4. Klicken Sie auf den Namen des Load-Balancers (http-lb).

  5. Notieren Sie die IP-Adresse des Load-Balancers für die nächste Aufgabe. In diesem Leitfaden wird sie als IP_ADDRESS bezeichnet.

gcloud/gsutil

Back-End konfigurieren

gcloud compute backend-buckets create dogs \
    --gcs-bucket-name=BUCKET_1_NAME
gcloud compute backend-buckets create cats \
    --gcs-bucket-name=BUCKET_2_NAME

URL-Zuordnung konfigurieren

gcloud compute url-maps create http-lb \
    --default-backend-bucket=cats
gcloud compute url-maps add-path-matcher http-lb \
    --path-matcher-name=path-matcher-2 \
    --new-hosts=* \
    --backend-bucket-path-rules="/love-to-fetch/*=dogs" \
    --default-backend-bucket=cats

Zielproxy konfigurieren

gcloud compute target-http-proxies create http-lb-proxy \
    --url-map=http-lb

Weiterleitungsregel konfigurieren

gcloud compute forwarding-rules create http-lb-forwarding-rule \
    --load-balancing-scheme=EXTERNAL \
    --network-tier=PREMIUM \
    --address=example-ip \
    --global \
    --target-http-proxy=http-lb-proxy \
    --ports=80

Traffic an den Load-Balancer senden

Einige Minuten nach der Konfiguration des Load-Balancers können Sie Traffic an die IP-Adresse des Load-Balancers senden.

Console

Rufen Sie in einem Webbrowser die folgenden Adressen auf, um den Load-Balancer zu testen. Ersetzen Sie dabei IP_ADDRESS durch die IP-Adresse des Load-Balancers:

  • http://IP_ADDRESS/love-to-fetch/two-dogs.jpg

  • http://IP_ADDRESS/never-fetch/three-cats.jpg

Wenn Sie einen HTTP-Load-Balancer eingerichtet haben, achten Sie darauf, dass der Browser nicht automatisch zu HTTPS weiterleitet.

gcloud/gsutil

Verwenden Sie den Befehl curl, um die Antwort von den folgenden URLs zu testen. Ersetzen Sie IP_ADDRESS durch die IPv4-Adresse des Load-Balancers.

curl http://IP_ADDRESS/love-to-fetch/two-dogs.jpg
curl http://IP_ADDRESS/never-fetch/three-cats.jpg

Einschränkungen