Dieses Dokument zeigt zwei Beispielkonfigurationen zum Einrichten eines regionalen externen Application Load Balancers in einer Umgebung mit freigegebene VPC mit Cloud Storage-Buckets:
- Im ersten Beispiel werden alle Load-Balancer-Komponenten und Back-Ends im Dienstprojekt erstellt.
- Im zweiten Beispiel werden die Frontend-Komponenten und die URL-Zuordnung des Load-Balancers in einem Dienstprojekt erstellt, während der Backend-Bucket und die Cloud Storage-Buckets des Load-Balancers in einem anderen Dienstprojekt erstellt werden.
Beide Beispiele erfordern dieselbe Erstkonfiguration, um erforderliche Rollen zu erteilen und eine freigegebene VPC einzurichten, bevor Sie Load-Balancer erstellen können.
Neben den oben genannten Beispielkonfigurationen in diesem Dokument können Sie auch eine Bereitstellung mit freigegebene VPC einrichten, bei der das Frontend und die URL-Zuordnung des Load-Balancers im Hostprojekt und die Backend-Buckets zusammen mit den Cloud Storage-Buckets in einem Dienstprojekt erstellt werden. Weitere Informationen zu anderen gültigen Architekturen für freigegebene VPC finden Sie unter Architekturen für freigegebene VPCs.
Wenn Sie kein freigegebene VPC-Netzwerk verwenden möchten, lesen Sie die Informationen unter Regionalen externen Application Load Balancer mit Cloud Storage-Buckets einrichten.
Hinweise
Richten Sie Ihr System so ein, dass die folgenden Voraussetzungen erfüllt sind.
Google Cloud -Projekte erstellen
Erstellen Sie Google Cloud Projekte für ein Host- und zwei Dienstprojekte.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Einrichten eines regionalen externen Application Load Balancers in einer freigegebene VPC-Umgebung mit Cloud Storage-Buckets benötigen:
-
So richten Sie eine freigegebene VPC ein:
Administrator für freigegebene Compute-VPC (
roles/compute.xpnAdmin) für das Hostprojekt -
So gewähren Sie einem Administrator des Dienstprojekts Zugriff auf das freigegebene VPC-Netzwerk:
Compute Network User (
roles/compute.networkUser) für das Hostprojekt -
So erstellen Sie Cloud Storage-Buckets:
Storage-Objekt-Administrator (
roles/storage.objectAdmin) für das Dienstprojekt -
So erstellen Sie die Load-Balancing-Ressourcen:
Compute Network Admin (
roles/compute.networkAdmin) im Dienstprojekt -
So erstellen Sie Compute Engine-Instanzen:
Compute-Instanzadministrator (
roles/compute.instanceAdmin.v1) für das Dienstprojekt -
So erstellen und ändern Sie Compute Engine-SSL-Zertifikate:
Compute Security Admin (
roles/compute.securityAdmin) im Dienstprojekt -
So erstellen und ändern Sie SSL-Zertifikate im Zertifikatmanager:
Zertifikatmanager-Inhaber (
roles/certificatemanager.owner) im Dienstprojekt -
So verweisen Sie auf Backend-Buckets in anderen Dienstprojekten:
Nutzer von Compute-Load-Balancer-Diensten (
roles/compute.loadBalancerServiceUser) für das Dienstprojekt
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Freigegebene VPC-Umgebung einrichten
Führen Sie die folgenden Schritte im Hostprojekt aus, um eine Umgebung mit freigegebene VPC einzurichten:
- Konfigurieren Sie ein VPC-Netzwerk im benutzerdefinierten Modus.
- Nur-Proxy-Subnetz konfigurieren
- Freigegebene VPC im Hostprojekt einrichten.
Die Schritte in diesem Abschnitt müssen nicht jedes Mal ausgeführt werden, wenn Sie einen neuen Load-Balancer erstellen möchten. Sie müssen jedoch sicherstellen, dass Sie Zugriff auf die hier beschriebenen Ressourcen haben, bevor Sie mit dem Erstellen des Load-Balancers fortfahren.
In diesem Beispiel werden das folgende VPC-Netzwerk, die folgende Region und das folgende Nur-Proxy-Subnetz verwendet:
Netzwerk. Das Netzwerk ist ein VPC-Netzwerk im benutzerdefinierten Modus mit dem Namen
lb-network.Subnetz für Envoy-Proxys. Ein Subnetz mit dem Namen
proxy-only-subnet-usin der Regionus-east1verwendet10.129.0.0/23für seinen primären IP-Bereich.
VPC-Netzwerk im benutzerdefinierten Modus konfigurieren
Console
Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
Klicken Sie auf VPC-Netzwerk erstellen.
Geben Sie für Name
lb-networkein.Klicken Sie auf Erstellen.
gcloud
Erstellen Sie mit dem
gcloud compute networks create-Befehl ein benutzerdefiniertes VPC-Netzwerk mit dem Namenlb-network.gcloud compute networks create lb-network \ --subnet-mode=custom \ --project=HOST_PROJECT_IDErsetzen Sie
HOST_PROJECT_IDdurch dieGoogle Cloud Projekt-ID, die dem Projekt zugewiesen ist, das in einer Umgebung mit freigegebene VPC als Hostprojekt aktiviert ist.
Nur-Proxy-Subnetz konfigurieren
Ein Nur-Proxy-Subnetz stellt eine Reihe von IP-Adressen bereit, die Google Cloud zum Ausführen von Envoy-Proxys in Ihrem Namen verwendet. Die Proxys beenden Verbindungen vom Client und erstellen neue Verbindungen zu den Back-Ends.
Dieses Nur-Proxy-Subnetz wird von allen Envoy-basierten regionalen Load-Balancern in derselben Region des VPC-Netzwerk verwendet. Pro Zweck, Region und Netzwerk kann jeweils nur ein Nur-Proxy-Subnetz aktiv sein.
Console
Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
Klicken Sie auf den Namen des VPC-Netzwerk, das Sie erstellt haben.
Klicken Sie auf dem Tab Subnetz auf Subnetz hinzufügen.
Geben Sie die folgenden Informationen ein:
- Name:
proxy-only-subnet-us - Region:
us-east1 - Zweck: Regional verwalteter Proxy
- IP-Adressbereich:
10.129.0.0/23
- Name:
Klicken Sie auf Hinzufügen.
gcloud
Erstellen Sie mit dem Befehl
gcloud compute networks subnets createein Nur-Proxy-Subnetz in der Regionus-east1.gcloud compute networks subnets create proxy-only-subnet-us \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=us-east1 \ --network=lb-network \ --range=10.129.0.0/23 \ --project=HOST_PROJECT_IDErsetzen Sie
HOST_PROJECT_IDdurch dieGoogle Cloud Projekt-ID, die dem Hostprojekt zugewiesen ist.
Freigegebene VPC im Hostprojekt einrichten
Sie können ein freigegebenes VPC-Hostprojekt aktivieren und Dienstprojekte an das Hostprojekt anhängen, damit die Dienstprojekte das freigegebene VPC-Netzwerk verwenden können. Informationen zum Einrichten einer freigegebene VPC im Hostprojekt finden Sie auf den folgenden Seiten:
Nachdem Sie die vorherigen Schritte ausgeführt haben, können Sie eine der folgenden Konfigurationen ausführen:
- Load-Balancer im Dienstprojekt konfigurieren
- Load-Balancer mit einer projektübergreifenden Konfiguration konfigurieren
Load-Balancer im Dienstprojekt konfigurieren
In diesem Beispiel wird ein regionaler externer Application Load Balancer erstellt, bei dem alle Load-Balancing-Komponenten (Weiterleitungsregel, Zielproxy, URL-Zuordnung und Backend-Bucket) und Cloud Storage-Buckets im Dienstprojekt erstellt werden.
Die Netzwerkressourcen des regionalen externen Application Load Balancers wie das Nur-Proxy-Subnetz werden im Hostprojekt erstellt.
In diesem Abschnitt erfahren Sie, wie Sie den Load-Balancer und die Back-Ends einrichten.
In den Beispielkonfigurationen auf dieser Seite wird explizit eine reservierte IP-Adresse für die Weiterleitungsregel des regionalen externen Application Load Balancers konfiguriert, statt die Zuweisung einer sitzungsspezifischen IP-Adresse zuzulassen. Als Best Practice empfehlen wir, IP-Adressen für Weiterleitungsregeln zu reservieren.
Cloud Storage-Buckets konfigurieren
So konfigurieren Sie die Cloud Storage-Buckets:
- Cloud Storage-Buckets erstellen
- Inhalte in die Cloud Storage-Buckets kopieren
- Cloud Storage-Buckets öffentlich zugänglich machen
Cloud Storage-Buckets erstellen
In diesem Beispiel erstellen Sie zwei Cloud Storage-Buckets in der Region us-east1.
Console
- Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.
Klicken Sie auf Erstellen.
Geben Sie im Bereich Einstieg einen global eindeutigen Namen ein, der den Benennungsrichtlinien entspricht.
Klicken Sie auf Speicherort für Daten auswählen.
Legen Sie Standorttyp auf Region fest.
Wählen Sie in der Liste der Regionen us-east1 aus.
Klicken Sie auf Erstellen.
Klicken Sie auf Buckets, um zur Seite "Cloud Storage-Bucket" zurückzukehren. Folgen Sie dieser Anleitung, um einen zweiten Bucket in der Region us-east1 zu erstellen.
gcloud
Erstellen Sie den ersten Bucket in der Region
us-east1mit dem Befehlgcloud storage buckets create.gcloud storage buckets create gs://BUCKET1_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access \ --project=SERVICE_PROJECT_IDErstellen Sie den zweiten Bucket ebenfalls in der Region
us-east1mit dem Befehlgcloud storage buckets create.gcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access \ --project=SERVICE_PROJECT_ID
Ersetzen Sie Folgendes:
BUCKET1_NAMEundBUCKET2_NAME: die Namen Ihrer Cloud Storage-BucketsSERVICE_PROJECT_ID: die Google Cloud Projekt-ID, die dem Dienstprojekt zugewiesen ist
Inhalte in die Cloud Storage-Buckets kopieren
Kopieren Sie zum Füllen der Cloud Storage-Buckets eine Grafikdatei aus einem öffentlichen Cloud Storage-Bucket in Ihre eigenen Cloud Storage-Buckets.
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
Ersetzen Sie BUCKET1_NAME und BUCKET2_NAME durch die Namen Ihrer Cloud Storage-Buckets.
Cloud Storage-Buckets öffentlich zugänglich machen
Wenn Sie alle Objekte in einem Bucket für alle Nutzer im öffentlichen Internet zugänglich machen möchten, weisen Sie dem Prinzipal allUsers die Rolle „Storage Object Viewer“ (roles/storage.objectViewer) zu.
Console
Um allen Nutzern Zugriff auf Objekte in Ihren Buckets zu gewähren, wiederholen Sie das folgende Verfahren für jeden Bucket:
- Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.
Klicken Sie in der Liste der Buckets auf den Namen des Buckets, den Sie veröffentlichen möchten.
Wählen Sie den Tab Berechtigungen aus.
Klicken Sie im Bereich Berechtigungen auf die Schaltfläche Zugriff erlauben. Das Dialogfeld Zugriff gewähren wird angezeigt.
Geben Sie im Feld Neue Hauptkonten
allUsersein.Geben Sie im Feld Rolle auswählen
Storage Object Viewerin das Filterfeld ein und wählen Sie Storage-Objekt-Betrachter aus den gefilterten Ergebnissen aus.Klicken Sie auf Speichern.
Klicken Sie auf Öffentlichen Zugriff erlauben.
gcloud
Führen Sie den Befehl buckets add-iam-policy-binding aus, um allen Nutzern Zugriff auf Objekte in Ihren Buckets zu gewähren.
gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME --member=allUsers --role=roles/storage.objectViewer
Ersetzen Sie BUCKET1_NAME und BUCKET2_NAME durch die Namen Ihrer Cloud Storage-Buckets.
IP-Adresse des Load-Balancers reservieren
Reservieren Sie eine statische externe IP-Adresse für die Weiterleitungsregel des Load-Balancers.
Console
Rufen Sie in der Google Cloud Console die Seite Statische Adresse reservieren auf.
Geben Sie unter Name einen Namen für die neue Adresse ein.
Setzen Sie die IP-Version auf IPv4.
Wählen Sie unter Typ die Option Regional aus.
Wählen Sie für Region die Option us-east1 aus.
Übernehmen Sie für die Option Verknüpft mit die Einstellung Keine. Nachdem Sie den Load-Balancer erstellt haben, wird diese IP-Adresse an die Weiterleitungsregel des Load-Balancers angehängt.
Klicken Sie auf Reservieren, um die IP-Adresse zu reservieren.
gcloud
Zum Reservieren einer statischen externen IP-Adresse mit
gcloud computeverwenden Sie den Befehlcompute addresses create.gcloud compute addresses create ADDRESS_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDErsetzen Sie Folgendes:
ADDRESS_NAME: der Name, den Sie dieser IP-Adresse zuweisen möchten.REGIONist die Region, in der Sie diese Adresse reservieren möchten. Diese Region sollte mit der Region des Load Balancers übereinstimmen.SERVICE_PROJECT_ID: die Google CloudProjekt-ID, die dem Dienstprojekt zugewiesen ist.
Verwenden Sie den Befehl
compute addresses describe, um das Ergebnis anzeigen zu lassen:gcloud compute addresses describe ADDRESS_NAME
Ersetzen Sie
ADDRESS_NAMEdurch den Namen, den Sie der IP-Adresse zugewiesen haben.Die zurückgegebene IP-Adresse wird in den folgenden Abschnitten als
RESERVED_IP_ADDRESSbezeichnet.
SSL-Zertifikatsressource einrichten
Für einen regionalen externen Application Load Balancer, der HTTPS als Anfrage- und Antwortprotokoll verwendet, können Sie eine SSL-Zertifikatsressource entweder mit einem Compute Engine-SSL-Zertifikat oder einem Certificate Manager-Zertifikat erstellen.
Erstellen Sie für dieses Beispiel eine SSL-Zertifikatsressource mit dem Zertifikatmanager, wie in einem der folgenden Dokumente beschrieben:
- Regionales, von Google verwaltetes Zertifikat mit DNS-Autorisierung bereitstellen
- Regionales, von Google verwaltetes Zertifikat mit CA Service bereitstellen
- Regionales selbstverwaltetes Zertifikat bereitstellen
Nachdem Sie das Zertifikat erstellt haben, können Sie es an den HTTPS-Zielproxy anhängen.
Wir empfehlen die Verwendung eines von Google verwalteten Zertifikats.
Load Balancer mit Back-End-Buckets konfigurieren
In diesem Abschnitt erfahren Sie, wie Sie die folgenden Ressourcen für einen regionalen externen Application Load Balancer erstellen:
- Zwei Back-End-Buckets. Die Backend-Buckets dienen als Wrapper für die Cloud Storage-Buckets, die Sie zuvor erstellt haben.
- URL-Zuordnung
- Zielproxy
- Eine Weiterleitungsregel mit einer regionalen IP-Adresse. Die Weiterleitungsregel hat eine externe IP-Adresse.
In diesem Beispiel können Sie HTTP oder HTTPS als Anfrage- und Antwortprotokoll zwischen dem Client und dem Load-Balancer verwenden. Zum Erstellen eines HTTPS-Load-Balancers müssen Sie dem Frontend des Load-Balancers eine SSL-Zertifikatsressource hinzufügen.
So erstellen Sie die oben genannten Load-Balancing-Komponenten mit der gcloud CLI:
Erstellen Sie zwei Backend-Buckets mit dem Befehl
gcloud compute backend-buckets create. Die Back-End-Buckets haben das Load-Balancing-SchemaEXTERNAL_MANAGED.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1 \ --project=SERVICE_PROJECT_IDgcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1 \ --project=SERVICE_PROJECT_IDErsetzen Sie Folgendes:
BUCKET1_NAMEundBUCKET2_NAME: die Namen der Cloud Storage-BucketsSERVICE_PROJECT_ID: die Google CloudProjekt-ID, die dem Dienstprojekt zugewiesen ist
Erstellen Sie eine URL-Zuordnung, um eingehende Anfragen mit dem
gcloud compute url-maps create-Befehl an den Backend-Bucket weiterzuleiten.gcloud beta compute url-maps create URL_MAP_NAME \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1 \ --project=SERVICE_PROJECT_IDErsetzen Sie Folgendes:
URL_MAP_NAME: der Name des URL-MappingsSERVICE_PROJECT_ID: die Google CloudProjekt-ID, die dem Dienstprojekt zugewiesen ist
Konfigurieren Sie die Host- und Pfadregeln der URL-Zuordnung mit dem Befehl
gcloud compute url-maps add-path-matcher.In diesem Beispiel ist der Standard-Backend-Bucket
backend-bucket-cats, der alle darin enthaltenen Pfade verarbeitet. Anfragen, die aufhttp://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpgausgerichtet sind, verwenden jedoch dasbackend-bucket-dogs-Back-End. Wenn der Ordner/love-to-fetch/beispielsweise auch in Ihrem Standard-Backend (backend-bucket-cats) vorhanden ist, priorisiert der Load-Balancer das Backendbackend-bucket-dogs, da es eine bestimmte Pfadregel für/love-to-fetch/*gibt.gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \ --path-matcher-name=path-matcher-pets \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1 \ --project=SERVICE_PROJECT_IDErsetzen Sie Folgendes:
URL_MAP_NAME: der Name des URL-MappingsSERVICE_PROJECT_ID: die Google CloudProjekt-ID, die dem Dienstprojekt zugewiesen ist
Erstellen Sie einen Zielproxy mit dem Befehl
gcloud compute target-http-proxies create.Erstellen Sie für HTTP-Traffic einen Ziel-HTTP-Proxy, um Anfragen an die URL-Zuordnung weiterzuleiten:
gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDErsetzen Sie Folgendes:
TARGET_HTTP_PROXY_NAME: der Name des HTTP-Ziel-ProxysURL_MAP_NAME: der Name des URL-MappingsSERVICE_PROJECT_ID: die Google CloudProjekt-ID, die dem Dienstprojekt zugewiesen ist
Erstellen Sie für HTTPS-Traffic einen Ziel-HTTPS-Proxy, um Anfragen an die URL-Zuordnung weiterzuleiten. Der Proxy ist der Teil des Load-Balancers, der das SSL-Zertifikat für das HTTPS-Load-Balancing besitzt. Nachdem Sie das Zertifikat erstellt haben, können Sie es an den HTTPS-Zielproxy anhängen.
Führen Sie den folgenden Befehl aus, um ein Certificate Manager-Zertifikat anzuhängen:
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --url-map=URL_MAP_NAME \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDErsetzen Sie Folgendes:
TARGET_HTTPS_PROXY_NAME: Der Name des HTTPS-Ziel-Proxys.URL_MAP_NAME: der Name des URL-MappingsCERTIFICATE_NAME: Der Name des Certificate Manager-SSL-Zertifikats.SERVICE_PROJECT_ID: die Google CloudProjekt-ID, die dem Dienstprojekt zugewiesen ist
Erstellen Sie mit dem Befehl
gcloud compute forwarding-rules createeine Weiterleitungsregel mit einer IP-Adresse in der Regionus-east1.Erstellen Sie für HTTP-Traffic eine regionale Weiterleitungsregel, um eingehende Anfragen an den HTTP-Zielproxy weiterzuleiten:
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --address=RESERVED_IP_ADDRESS \ --ports=80 \ --region=us-east1 \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --target-http-proxy-region=us-east1 \ --project=SERVICE_PROJECT_IDErsetzen Sie Folgendes:
FORWARDING_RULE_NAME: der Name der WeiterleitungsregelHOST_PROJECT_ID: die Google CloudProjekt-ID, die dem Hostprojekt zugewiesen istRESERVED_IP_ADDRESSist die reservierte IP-Adresse.TARGET_HTTP_PROXY_NAME: der Name des HTTP-Ziel-ProxysSERVICE_PROJECT_ID: die Google CloudProjekt-ID, die dem Dienstprojekt zugewiesen ist
Erstellen Sie für HTTPS-Traffic eine regionale Weiterleitungsregel, um eingehende Anfragen an den HTTPS-Zielproxy weiterzuleiten:
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --region=us-east1 \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --target-https-proxy-region=us-east1 \ --project=SERVICE_PROJECT_IDErsetzen Sie Folgendes:
FORWARDING_RULE_NAME: der Name der WeiterleitungsregelHOST_PROJECT_ID: die Google CloudProjekt-ID, die dem Hostprojekt zugewiesen istRESERVED_IP_ADDRESSist die reservierte IP-Adresse.TARGET_HTTPS_PROXY_NAME: Der Name des HTTPS-Ziel-Proxys.SERVICE_PROJECT_ID: die Google CloudProjekt-ID, die dem Dienstprojekt zugewiesen ist
HTTP-Anfrage an den Load Balancer senden
Da der Load-Balancing-Dienst nun ausgeführt wird, können Sie Traffic an die Weiterleitungsregel des Load-Balancers senden.
Rufen Sie die IP-Adresse der Weiterleitungsregel des Load-Balancers ab, die sich in der Region
us-east1befindet.gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDErsetzen Sie Folgendes:
FORWARDING_RULE_NAME: der Name der WeiterleitungsregelSERVICE_PROJECT_ID: die Google CloudProjekt-ID, die dem Dienstprojekt zugewiesen ist
Kopieren Sie die zurückgegebene IP-Adresse, um sie im nächsten Schritt als
FORWARDING_RULE_IP_ADDRESSzu verwenden.Stellen Sie mit curl eine HTTP-Anfrage an die virtuelle IP-Adresse (VIP) der Weiterleitungsregel.
curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
Ersetzen Sie
FORWARDING_RULE_IP_ADDRESSdurch die IP-Adresse der Weiterleitungsregel des Load-Balancers.
Load-Balancer mit einer projektübergreifenden Konfiguration konfigurieren
Das vorherige Beispiel auf dieser Seite zeigt, wie Sie die Bereitstellung einer freigegebenen VPC einrichten, bei der alle Load-Balancer-Komponenten und ihre Back-Ends im Dienstprojekt erstellt werden.
Mit regionalen externen Application Load Balancern können Sie auch Bereitstellungen freigegebene VPC-Netzwerke konfigurieren, bei denen eine URL-Zuordnung in einem Host- oder Dienstprojekt auf Backend-Buckets in mehreren Dienstprojekten in Umgebungen mit freigegebene VPC verweisen kann.
Sie können die Schritte in diesem Abschnitt als Referenz verwenden, um alle hier aufgeführten unterstützten Kombinationen zu konfigurieren:
- Weiterleitungsregel, Ziel-Proxy und URL-Zuordnung im Hostprojekt und Backend-Bucket in einem Dienstprojekt
- Weiterleitungsregel, Ziel-Proxy und URL-Zuordnung in einem Dienstprojekt und Backend-Bucket in einem anderen Dienstprojekt
In diesem Abschnitt wird die letztere Konfiguration als Beispiel beschrieben.
Einrichtung: Übersicht
In diesem Beispiel wird ein Load-Balancer mit seinem Frontend und Backend in zwei verschiedenen Dienstprojekten konfiguriert.
Falls noch nicht geschehen, müssen Sie die erforderlichen Rollen konfigurieren und eine freigegebene VPC-Umgebung einrichten. Eine Anleitung finden Sie in den folgenden Abschnitten am Anfang dieser Seite:
Cloud Storage-Buckets und Backend-Buckets in Dienstprojekt B konfigurieren
Alle Schritte in diesem Abschnitt müssen in Dienstprojekt B ausgeführt werden.
So konfigurieren Sie Cloud Storage-Buckets und Backend-Buckets:
- Cloud Storage-Buckets erstellen
- Inhalte in die Cloud Storage-Buckets kopieren
- Cloud Storage-Buckets öffentlich zugänglich machen
- Back-End-Buckets erstellen und auf die Cloud Storage-Buckets verweisen
Cloud Storage-Buckets erstellen
Console
- Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.
Klicken Sie auf Erstellen.
Geben Sie im Bereich Einstieg einen global eindeutigen Namen ein, der den Benennungsrichtlinien entspricht.
Klicken Sie auf Speicherort für Daten auswählen.
Legen Sie Standorttyp auf Region fest.
Wählen Sie in der Liste der Regionen us-east1 aus.
Klicken Sie auf Erstellen.
Klicken Sie auf Buckets, um zur Seite "Cloud Storage-Bucket" zurückzukehren. Folgen Sie dieser Anleitung, um einen zweiten Bucket in der Region us-east1 zu erstellen.
gcloud
Erstellen Sie den ersten Bucket in der Region
us-east1mit dem Befehlgcloud storage buckets create.gcloud storage buckets create gs://BUCKET1_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access \ --project=SERVICE_PROJECT_B_IDErstellen Sie den zweiten Bucket ebenfalls in der Region
us-east1mit dem Befehlgcloud storage buckets create.gcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access \ --project=SERVICE_PROJECT_B_ID
Ersetzen Sie Folgendes:
BUCKET1_NAMEundBUCKET2_NAME: der Name Ihres Cloud Storage-BucketSERVICE_PROJECT_B_ID: Die Google Cloud Projekt-ID, die dem Dienstprojekt B zugewiesen ist.
Inhalte in die Cloud Storage-Buckets kopieren
Kopieren Sie zum Füllen der Cloud Storage-Buckets eine Grafikdatei aus einem öffentlichen Cloud Storage-Bucket in Ihre eigenen Cloud Storage-Buckets.
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
Ersetzen Sie BUCKET1_NAME und BUCKET2_NAME durch die Namen Ihrer Cloud Storage-Buckets.
Cloud Storage-Buckets öffentlich zugänglich machen
Wenn Sie alle Objekte in einem Bucket für alle Nutzer im öffentlichen Internet zugänglich machen möchten, weisen Sie dem Prinzipal allUsers die Rolle „Storage Object Viewer“ (roles/storage.objectViewer) zu.
Console
Um allen Nutzern Zugriff auf Objekte in Ihren Buckets zu gewähren, wiederholen Sie das folgende Verfahren für jeden Bucket:
- Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.
Klicken Sie in der Liste der Buckets auf den Namen des Buckets, den Sie veröffentlichen möchten.
Wählen Sie den Tab Berechtigungen aus.
Klicken Sie im Bereich Berechtigungen auf die Schaltfläche Zugriff erlauben. Das Dialogfeld Zugriff gewähren wird angezeigt.
Geben Sie im Feld Neue Hauptkonten
allUsersein.Geben Sie im Feld Rolle auswählen
Storage Object Viewerin das Filterfeld ein und wählen Sie Storage-Objekt-Betrachter aus den gefilterten Ergebnissen aus.Klicken Sie auf Speichern.
Klicken Sie auf Öffentlichen Zugriff erlauben.
gcloud
Führen Sie den Befehl buckets add-iam-policy-binding aus, um allen Nutzern Zugriff auf Objekte in Ihren Buckets zu gewähren.
gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME --member=allUsers --role=roles/storage.objectViewer
Ersetzen Sie BUCKET1_NAME und BUCKET2_NAME durch die Namen Ihrer Cloud Storage-Buckets.
Back-End-Buckets erstellen und auf die Cloud Storage-Buckets verweisen
So erstellen Sie die Backend-Buckets:
Erstellen Sie mit dem Befehl
gcloud compute backend-buckets createzwei Backend-Buckets. Die Back-End-Buckets haben das Load-Balancing-SchemaEXTERNAL_MANAGED.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1 \ --project=SERVICE_PROJECT_B_IDgcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1 \ --project=SERVICE_PROJECT_B_IDErsetzen Sie Folgendes:
BUCKET1_NAMEundBUCKET2_NAME: die Namen der Cloud Storage-BucketsSERVICE_PROJECT_ID: die Google CloudProjekt-ID, die dem Dienstprojekt zugewiesen ist
Load-Balancer-Frontend-Komponenten in Dienstprojekt A konfigurieren
Alle Schritte in diesem Abschnitt müssen im Dienstprojekt A ausgeführt werden.
In Dienstprojekt A müssen Sie die folgenden Frontend-Load-Balancing-Komponenten erstellen:
- Eine SSL-Zertifikatsressource, die dem Zielproxy zugeordnet ist. Sie können das SSL-Zertifikat mit den Schritten im vorherigen Abschnitt erstellen.
- Eine IP-Adresse für die Weiterleitungsregel des Load-Balancers. Sie können eine IP-Adresse erstellen, indem Sie den Schritten im vorherigen Abschnitt folgen.
- Eine URL-Zuordnung, die auf die Backend-Buckets in Dienstprojekt B verweist
- Ein Ziel-Proxy
- Eine Weiterleitungsregel mit einer regionalen IP-Adresse. Die Weiterleitungsregel hat eine externe IP-Adresse.
So erstellen Sie die URL-Zuordnung, den Zielproxy und die Weiterleitungsregel:
Erstellen Sie eine URL-Zuordnung, um eingehende Anfragen mit dem
gcloud beta compute url-maps create-Befehl an den Backend-Bucket weiterzuleiten.gcloud beta compute url-maps create URL_MAP_NAME \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDErsetzen Sie Folgendes:
URL_MAP_NAME: der Name des URL-MappingsSERVICE_PROJECT_A_ID: die Google CloudProjekt-ID, die dem Dienstprojekt A zugewiesen ist
Konfigurieren Sie die Host- und Pfadregeln der URL-Zuordnung mit dem Befehl
gcloud beta compute url-maps add-path-matcher.In diesem Beispiel ist der Standard-Backend-Bucket
backend-bucket-cats, der alle darin enthaltenen Pfade verarbeitet. Anfragen, die aufhttp://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpgausgerichtet sind, verwenden jedoch dasbackend-bucket-dogs-Back-End. Wenn der Ordner/love-to-fetch/beispielsweise auch in Ihrem Standard-Backend (backend-bucket-cats) vorhanden ist, priorisiert der Load-Balancer das Backendbackend-bucket-dogs, da es eine bestimmte Pfadregel für/love-to-fetch/*gibt.gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \ --path-matcher-name=path-matcher-pets \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-dogs" \ --default-backend-bucket=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-cats \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDErsetzen Sie Folgendes:
URL_MAP_NAME: der Name des URL-MappingsSERVICE_PROJECT_A_ID: die Google CloudProjekt-ID, die dem Dienstprojekt A zugewiesen ist
Erstellen Sie einen Zielproxy mit dem Befehl
gcloud compute target-http-proxies create.Erstellen Sie für HTTP-Traffic einen Ziel-HTTP-Proxy, um Anfragen an die URL-Zuordnung weiterzuleiten:
gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDErsetzen Sie Folgendes:
TARGET_HTTP_PROXY_NAME: der Name des HTTP-Ziel-ProxysURL_MAP_NAME: der Name des URL-MappingsSERVICE_PROJECT_A_ID: die Google CloudProjekt-ID, die dem Dienstprojekt A zugewiesen ist
Erstellen Sie für HTTPS-Traffic einen Ziel-HTTPS-Proxy, um Anfragen an die URL-Zuordnung weiterzuleiten. Der Proxy ist der Teil des Load-Balancers, der das SSL-Zertifikat für das HTTPS-Load-Balancing besitzt. Nachdem Sie das Zertifikat erstellt haben, können Sie es an den HTTPS-Zielproxy anhängen.
Führen Sie den folgenden Befehl aus, um ein Certificate Manager-Zertifikat anzuhängen:
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --url-map=lb-map \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDErsetzen Sie Folgendes:
TARGET_HTTPS_PROXY_NAME: Der Name des HTTPS-Ziel-Proxys.URL_MAP_NAME: der Name des URL-MappingsCERTIFICATE_NAME: Der Name des Certificate Manager-SSL-Zertifikats.SERVICE_PROJECT_A_ID: die Google CloudProjekt-ID, die dem Dienstprojekt A zugewiesen ist
Erstellen Sie mit dem Befehl
gcloud compute forwarding-rules createeine Weiterleitungsregel mit einer IP-Adresse in der Regionasia-east1.Erstellen Sie für HTTP-Traffic eine regionale Weiterleitungsregel, um eingehende Anfragen an den HTTP-Zielproxy weiterzuleiten:
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --address=RESERVED_IP_ADDRESS \ --ports=80 \ --region=us-east1 \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --target-http-proxy-region=us-east1 \ --project=SERVICE_PROJECT_A_IDErsetzen Sie Folgendes:
FORWARDING_RULE_NAME: der Name der WeiterleitungsregelHOST_PROJECT_ID: die Google CloudProjekt-ID, die dem Hostprojekt zugewiesen istRESERVED_IP_ADDRESSist die reservierte IP-Adresse.TARGET_HTTP_PROXY_NAME: der Name des HTTP-Ziel-ProxysSERVICE_PROJECT_A_ID: die Google CloudProjekt-ID, die dem Dienstprojekt A zugewiesen ist
Erstellen Sie für HTTPS-Traffic eine regionale Weiterleitungsregel, um eingehende Anfragen an den HTTPS-Zielproxy weiterzuleiten:
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --region=us-east1 \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --target-https-proxy-region=us-east1 \ --project=SERVICE_PROJECT_A_IDErsetzen Sie Folgendes:
FORWARDING_RULE_NAME: der Name der WeiterleitungsregelHOST_PROJECT_ID: die Google CloudProjekt-ID, die dem Hostprojekt zugewiesen istRESERVED_IP_ADDRESSist die reservierte IP-Adresse.TARGET_HTTPS_PROXY_NAME: Der Name des HTTPS-Ziel-Proxys.SERVICE_PROJECT_A_ID: die Google CloudProjekt-ID, die dem Dienstprojekt A zugewiesen ist
Dem Compute Load Balancer-Administrator die Berechtigung erteilen, den Backend-Bucket im Dienstprojekt zu verwenden
Wenn Load-Balancer auf Backend-Buckets in anderen Dienstprojekten verweisen sollen, muss der Load-Balancer-Administrator die Berechtigung compute.backendBuckets.use haben. Um diese Berechtigung zu erteilen, können Sie die vordefinierte IAM-Rolle „Nutzer von Compute-Load-Balancer-Diensten“ (roles/compute.loadBalancerServiceUser) verwenden. Diese Rolle muss vom Dienstprojektadministrator gewährt werden und kann auf Dienstprojektebene oder auf Ebene einzelner Backend-Buckets zugewiesen werden.
In diesem Beispiel muss ein Dienstprojektadministrator aus dem Dienstprojekt B genau einen der folgenden Befehle ausführen, um einem Load-Balancer-Administrator aus Dienstprojekt A die Berechtigung compute.backendBuckets.use zu erteilen. Dies kann entweder auf Projektebene (für alle Backend-Buckets im Projekt) oder pro Backend-Bucket erfolgen.
Console
Berechtigungen auf Projektebene
Gehen Sie folgendermaßen vor, um allen Backend-Buckets in Ihrem Projekt Berechtigungen zu erteilen.
Sie benötigen die Berechtigungen compute.regionBackendBuckets.setIamPolicy und resourcemanager.projects.setIamPolicy, um diesen Schritt auszuführen.
Rufen Sie in der Google Cloud Console die Seite IAM auf.
Wählen Sie Ihr Projekt aus.
Klicken Sie auf Zugriff gewähren.
Geben Sie im Feld Neue Hauptkonten die E-Mail-Adresse oder eine andere Kennung des Hauptkontos ein.
Klicken Sie im Bereich Rollen zuweisen auf Rollen hinzufügen.
Geben Sie im Dialogfeld Rollen auswählen im Feld Nach Rollen suchen
Compute Load Balancer Services Userein.Klicken Sie das Kästchen Nutzer von Compute-Load-Balancer-Diensten an.
Klicken Sie auf Übernehmen.
Optional: Fügen Sie der Rolle eine Bedingung hinzu.
Klicken Sie auf Speichern.
Berechtigungen auf Ressourcenebene für einzelne Backend-Buckets
Gehen Sie folgendermaßen vor, um einzelnen Backend-Buckets in Ihrem Projekt Berechtigungen zu erteilen.
Sie benötigen die Berechtigung compute.regionBackendBuckets.setIamPolicy, um diesen Schritt auszuführen.
Rufen Sie in der Google Cloud Console die Seite Back-Ends auf.
Wählen Sie in der Liste der Back-Ends den Back-End-Bucket aus, für den Sie Zugriff gewähren möchten, und klicken Sie auf Berechtigungen.
Klicken Sie auf Hauptkonto hinzufügen.
Geben Sie im Feld Neue Hauptkonten die E-Mail-Adresse oder eine andere Kennung des Hauptkontos ein.
Wählen Sie in der Liste Rolle auswählen die Option Nutzer von Compute-Load-Balancer-Diensten aus.
Klicken Sie auf Speichern.
gcloud
Berechtigungen auf Projektebene
Gehen Sie folgendermaßen vor, um allen Backend-Buckets in Ihrem Projekt Berechtigungen zu erteilen.
Sie benötigen die Berechtigungen compute.regionBackendBuckets.setIamPolicy und resourcemanager.projects.setIamPolicy, um diesen Schritt auszuführen.
gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
--member="user:LOAD_BALANCER_ADMIN" \
--role="roles/compute.loadBalancerServiceUser"
Ersetzen Sie Folgendes:
SERVICE_PROJECT_B_ID: die Google CloudProjekt-ID, die dem Dienstprojekt B zugewiesen istLOAD_BALANCER_ADMIN: das Mitglied, für das die Bindung eingefügt werden soll
Berechtigungen auf Ressourcenebene für einzelne Backend-Buckets
Auf Backend-Bucket-Ebene können Dienstprojektadministratoren einen der folgenden Befehle verwenden, um die Rolle „Nutzer von Compute-Load-Balancer-Diensten“ (roles/compute.loadBalancerServiceUser) zuzuweisen:
gcloud projects add-iam-policy-binding-Befehlszeilentoolgcloud compute backend-buckets add-iam-policy-binding-Befehlszeilentool
Verwenden Sie den Befehl gcloud projects add-iam-policy-binding, um die Rolle „Nutzer von Compute-Load-Balancer-Diensten“ zuzuweisen.
Sie benötigen die Berechtigung compute.regionBackendBuckets.setIamPolicy, um diesen Schritt auszuführen.
gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
--member="user:LOAD_BALANCER_ADMIN" \
--role="roles/compute.loadBalancerServiceUser" \
--condition='expression=resource.name=="projects/SERVICE_PROJECT_B_ID/regions/REGION/backendBuckets/BACKEND_BUCKET_NAME",title=Shared VPC condition'
SERVICE_PROJECT_B_ID: die Google Cloud-Projekt-ID, die dem Dienstprojekt B zugewiesen istLOAD_BALANCER_ADMIN: das Mitglied, für das die Bindung eingefügt werden sollREGION: die Google Cloud Region, in der sich der Backend-Bucket befindetBACKEND_BUCKET_NAME: der Name des Backend-Buckets
gcloud compute backend-buckets add-iam-policy-binding-Befehl zuweisen.
gcloud compute backend-buckets add-iam-policy-binding BACKEND_BUCKET_NAME \
--member="user:LOAD_BALANCER_ADMIN" \
--role="roles/compute.loadBalancerServiceUser" \
--project=SERVICE_PROJECT_B_ID \
--region=REGION
HTTP-Anfrage an den Load Balancer senden
Da der Load-Balancing-Dienst nun ausgeführt wird, können Sie Traffic an die Weiterleitungsregel des Load-Balancers senden.
Rufen Sie die IP-Adresse der Weiterleitungsregel des Load-Balancers ab, die sich in der Region
us-east1befindet.gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDErsetzen Sie Folgendes:
FORWARDING_RULE_NAME: der Name der WeiterleitungsregelSERVICE_PROJECT_ID: die Google CloudProjekt-ID, die dem Dienstprojekt zugewiesen ist
Kopieren Sie die zurückgegebene IP-Adresse, um sie im nächsten Schritt als
FORWARDING_RULE_IP_ADDRESSzu verwenden.Stellen Sie mit curl eine HTTP-Anfrage an die VIP der Weiterleitungsregel.
curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
Ersetzen Sie
FORWARDING_RULE_IP_ADDRESSdurch die IP-Adresse der Weiterleitungsregel des Load-Balancers.
Nächste Schritte
- Übersicht über externen Application Load Balancer
- Nur-Proxy-Subnetze für Envoy-basierte Load-Balancer
- Zertifikate verwalten
- Load-Balancing-Einrichtung bereinigen