Back-End-Buckets ermöglichen die Verwendung von Google Cloud Storage-Buckets mit HTTP(S)-Load-Balancing.
Cloud Storage-Bucket als Lastenausgleichs-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 /love-to-fetch/
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.
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 /love-to-fetch
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
- Wenn Sie die Dienstprogramme
gcloud
odergsutil
verwenden, können Sie beide mithilfe der Erläuterungen in der Kurzanleitung: gsutil-Tool verwenden installieren. 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
- Öffnen Sie in der Cloud Console den Cloud Storage-Browser:
Zum Cloud Storage-Browser - Klicken Sie auf Bucket erstellen.
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 Klicken Sie auf Erstellen.
Notieren Sie die Namen der neu erstellten Cloud Storage-Buckets für den nächsten Schritt, bei dem diese als
BUCKET_1_NAME
undBUCKET_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.
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/never-fetch/
gsutil cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET_2_NAME/love-to-fetch/
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.
- Öffnen Sie in der Cloud Console den Cloud Storage-Browser:
Zum Cloud Storage-Browser - Rufen Sie den Bucket auf und klicken Sie auf den Tab Berechtigungen.
- Wählen Sie Mitglieder hinzufügen aus.
- Geben Sie unter Neue Mitglieder
allUsers
ein. - Wählen Sie als Rolle Storage > Storage-Objekt-Betrachter aus.
- 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
- Rufen Sie in der Google Cloud Console die Seite "Externe IP-Adressen" auf.
Zur Seite "Externe IP-Adressen" - Klicken Sie auf Statische Adresse reservieren, um eine IPv4-Adresse zu reservieren.
- Weisen Sie als Name
example-ip
zu. - Legen Sie für die Netzwerkstufe Premium fest.
- Setzen Sie die IP-Version auf IPv4.
- Legen Sie für Typ Global fest.
- Klicken Sie auf Reservieren.
- Prüfen Sie, dass der Typ auf Global festgelegt ist.
- 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
- Öffnen Sie in der Google Cloud Console die Seite „Load-Balancing”.
Zur Seite "Load-Balancing" - Klicken Sie unter HTTP(S)-Load-Balancing auf Konfiguration starten.
- Wählen Sie Vom Internet zu meinen VMs aus.
- Legen Sie als Name
http-lb
fest.
Back-End konfigurieren
- Klicken Sie auf Back-End-Konfiguration.
- 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.
- Legen Sie als Name
cats
fest. - Klicken Sie unter Cloud Storage-Bucket auf Durchsuchen.
- Wählen Sie Ihren
BUCKET_1_NAME
aus und klicken Sie auf Auswählen. - Klicken Sie auf Erstellen.
Wiederholen Sie diesen Schritt, um dogs
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.
- Klicken Sie auf Host- und Pfadregeln.
- Bei
cats
können Sie die Standardhosts und -pfade nicht ändern. Das bedeutet, dass alle nicht übereinstimmenden Anfragen ancats
gesendet werden. - Geben Sie bei
dogs
den Wert*
im Feld Hosts ein. Geben Sie bei
dogs
den Wert/love-to-fetch/*
im Feld Pfade ein.Hosts Pfade Back-End Alle nicht zugeordneten (Standard) Alle nicht zugeordneten URLs (Standard) cats * /love-to-fetch/* dogs
Front-End konfigurieren
- Klicken Sie auf Front-End-Konfiguration.
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. Klicken Sie auf Fertig.
Konfiguration prüfen
- Klicken Sie auf Prüfen und abschließen.
- Prüfen Sie die Back-End-Buckets, Host- und Pfadregeln und das Front-End.
- Klicken Sie auf Erstellen.
- Warten Sie, bis der Load-Balancer erstellt ist.
- Klicken Sie auf den Namen des Load-Balancers (http-lb).
- 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 cats \ --gcs-bucket-name=BUCKET_1_NAME
gcloud compute backend-buckets create dogs \ --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 \ --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
- Öffnen Sie in der Google Cloud Console die Seite „Load-Balancing”.
Zur Seite "Load-Balancing" - Klicken Sie auf
http-lb
, um den soeben erstellten Load-Balancer zu maximieren. - 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.
Sobald in der Cloud Console angezeigt wird, dass die Back-End-Buckets fehlerfrei sind, können Sie den Load-Balancer mit einem Webbrowser testen. Rufen Sie dafür https://
IP_ADDRESS
/love-to-fetch/two-dogs.jpg und https://IP_ADDRESS
/never-fetch/three-cats.jpg auf, wobeiIP_ADDRESS
die IP-Adresse des Load-Balancers ist. Ihr Browser sollte Seiten mit Inhalten rendern, die die Grafikdateien enthalten.- http://
IP_ADDRESS
/love-to-fetch/two-dogs.jpg - http://
IP_ADDRESS
/never-fetch/three-cats.jpg
- http://
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/love-to-fetch/two-dogs.jpg
curl http://IP_ADDRESS/never-fetch/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.
Nächste Schritte
- Multiregionales, inhaltsbasiertes Load-Balancing einrichten
- Cloud CDN mit einem Back-End-Bucket einrichten