Load-Balancer mit Back-End-Buckets einrichten

Back-End-Buckets ermöglichen die Verwendung von Google Cloud Storage-Buckets mit HTTP(S)-Load-Balancing.

Cloud Storage-Bucket als Load-Balancer-Back-End verwenden

Ein externer HTTP(S)-Load-Balancer leitet über eine URL-Zuordnung Traffic von angegebenen URLs entweder an einen Back-End-Dienst oder einen Back-End-Bucket weiter. Ein häufiger Anwendungsfall ist:

  • Senden von Anfragen für dynamische Inhalte wie Daten an einen Back-End-Dienst.
  • Senden von Anfragen für statische Inhalte wie Images an einen Back-End-Bucket.

Im folgenden Diagramm sendet der Load-Balancer Traffic mit dem Pfad /static/eu/ an einen Cloud Storage-Bucket in der Region europe-north. Alle anderen Anfragen werden an einen Cloud Storage-Bucket in der Region us-east gesendet.

Traffic an Cloud Storage verteilen (zum Vergrößern klicken)
Traffic an Cloud Storage verteilen (zum Vergrößern klicken)

In diesem Dokument erfahren Sie, 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 Anfragen an URL-Pfade, die mit /static/eu beginnen, an den Cloud Storage-Bucket europe-north gesendet. Alle anderen Anfragen gehen an den Cloud Storage-Bucket us-east.

Vorbereitung

Richten Sie Ihr System so ein, dass die Voraussetzungen erfüllt sind.

Standardprojekt festlegen

  1. Wenn Sie die Dienstprogramme gcloud oder gsutil verwenden, können Sie beide mithilfe der Erläuterungen in der Kurzanleitung: gsutil-Tool verwenden installieren.
  2. Legen Sie ein Standardprojekt fest.

    Console

    a. Rufen Sie die Startseite in der Google Cloud Console auf.
    Zur Google Cloud-Startseite.

    b. Wählen Sie rechts neben dem Titel "Google Cloud" ein Projekt aus dem Drop-down-Menü aus.

    gcloud oder gsutil

     gcloud config set project [PROJECT_ID]
    

    oder

     gsutil config set project [PROJECT_ID]
    
    • [PROJECT_ID] – das für diese Anleitung verwendete Projekt

Berechtigungen

Um dieser Anleitung 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:

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

Wenn Sie bereits einen Cloud Storage-Bucket haben, können Sie mit dem nächsten Schritt fortfahren.

Wenn Sie einen Bucket erstellen, der als Back-End für ein HTTP(S)-Load-Balancing verwendet werden soll, empfehlen wir, dass Sie einen multiregionalen Bucket auswählen, 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.

Console

  1. Öffnen Sie in der Cloud Console den Cloud Storage-Browser:
    Zum Cloud Storage-Browser
  2. Klicken Sie auf Bucket erstellen.
  3. Geben Sie Werte für die folgenden Felder an und übernehmen Sie für alle anderen die Standardwerte:

    Attribut Wert (Wert eingeben bzw. Option auswählen)
    Name Geben Sie für jeden Bucket einen global eindeutigen Namen ein. Wenn der von Ihnen eingegebene Name nicht eindeutig ist, werden Sie über eine Meldung aufgefordert, einen anderen Namen zu verwenden.
    Standorttyp Wählen Sie für dieses Beispiel Region aus. Für Produktionsbereitstellungen empfehlen wir multiregionale Buckets.
    Standort Wählen Sie für einen Bucket us-east1 aus.
    Wählen Sie für den anderen Bucket europe-north1 aus.
    Standard-Storage-Klasse Standard
    Zugriffsteuerung Einheitlich
  4. Klicken Sie auf Erstellen.

  5. Notieren Sie die Namen der neu erstellten Cloud Storage-Buckets für den nächsten Schritt, bei dem diese als BUCKET_1_NAME und BUCKET_2_NAME bezeichnet werden.

gsutil

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

Grafikdateien in Ihre Cloud Storage-Buckets kopieren

Kopieren Sie zum Testen der Einrichtung Grafikdateien aus einem öffentlichen Cloud Storage-Bucket in Ihre eigenen Cloud Storage-Buckets.

  1. Führen Sie in Cloud Shell den folgenden Befehl 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/static/us/
    
    gsutil cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET_2_NAME/static/eu/
    
  2. Klicken Sie in der Cloud Console auf Bucket aktualisieren, um zu prüfen, ob die Grafikdatei kopiert wurde.

Cloud Storage-Buckets veröffentlichen

Machen Sie die Cloud Storage-Buckets öffentlich lesbar. Mit dieser Einstellung kann jeder im Internet Ihre Objekte und ihre Metadaten aufrufen. ACLs sind davon ausgenommen. Jeder im Internet kann außerdem die Objekte in Ihren Buckets auflisten. 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

Gewähren Sie allen Nutzern die Berechtigung zum Aufrufen von Objekten im Bucket. Wiederholen Sie diesen Vorgang für jeden Bucket.

  1. Öffnen Sie in der Cloud Console den Cloud Storage-Browser:
    Zum Cloud Storage-Browser
  2. Rufen Sie den Bucket auf und klicken Sie auf den Tab Berechtigungen.
  3. Wählen Sie Mitglieder hinzufügen aus.
  4. Geben Sie unter Neue Mitglieder allUsers ein.
  5. Wählen Sie als Rolle Storage > Storage-Objekt-Betrachter aus.
  6. Klicken Sie auf Speichern.

gsutil

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

Externe IP-Adresse reservieren

Nachdem die Buckets nun ausgeführt werden, richten Sie eine globale statische externe IP-Adresse ein, über die Ihre Kunden den Load-Balancer erreichen können.

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. Rufen Sie in der Google Cloud Console die Seite "Externe IP-Adressen" auf.
    Zur Seite "Externe IP-Adressen"
  2. Klicken Sie auf Statische Adresse reservieren, um eine IPv4-Adresse zu reservieren.
  3. Weisen Sie als Name example-ip zu.
  4. Legen Sie für die Netzwerkstufe Premium fest.
  5. Setzen Sie die IP-Version auf IPv4.
  6. Legen Sie für Typ Global fest.
  7. Klicken Sie auf Reservieren.
  8. Prüfen Sie, dass der Typ auf Global festgelegt ist.
  9. Klicken Sie auf Reservieren.

gcloud

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

HTTP-Load-Balancer mit Back-End-Buckets erstellen

Wenn Sie einen HTTPS-Load-Balancer erstellen möchten, 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

  1. Öffnen Sie in der Google Cloud Console die Seite "Load-Balancing".
    Zur Seite "Load-Balancing"
  2. Klicken Sie unter HTTP(S)-Load-Balancing auf Konfiguration starten.
  3. Wählen Sie Vom Internet zu meinen VMs aus.
  4. Legen Sie als Name http-lb fest.

Back-End konfigurieren

  1. Klicken Sie auf Back-End-Konfiguration.
  2. Klicken Sie unter Back-End-Dienste und Back-End-Buckets auf Back-End-Dienste und Back-End-Buckets erstellen oder auswählen, dann auf Back-End-Buckets und schließlich auf Back-End-Bucket erstellen.
  3. Legen Sie als Name cat-backend-bucket fest.
  4. Klicken Sie unter Cloud Storage-Bucket auf Durchsuchen.
  5. Wählen Sie Ihren BUCKET_1_NAME aus und klicken Sie auf Auswählen.
  6. Klicken Sie auf Erstellen.

Wiederholen Sie diesen Schritt, um dog-backend-bucket zu erstellen, und wechseln Sie zu BUCKET_2_NAME.

Hostregeln und Pfad-Matcher konfigurieren

Hostregeln und Pfad-Matcher sind Konfigurationskomponenten der URL-Zuordnung eines externen HTTP(S)-Load-Balancers.

  1. Klicken Sie auf Host- und Pfadregeln.
  2. Bei cat-backend-bucket können Sie die Standardhosts und -pfade nicht ändern. Das bedeutet, dass alle nicht übereinstimmenden Anfragen an cat-backend-bucket gesendet werden.
  3. Geben Sie bei dog-backend-bucket den Wert * im Feld Hosts ein.
  4. Geben Sie bei dog-backend-bucket den Wert /static/eu/* im Feld Pfade ein.

    Hosts Pfade Back-End
    Alle nicht zugeordneten (Standard) Alle nicht zugeordneten URLs (Standard) cat-backend-bucket
    * /static/eu/* dog-backend-bucket

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 für die Felder folgende Werte festlegen:

    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.
  3. Klicken Sie auf Fertig.

Konfiguration prüfen

  1. Klicken Sie auf Prüfen und abschließen.
  2. Prüfen Sie die Back-End-Buckets, Host- und Pfadregeln und das Front-End.
  3. Klicken Sie auf Erstellen.
  4. Warten Sie, bis der Load-Balancer erstellt ist.
  5. Klicken Sie auf den Namen des Load-Balancers (http-lb).
  6. Notieren Sie die IP-Adresse des Load-Balancers für die nächste Aufgabe. Sie wird als IP_ADDRESS bezeichnet.

gcloud

Back-End konfigurieren

gcloud compute backend-buckets create cat-backend-bucket \
    --gcs-bucket-name=BUCKET_1_NAME
gcloud compute backend-buckets create dog-backend-bucket \
    --gcs-bucket-name=BUCKET_2_NAME

URL-Zuordnung konfigurieren

gcloud compute url-maps create http-lb \
    --default-backend-bucket=cat-backend-bucket
gcloud compute url-maps add-path-matcher http-lb \
    --path-matcher-name=path-matcher-2 \
    --new-hosts=* \
    --backend-bucket-path-rules="/static/eu/*=dog-backend-bucket" \
    --default-backend-bucket=cat-backend-bucket

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 \
    --address=example-ip \
    --global \
    --target-http-proxy=http-lb-proxy \
    --ports=80

Traffic an den Back-End-Bucket senden

Nachdem Sie nun den Load-Balancer konfiguriert haben, können Sie damit beginnen, Traffic an die IP-Adresse des Load-Balancers zu senden.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite "Load-Balancing".
    Zur Seite "Load-Balancing"
  2. Klicken Sie auf http-lb, um den soeben erstellten Load-Balancer zu maximieren.
  3. Prüfen Sie im Abschnitt Back-End, ob die Back-End-Buckets fehlerfrei sind. Neben Ihren Back-End-Buckets sollte ein grünes Häkchen angezeigt werden. Wenn Sie etwas anderes sehen, versuchen Sie zuerst, die Seite neu zu laden. Es kann einige Minuten dauern, bis die Cloud Console anzeigt, dass die Back-Ends fehlerfrei sind.
  4. Wenn die Cloud Console anzeigt, dass die Back-End-Buckets fehlerfrei sind, können Sie den Load-Balancer mit einem Webbrowser testen. Rufen Sie dazu die Seiten https://IP_ADDRESS/static/eu/two-dogs.jpg und https://IP_ADDRESS/static/us/three-cats.jpg auf, wobei IP_ADDRESS die IP-Adresse des Load-Balancers ist. Ihr Browser sollte Seiten mit Inhalten rendern, die die Grafikdateien enthalten.

    • http://IP_ADDRESS/static/eu/two-dogs.jpg
    • http://IP_ADDRESS/static/us/three-cats.jpg

gcloud

Testen Sie die Antwort von der URL mit dem Befehl curl. Ersetzen Sie IP_ADDRESS durch die IPv4-Adresse des Load-Balancers:

curl http://IP_ADDRESS/static/eu/two-dogs.jpg
curl http://IP_ADDRESS/static/us/three-cats.jpg

Beschränkungen

  • Back-End-Buckets werden nur von externen HTTP(S)-Load-Balancern unterstützt.
  • Back-End-Buckets werden in Verbindung mit Identity-Aware Proxy nicht unterstützt.

Weitere Informationen