In diesem Dokument erfahren Sie, wie Sie einenregional internal Application Load Balancer erstellen, um Anfragen für statische Inhalte an Cloud Storage-Buckets weiterzuleiten.
Hinweis
Richten Sie Ihr System so ein, dass die folgenden Voraussetzungen erfüllt sind.
Google Cloud CLI installieren
Einige der Anweisungen in dieser Anleitung können nur mit der gcloud CLI ausgeführt werden. Informationen zur Installation finden Sie unter Google Cloud CLI installieren.
Befehle für das Load-Balancing finden Sie im Dokument Referenzen zur API und zur gcloud CLI.
Erforderliche Rollen
Wenn Sie das Projekt erstellt haben, wird Ihnen die Rolle „Inhaber“ (roles/owner) zugewiesen. Standardmäßig enthält die Rolle „Inhaber“ (roles/owner) oder die Rolle „Bearbeiter“ (roles/editor) die Berechtigungen, die für die Schritte in diesem Dokument erforderlich sind.
Wenn Sie nicht der Project Creator sind, müssen dem entsprechenden Hauptkonto die erforderlichen Berechtigungen für das Projekt erteilt werden. Ein Hauptkonto kann beispielsweise ein Google-Konto (für Endnutzer) oder ein Dienstkonto sein.
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen von Cloud Storage-Buckets und Netzwerkressourcen benötigen:
-
Netzwerke, Subnetze und Load-Balancer-Komponenten erstellen:
Compute-Netzwerkadministrator (
roles/compute.networkAdmin) -
Firewallregeln hinzufügen und entfernen:
Compute Security Admin (
roles/compute.securityAdmin) -
Cloud Storage-Buckets erstellen:
Storage-Objekt-Administrator (
roles/storage.objectAdmin)
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.
Weitere Informationen zu Rollen und Berechtigungen für Cloud Load Balancing finden Sie unter Rollen und Berechtigungen. Weitere Informationen zum Definieren von IAM-Richtlinien mit bedingten Berechtigungen finden Sie unter IAM Conditions für Weiterleitungsregeln.
SSL-Zertifikatsressource einrichten
Erstellen Sie für einen regional internal Application Load Balancer , der HTTPS als Anfrage- und Antwortprotokoll verwendet, eine SSL-Zertifikatsressource mit Certificate Manager, wie in einem der folgenden Dokumente beschrieben:
- Regionales, von Google verwaltetes Zertifikat bereitstellen, das von Ihrer CA Service-Instanz ausgestellt wurde
- Regionales, von Google verwaltetes Zertifikat mit DNS-Autorisierung bereitstellen
- Regionales selbstverwaltetes Zertifikat bereitstellen
Wir empfehlen die Verwendung eines von Google verwalteten Zertifikats.
Beschränkungen
Die folgenden Einschränkungen gelten für Cloud Storage-Buckets, die als Backends für eine regional internal Application Load Balancerdienen:
Der Zugriff auf private Buckets wird nicht unterstützt. Der Backend-Bucket muss also über das Internet öffentlich zugänglich sein.
Signierte URLs werden nicht unterstützt.
Die Cloud CDN-Integration ist nicht verfügbar, wenn Sie Back-End-Buckets für einregional internal Application Load Balancererstellen.
Wenn Sie über ein regional internal Application Load Balancer auf Back-End-Buckets zugreifen, wird nur die HTTP-Methode
GETunterstützt. Sie können Inhalte aus dem Bucket herunterladen, aber das Hochladen von Inhalten in den Bucket über dieregional internal Application Load Balancer ist nicht möglich.Bei einem regional internal Application Load Balancerwerden Cloud Storage-Buckets nur in der Region unterstützt, in der der Load Balancer konfiguriert ist. Biregionale oder multiregionale Buckets werden nicht unterstützt.
Einrichtung: Übersicht
Sie können eine regional internal Application Load Balancer in einer Region konfigurieren, wie im folgenden Architekturdiagramm dargestellt:
Wie im Architekturdiagramm dargestellt, wird in diesem Beispiel einregional internal Application Load Balancer in einem VPC-Netzwerk (Virtual Private Cloud) mit zwei Backend-Buckets erstellt, wobei jeder Backend-Bucket auf einen Cloud Storage-Bucket verweist. Die Cloud Storage-Buckets befinden sich in der Region us-east1 und Sie können die Last des Traffics zwischen den einzelnen Buckets ausgleichen.
Netzwerk und Subnetze konfigurieren
Konfigurieren Sie im VPC-Netzwerk ein Subnetz in der Region us-east1, in der die Weiterleitungsregel Ihrer Load Balancer konfiguriert werden soll.
Konfigurieren Sie außerdem ein Nur-Proxy-Subnetz in der Region us-east1, in der Sie den Load Balancer konfigurieren möchten.
In diesem Beispiel werden das folgende VPC-Netzwerk, die folgende Region und die folgenden Subnetze verwendet:
Netzwerk. Das Netzwerk ist ein VPC-Netzwerk im benutzerdefinierten Modus mit dem Namen
lb-network.Subnetz für den Load-Balancer: Ein Subnetz mit dem Namen
subnet-usin der Regionus-east1verwendet10.1.2.0/24für seinen primären IP-Bereich.Subnetz für den Envoy-Proxy. Ein Subnetz mit dem Namen
proxy-only-subnet-usin der Regionus-east1, das10.129.0.0/23für seinen primären IP-Bereich verwendet.
Subnetze für die Weiterleitungsregel des Load-Balancers konfigurieren
Erstellen Sie ein Subnetz in derselben Region, in der die Weiterleitungsregel Ihrer Load-Balancer konfiguriert werden soll.
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.Wählen Sie im Abschnitt Subnetze als Modus für die Subnetzerstellung Benutzerdefiniert aus.
Geben Sie im Abschnitt Neues Subnetz die folgenden Informationen ein:
- Name:
subnet-us - Wählen Sie eine Region aus:
us-east1 - IP-Adressbereich:
10.1.2.0/24 - Klicken Sie auf Fertig.
- Name:
Klicken Sie auf Erstellen.
gcloud
Erstellen Sie mit dem Befehl
gcloud compute networks createein benutzerdefiniertes VPC-Netzwerk mit dem Namenlb-network.gcloud compute networks create lb-network --subnet-mode=custom
Erstellen Sie mit dem Befehl
gcloud compute networks subnets createein Subnetz im VPC-Netzwerklb-networkin der Regionus-east1.gcloud compute networks subnets create subnet-us \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-east1
Nur-Proxy-Subnetze 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-Netzwerks verwendet. Pro Zweck, Region und Netzwerk kann jeweils nur ein Nur-Proxy-Subnetz aktiv sein.
In diesem Beispiel erstellen wir ein Nur-Proxy-Subnetz in der Region us-east1.
Console
Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
Klicken Sie auf den Namen des von Ihnen erstellten VPC-Netzwerks.
Klicken Sie auf dem Tab Subnetz auf Subnetz hinzufügen.
Geben Sie die folgenden Informationen ein:
- Geben Sie für Name
proxy-only-subnet-usein. - Geben Sie bei Region den Wert
us-east1ein. - Wählen Sie als Zweck die Option Regional Managed Proxy aus.
- Geben Sie
10.129.0.0/23als IP-Adressbereich ein.
- Geben Sie für 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
Firewallregel konfigurieren
In diesem Beispiel wird eine Firewallregel für eingehenden Traffic, fw-allow-ssh, verwendet, die SSH-Zugriff auf Port 22 für die Client-VM ermöglicht.
Console
Rufen Sie in der Google Cloud Console die Seite Firewallrichtlinien auf.
Klicken Sie auf Firewallregel erstellen, um die Regel zu erstellen, die eingehende SSH-Verbindungen auf der Client-VM zulässt:
Geben Sie auf der Seite Firewallregel erstellen die folgenden Informationen ein:
- Name:
fw-allow-ssh - Netzwerk:
lb-network - Trafficrichtung: Eingehend
- Aktion bei Übereinstimmung: Zulassen
- Ziele: Angegebene Ziel-Tags
- Zieltags:
allow-ssh - Quellfilter: IPv4-Bereiche.
- IPv4-Quellbereiche:
0.0.0.0/0 - Protokolle und Ports:
- Wählen Sie Angegebene Protokolle und Ports aus.
- Klicken Sie das Kästchen TCP an und geben Sie
22als Portnummer ein.
- Name:
Klicken Sie auf Erstellen.
gcloud
Erstellen Sie die Firewallregel
fw-allow-ssh, um SSH-Verbindungen zu VMs mit dem Netzwerk-Tagallow-sshzu ermöglichen. Wenn Sie--source-rangesweglassen,Google Cloud bezieht die Regel auf jede Quelle.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Cloud Storage-Buckets konfigurieren
So konfigurieren Sie die Cloud Storage-Buckets:
- Erstellen Sie die Buckets.
- Kopieren Sie Inhalte in die Buckets.
- Machen Sie die Buckets öffentlich lesbar.
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-Buckets zurückzukehren. Folgen Sie der Anleitung oben, um einen zweiten Bucket in derselben Region, us-east1, zu erstellen.
gcloud
Erstellen Sie die Buckets 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-accessgcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-accessErsetzen Sie
BUCKET1_NAMEundBUCKET2_NAMEdurch die Namen Ihrer Cloud Storage-Buckets.
Grafikdateien in Ihre Cloud Storage-Buckets kopieren
Wenn Sie die Einrichtung testen möchten, kopieren Sie 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/
Cloud Storage-Buckets öffentlich lesbar machen
Wenn Sie alle Objekte in einem Bucket für alle Nutzer im öffentlichen Internet lesbar 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.
Setzen Sie in der Liste der Buckets ein Häkchen neben jedem Bucket, den Sie veröffentlichen möchten.
Klicken Sie auf die Schaltfläche Berechtigungen. Das Dialogfeld Berechtigungen wird angezeigt.
Klicken Sie im Dialogfeld Berechtigungen auf die Schaltfläche Hauptkonto hinzufügen. 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.objectViewergcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME \
--member=allUsers \
--role=roles/storage.objectViewerStatische interne IP-Adresse reservieren
Reservieren Sie eine statische interne IPv4-Adresse für die Weiterleitungsregel des Load-Balancers. Weitere Informationen finden Sie unter Statische interne IP-Adresse reservieren.
Console
Rufen Sie in der Google Cloud Console die Seite Statische interne IP-Adresse reservieren auf.
Geben Sie im Feld Name einen Namen für die neue Adresse ein.
Wählen Sie in der Liste IP-Version die Option IPv4 aus.
Wählen Sie in der Liste Netzwerk die Option lb-network aus.
Wählen Sie in der Liste Subnetzwerk die Option subnet-us aus.
Wählen Sie für Region die Option us-east1 aus.
Wählen Sie in der Liste Statische IP-Adresse die Option Automatisch zuweisen aus. 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
Verwenden Sie den Befehl
gcloud compute addresses create, um eine statische externe IP-Adresse zu reservieren.gcloud compute addresses create ADDRESS_NAME \ --region=us-east1 \ --subnet=subnet-usErsetzen Sie
ADDRESS_NAMEdurch den Namen der neuen Adresse.Verwenden Sie den
gcloud compute addresses describe-Befehl, um Informationen zur Adresse aufzurufen.gcloud compute addresses describe ADDRESS_NAME
Kopieren Sie die zurückgegebene IP-Adresse, um sie im folgenden Abschnitt als
RESERVED_IP_ADDRESSzu verwenden.
Load-Balancer mit Back-End-Buckets konfigurieren
In diesem Abschnitt erfahren Sie, wie Sie die folgenden Ressourcen für einenregional internal Application Load Balancererstellen:
- 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 regionalen IP-Adressen. Der Weiterleitungsregel wird eine IP-Adresse aus dem Subnetz zugewiesen, das für die Weiterleitungsregeln des Load-Balancers erstellt wurde. Wenn Sie der Weiterleitungsregel eine IP-Adresse aus dem Nur-Proxy-Subnetz zuweisen, schlägt das Erstellen der Weiterleitungsregel fehl.
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 mit dem Befehl
gcloud beta compute backend-buckets createzwei Back-End-Buckets in der Regionus-east1. Die Back-End-Buckets haben das Load-Balancing-SchemaINTERNAL_MANAGED.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1gcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1Erstellen 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 lb-map \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1Konfigurieren 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 lb-map \ --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-east1Erstellen 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 http-proxy \ --url-map=lb-map \ --region=us-east1Erstellen 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.
gcloud compute target-https-proxies create https-proxy \ --url-map=lb-map \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1Ersetzen Sie
CERTIFICATE_NAMEdurch den Namen des SSL-Zertifikats, das Sie mit Certificate Manager erstellt haben.Erstellen Sie mit dem Befehl
gcloud compute forwarding-rules createeine Weiterleitungsregel mit einer IP-Adresse in der Regionus-east1.Das Reservieren einer IP-Adresse ist für eine HTTP-Weiterleitungsregel optional. Für eine HTTPS-Weiterleitungsregel müssen Sie jedoch eine IP-Adresse reservieren.
In diesem Beispiel ist eine sitzungsspezifische IP-Adresse mit der HTTP-Weiterleitungsregel Ihres Load-Balancers verknüpft. Eine sitzungsspezifische IP-Adresse bleibt so lange unverändert, wie die Weiterleitungsregel vorhanden ist. Wenn Sie die Weiterleitungsregel löschen und neu erstellen müssen, erhält die Weiterleitungsregel möglicherweise eine neue IP-Adresse.
Erstellen Sie für HTTP-Traffic die Weiterleitungsregeln, um eingehende Anfragen an den HTTP-Zielproxy weiterzuleiten:
gcloud compute forwarding-rules create http-fw-rule-1 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --ports=80 \ --target-http-proxy=http-proxy \ --target-http-proxy-region=us-east1 \ --region=us-east1Erstellen Sie für HTTPS-Traffic die globalen Weiterleitungsregeln, um eingehende Anfragen an den HTTPS-Zielproxy weiterzuleiten:
gcloud compute forwarding-rules create https-fw-rule-1 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --target-https-proxy=https-proxy \ --target-http-proxy-region=us-east1 \ --region=us-east1Ersetzen Sie
RESERVED_IP_ADDRESSdurch den Namen der Adresse, die Sie im Abschnitt Statische interne IP-Adresse reservieren kopiert haben.
HTTP-Anfrage an den Load-Balancer senden
Senden Sie eine Anfrage von einer internen Client-VM an die Weiterleitungsregel des Load Balancers.
IP-Adresse der Weiterleitungsregel des Load-Balancers abrufen
Rufen Sie die IP-Adresse der Weiterleitungsregel des Load-Balancers (http-fw-rule-1) in der Region us-east1 ab, um mit curl eine HTTP-Anfrage an die virtuelle IP-Adresse (VIP) in der Region zu senden.
gcloud compute forwarding-rules describe http-fw-rule-1 \
--region=us-east1
Kopieren Sie die zurückgegebene IP-Adresse, um sie im nächsten Schritt als FORWARDING_RULE_IP_ADDRESS zu verwenden.
Client-VM zum Testen der Konnektivität erstellen
Erstellen Sie eine Client-VM und senden Sie eine HTTP-Anfrage an die VIPs im VPC-Netzwerk. Die Client-VM kann sich in einer beliebigen Zone in derselben Region wie der Load Balancer befinden. Außerdem kann sie jedes Subnetz im selben VPC-Netzwerk verwenden. In diesem Beispiel erstellen Sie die Client-VM im selben Subnetz wie die Weiterleitungsregel des Load-Balancers.
Erstellen Sie eine Client-VM in der Region
us-east1.gcloud compute instances create client-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --network=lb-network \ --subnet=subnet-us \ --zone=us-east1-c \ --tags=allow-sshStellen Sie eine SSH-Verbindung zur Client-VM her.
gcloud compute ssh client-a --zone=us-east1-c
In diesem Beispiel hat der regional internal Application Load Balancer einen Frontend-VIP in der Region
us-east1im VPC-Netzwerk. Stellen Sie mit curl eine HTTP-Anfrage an die VIP in dieser Region.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, die Sie im Abschnitt IP-Adresse der Weiterleitungsregel des Load Balancers abrufen kopiert haben.
Nächste Schritte
- Übersicht über internen Application Load Balancer
- Nur-Proxy-Subnetze für Envoy-basierte Load-Balancer
- Zertifikate verwalten
- Load-Balancing-Einrichtung bereinigen