Dieses Dokument zeigt zwei Beispielkonfigurationen zum Einrichten eines internen Application Load Balancer in einer Umgebung mit freigegebener VPC:
- 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-Dienst und die Backends des Load-Balancers in einem anderen Dienstprojekt erstellt werden. Diese Art der Bereitstellung, bei der die URL-Zuordnung auf einen Backend-Dienst in einem anderen Projekt verweist, wird als projektübergreifender Dienstverweis bezeichnet.
Beide Beispiele erfordern dieselbe Vorabkonfiguration, um Berechtigungen zu erteilen und eine freigegebene VPC einzurichten, bevor Sie Load-Balancer erstellen können.
Dies sind nicht die einzigen Konfigurationen für freigegebene VPCs, die von internen Application Load Balancern unterstützt werden. Weitere Architekturen mit freigegebener VPC finden Sie unter Architekturen freigegebener VPCs.
Wenn Sie kein freigegebenes VPC-Netzwerk verwenden möchten, finden Sie weitere Informationen unter Internen Application Load Balancer einrichten.
Hinweise
- Weitere Informationen finden Sie unter Freigegebene VPC – Übersicht.
- Weitere Informationen finden Sie unter Übersicht über den internen Application Load Balancer, einschließlich des Abschnitts Architekturen freigegebener VPCs.
Erforderliche Berechtigungen
Das Einrichten eines Load-Balancers in einem freigegebenen VPC-Netzwerk erfordert eine Ersteinrichtung und -bereitstellung durch einen Administrator. Nach der Ersteinrichtung kann ein Dienstprojektinhaber einen der folgenden Schritte ausführen:
- Stellen Sie alle Komponenten des Load-Balancers und seine Back-Ends in einem Dienstprojekt bereit.
- Stellen Sie die Backend-Komponenten des Load-Balancers (Backend-Dienst und Backends) in Dienstprojekten bereit, auf die in einer URL-Zuordnung in einem anderen Dienst oder Hostprojekt verwiesen werden kann.
In diesem Abschnitt werden die Berechtigungen zusammengefasst, die zum Einrichten eines Load-Balancers in einem freigegebenen VPC-Netzwerk nach dieser Anleitung erforderlich sind.
Freigegebene VPC einrichten
Die folgenden Rollen sind für die folgenden Aufgaben erforderlich:
- Einmalige administrative Aufgaben wie das Einrichten der freigegebenen VPC und das Aktivieren eines Hostprojekts ausführen
- Führen Sie administrative Aufgaben aus, die jedes Mal wiederholt werden müssen, wenn Sie ein neues Dienstprojekt aufnehmen möchten. Dies umfasst das Anhängen des Dienstprojekts, das Bereitstellen und Konfigurieren von Netzwerkressourcen und das Gewähren des Zugriffs für den Dienstprojektadministrator.
Diese Aufgaben müssen im Hostprojekt der freigegebenen VPC ausgeführt werden. Wir empfehlen, dass der Administrator der freigegebenen VPC auch der Inhaber des Hostprojekts der freigegebenen VPC ist. Dadurch werden automatisch die Rollen Netzwerkadministrator und Sicherheitsadministrator zugewiesen.
Aufgabe | Erforderliche Rolle |
---|---|
Richten Sie eine freigegebene VPC ein, aktivieren Sie das Hostprojekt und gewähren Sie Dienstprojektadministratoren Zugriff | Shared VPC-Administrator |
Erstellen Sie Subnetze im freigegebenen VPC-Hostprojekt und gewähren Sie Dienstprojektadministratoren Zugriff | Netzwerkadministrator |
Firewallregeln hinzufügen und löschen | Sicherheitsadministrator |
Nachdem die Subnetze bereitgestellt wurden, muss der Inhaber des Hostprojekts die Rolle des Netzwerknutzers im Hostprojekt allen Nutzern (in der Regel Dienstprojektadministratoren, -entwickler oder Dienstkonten) zuweisen, die Zugriff auf diese Ressourcen benötigen.
Aufgabe | Erforderliche Rolle |
---|---|
VPC-Netzwerke und Subnetze verwenden, die zum Hostprojekt gehören | Netzwerknutzer |
Diese Rolle kann auf Projektebene oder für einzelne Subnetze gewährt werden. Wir empfehlen, die Rolle für einzelne Subnetze zu gewähren. Durch das Gewähren der Rolle für das Projekt wird Zugriff auf alle aktuellen und zukünftigen Subnetze im VPC-Netzwerk des Hostprojekts gewährt.
Load-Balancer und Back-Ends bereitstellen
Dienstprojektadministratoren benötigen die folgenden Rollen im Dienstprojekt, um Load-Balancing-Ressourcen und Back-Ends zu erstellen. Diese Berechtigungen werden dem Inhaber oder Bearbeiter des Dienstprojekts automatisch erteilt.
Aufgabe | Erforderliche Rolle |
---|---|
Load-Balancer-Komponenten erstellen | Netzwerkadministrator |
Instanzen erstellen | Instanzadministrator |
SSL-Zertifikate erstellen und ändern | Sicherheitsadministrator |
Projektübergreifende Backend-Dienste referenzieren
Wenn Ihr Load-Balancer auf Backend-Dienste aus anderen Dienstprojekten verweisen muss, die auch als projektübergreifende Dienstreferenz bezeichnet werden, benötigen Load-Balancer-Administratoren die folgende Rolle im Dienstprojekt, in dem der Backend-Dienst erstellt wird.
Aufgabe | Erforderliche Rolle |
---|---|
Berechtigungen zur Verwendung von Diensten in anderen Projekten | Load-Balancer-Dienstnutzer |
Diese Rolle kann entweder auf Projektebene oder für einzelne Backend-Dienste gewährt werden. Eine Anleitung zum Zuweisen dieser Rolle finden Sie auf dieser Seite im Beispiel für den projektübergreifenden Dienstverweis.
Weitere Informationen zu IAM finden Sie in den folgenden Anleitungen:
Vorbereitung
Führen Sie in diesem Abschnitt die folgenden Schritte aus:
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.
Netzwerk und Subnetze im Hostprojekt konfigurieren
Sie benötigen ein freigegebenes VPC-Netzwerk mit zwei Subnetzen: eines für das Frontend und die Back-Ends des Load-Balancers und das andere für die Proxys des Load-Balancers.In diesem Beispiel werden die folgenden Netzwerke, Regionen und Subnetze verwendet:
Netzwerk: Das Netzwerk hat den Namen
lb-network
.Subnetz für das Frontend und die Back-Ends des Load-Balancers: Ein Subnetz mit dem Namen
lb-frontend-and-backend-subnet
in der Regionus-west1
verwendet10.1.2.0/24
für seinen primären IP-Bereich.Subnetz für Proxys Ein Subnetz mit dem Namen
proxy-only-subnet
in der Regionus-west1
verwendet10.129.0.0/23
für seinen primären IP-Bereich.
Subnetz für das Frontend und die Back-Ends des Load-Balancers konfigurieren
Dieser Schritt muss nicht jedes Mal ausgeführt werden, wenn Sie einen neuen Load-Balancer erstellen möchten. Sie müssen nur sicherstellen, dass das Dienstprojekt Zugriff auf ein Subnetz im freigegebenen VPC-Netzwerk hat (zusätzlich zum Nur-Proxy-Subnetz).Alle Schritte in diesem Abschnitt müssen im Hostprojekt ausgeführt werden.
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-network
ein. Im Bereich Subnetze:
- Legen Sie Modus für Subnetzerstellung auf Benutzerdefiniert fest.
Geben Sie im Bereich Neues Subnetz folgende Informationen ein:
- Name:
lb-frontend-and-backend-subnet
Region:
us-west1
IP-Adressbereich:
10.1.2.0/24
- Name:
Klicken Sie auf Fertig.
Klicken Sie auf Erstellen.
gcloud
Erstellen Sie mit dem Befehl
gcloud compute networks create
ein VPC-Netzwerk:gcloud compute networks create lb-network --subnet-mode=custom
Erstellen Sie ein Subnetz im Netzwerk
lb-network
in der Regionus-west1
:gcloud compute networks subnets create lb-frontend-and-backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
Terraform
Erstellen Sie ein VPC-Netzwerk:
Erstellen Sie ein Subnetz in der Region
us-west1
:
Nur-Proxy-Subnetz konfigurieren
Das Nur-Proxy-Subnetz wird von allen regionalen Envoy-basierten Load-Balancern in der Region us-west1
im VPC-Netzwerk lb-network
verwendet. Pro Region und Netzwerk kann nur ein Nur-Proxy-Subnetz aktiv sein.
Führen Sie diesen Schritt nicht aus, wenn bereits ein Nur-Proxy-Subnetz in der Region us-west1
in diesem Netzwerk reserviert ist.
Alle Schritte in diesem Abschnitt müssen im Hostprojekt ausgeführt werden.
Console
- Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
- Klicken Sie auf den Namen des freigegebenen VPC-Netzwerks:
lb-network
. - Klicken Sie auf Subnetz hinzufügen.
- Geben Sie für Name
proxy-only-subnet
ein. - Wählen Sie bei Region die Option
us-west1
aus. - Setzen Sie Zweck auf Regional verwalteter Proxy.
- Geben Sie
10.129.0.0/23
als IP-Adressbereich ein. - Klicken Sie auf Hinzufügen.
gcloud
Erstellen Sie das Nur-Proxy-Subnetz mit dem Befehl gcloud compute networks subnets
create
.
gcloud compute networks subnets create proxy-only-subnet \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=us-west1 \ --network=lb-network \ --range=10.129.0.0/23
Terraform
Erstellen Sie das Nur-Proxy-Subnetz:
Gewähren Sie Dienstprojektadministratoren Zugriff auf das Backend-Subnetz
Dienstprojektadministratoren benötigen Zugriff auf das Subnetzlb-frontend-and-backend-subnet
, damit sie die Back-Ends des Load-Balancers bereitstellen können.
Ein Administrator der freigegebenen VPC muss Dienstprojektadministratoren Zugriff auf das Backend-Subnetz gewähren (oder auch Entwicklern, die Ressourcen und Backends bereitstellen, die das Subnetz verwenden). Eine Anleitung finden Sie unter Dienstprojektadministratoren für bestimmte Subnetze.
Firewallregeln im Hostprojekt konfigurieren
In diesem Beispiel werden die folgenden Firewallregeln verwendet:fw-allow-health-check
: Eine Regel für eingehenden Traffic, die für die Instanzen mit Load-Balancing gilt und TCP-Traffic von den Google Cloud-Systemen für Systemdiagnosen zulässt (in130.211.0.0/22
und35.191.0.0/16
). In diesem Beispiel wird das Ziel-Tagload-balanced-backend
verwendet, um die Instanzen zu identifizieren, auf die es angewendet werden soll.
fw-allow-proxies
: Eine Regel für eingehenden Traffic, die für die Instanzen mit Load-Balancing gilt und TCP-Traffic über Ports80
,443
und8080
aus den verwalteten Proxys des Load-Balancers zulässt. In diesem Beispiel wird das Ziel-Tagload-balanced-backend
verwendet, um die Instanzen zu identifizieren, auf die sie angewendet werden soll.
fw-allow-ssh
: Eine Regel für eingehenden Traffic, die für die Instanzen mit Load-Balancing gilt und eingehende SSH-Verbindungen über TCP-Port22
von jeder Adresse aus ermöglicht. Sie können einen restriktiveren Quell-IP-Bereich für diese Regel auswählen. Sie können beispielsweise nur die IP-Bereiche des Systems angeben, von dem aus Sie SSH-Sitzungen initiieren. In diesem Beispiel wird das Ziel-Tagallow-ssh
verwendet, um die VMs zu identifizieren, auf welche die Firewallregel angewendet wird.
Alle Schritte in diesem Abschnitt müssen im Hostprojekt ausgeführt werden.
Console
Rufen Sie in der Google Cloud Console die Seite der Firewall-Richtlinien auf.
- Klicken Sie auf Firewallregel erstellen, um die Regel zu erstellen, die Google Cloud-Systemdiagnosen zulässt:
- Name:
fw-allow-health-check
- Netzwerk:
lb-network
- Trafficrichtung: Eingehend
- Aktion bei Übereinstimmung: Zulassen
- Ziele: Angegebene Zieltags
- Zieltags:
load-balanced-backend
- Quellfilter: IPv4-Bereiche.
- IPv4-Quellbereiche:
130.211.0.0/22
und35.191.0.0/16
- Protokolle und Ports:
- Wählen Sie Angegebene Protokolle und Ports aus.
- Prüfen Sie TCP und geben Sie
80
als Portnummer ein.
Sie sollten diese Regeln nur auf Protokolle und Ports beschränken, die mit den von Ihren Systemdiagnosen verwendeten übereinstimmen. Wenn Sie
tcp:80
für das Protokoll und den Port verwenden, kann Google Cloud mit HTTP auf Port80
Ihre VMs kontaktieren. Es kann jedoch nicht HTTPS auf Port443
verwenden, um den Kontakt herzustellen. - Klicken Sie auf Erstellen.
- Klicken Sie auf Firewallregel erstellen, um die Regel zu erstellen, die Google Cloud-Systemdiagnosen zulässt:
- Name:
fw-allow-proxies
- Netzwerk:
lb-network
- Trafficrichtung: Eingehend
- Aktion bei Übereinstimmung: Zulassen
- Ziele: Angegebene Zieltags
- Zieltags:
load-balanced-backend
- Quellfilter: IPv4-Bereiche.
- IPv4-Quellbereiche:
10.129.0.0/23
- Protokolle und Ports:
- Wählen Sie Angegebene Protokolle und Ports aus.
- Prüfen Sie TCP und geben Sie
80, 443, 8080
als Portnummern ein.
- Klicken Sie auf Erstellen.
- Klicken Sie auf Firewallregel erstellen, um die Regel zu erstellen, die Google Cloud-Systemdiagnosen zulässt:
- Name:
fw-allow-ssh
- Netzwerk:
lb-network
- Trafficrichtung: Eingehend
- Aktion bei Übereinstimmung: Zulassen
- Ziele: Angegebene Zieltags
- Zieltags:
allow-ssh
- Quellfilter: IPv4-Bereiche.
- IPv4-Quellbereiche:
0.0.0.0/0
- Protokolle und Ports:
- Wählen Sie Angegebene Protokolle und Ports aus.
- Prüfen Sie TCP und geben Sie
22
als Portnummer ein.
- Klicken Sie auf Erstellen.
gcloud
Erstellen Sie die Firewallregel
fw-allow-health-check
, um Google Cloud-Systemdiagnosen zuzulassen. In diesem Beispiel wird der gesamte TCP-Traffic von Systemdiagnoseprüfern zugelassen. Sie können jedoch Ihren Anforderungen entsprechend eine kleinere Gruppe von Ports konfigurieren:gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=load-balanced-backend \ --rules=tcp
Erstellen Sie die Firewallregel
fw-allow-proxies
, um Traffic von dem Nur-Proxy-Subnetz zuzulassen, das Ihre Back-Ends erreicht.gcloud compute firewall-rules create fw-allow-proxies \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.129.0.0/23 \ --target-tags=load-balanced-backend \ --rules=tcp:80,tcp:443,tcp:8080
Erstellen Sie die Firewallregel
fw-allow-ssh
, um SSH-Verbindungen zu VMs mit dem Netzwerk-Tagallow-ssh
zu ermöglichen. Wenn Siesource-ranges
weglassen, bezieht Google Cloud 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
Terraform
Erstellen Sie eine Firewallregel, um Google Cloud-Systemdiagnosen zuzulassen.
Erstellen Sie eine Firewallregel, um Traffic vom Nur-Proxy-Subnetz zuzulassen und Ihre Back-Ends zu erreichen.
Erstellen Sie die Firewallregel, um SSH-Verbindungen zu VMs mit dem Netzwerk-Tag
allow-ssh
zu ermöglichen.
Freigegebene VPC im Hostprojekt einrichten
Dieser Schritt umfasst das Aktivieren eines freigegebenen VPC-Hostprojekts, das Freigeben von Subnetzen des Hostprojekts und das Anhängen von Dienstprojekten an das Hostprojekt, damit die Dienstprojekte das freigegebene VPC-Netzwerk verwenden können. Informationen zum Einrichten einer freigegebenen VPC im Hostprojekt finden Sie auf den folgenden Seiten:
In den weiteren Anleitungen wird davon ausgegangen, dass Sie die freigegebene VPC bereits eingerichtet haben. Dazu müssen Sie IAM-Richtlinien für Ihre Organisation einrichten und die Host- und Dienstprojekte festlegen.
Fahren Sie erst fort, wenn Sie die freigegebene VPC eingerichtet und die Host- und Dienstprojekte aktiviert haben.
Load-Balancer im Dienstprojekt konfigurieren
In diesem Beispiel wird ein interner Application Load Balancer erstellt, bei dem alle Load-Balancing-Komponenten (Weiterleitungsregel, Ziel-Proxy, URL-Zuordnung und Backend-Dienst) und Backends im Dienstprojekt erstellt werden.
Die Netzwerkressourcen des internen Application Load Balancers wie das Nur-Proxy-Subnetz und das Subnetz für die Backend-Instanzen werden im Hostprojekt erstellt. Die Firewallregeln für die Backend-Instanzen werden auch im Hostprojekt erstellt.
In diesem Abschnitt erfahren Sie, wie Sie den Load-Balancer und die Back-Ends einrichten. Diese Schritte sollten vom Dienstprojektadministrator (oder einem innerhalb des Dienstprojekts tätigen Entwickler) durchgeführt werden und erfordern keine Einbeziehung des Hostprojektadministrators. Die Schritte in diesem Abschnitt ähneln weitgehend den Standardschritten zum Einrichten eines internen Application Load Balancer.
Im Beispiel auf dieser Seite wird explizit eine reservierte interne IP-Adresse für die Weiterleitungsregel des internen Application Load Balancers festgelegt, statt die Zuweisung einer sitzungsspezifischen internen IP-Adresse zuzulassen. Als Best Practice empfehlen wir, IP-Adressen für Weiterleitungsregeln zu reservieren.
Backend der verwalteten Instanzgruppe erstellen
In diesem Abschnitt wird gezeigt, wie Sie eine Vorlage und eine verwaltete Instanzgruppe erstellen. Die verwaltete Instanzgruppe stellt VM-Instanzen bereit, auf denen die Backend-Server eines beispielhaften internen Application Load Balancer ausgeführt werden. Der Traffic von Clients wird auf diese Backend-Server verteilt. Zu Demonstrationszwecken stellen Back-Ends ihre eigenen Hostnamen bereit.
Console
Erstellen Sie eine Instanzvorlage. Rufen Sie in der Google Cloud Console die Seite Instanzvorlagen auf.
- Klicken Sie auf Instanzvorlage erstellen.
- Geben Sie für Name
l7-ilb-backend-template
ein. - Das Bootlaufwerk sollte auf ein Debian-Image wie Debian GNU/Linux 10 (Buster) eingestellt sein. Diese Anleitungen verwenden Befehle, die nur für Debian verfügbar sind, z. B.
apt-get
. Wenn Sie das Bootlaufwerk ändern müssen, klicken Sie auf Ändern.- Wählen Sie als Betriebssystem die Option Debian aus.
- Wählen Sie für Version eines der verfügbaren Debian-Images aus, z. B. Debian GNU/Linux 10 (buster).
- Klicken Sie auf Auswählen.
- Klicken Sie auf Erweiterte Optionen und dann auf Netzwerk.
- Geben Sie die folgenden Netzwerk-Tags ein:
allow-ssh
,load-balanced-backend
. - Wählen Sie im Bereich Netzwerkschnittstellen die Option Für mich freigegebene Netzwerke (von Hostprojekt: HOST_PROJECT_ID) aus.
- Wählen Sie das Subnetz
lb-frontend-and-backend-subnet
aus dem Netzwerklb-network
aus. - Klicken Sie auf Verwaltung. Fügen Sie unter Verwaltung das folgende Skript in das Feld Startskript ein.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google"
http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" |
tee /var/www/html/index.html systemctl restart apache2 - Klicken Sie auf Erstellen.
Erstellen Sie eine verwaltete Instanzgruppe. Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.
- Klicken Sie auf Instanzgruppe erstellen.
- Wählen Sie Neue verwaltete Instanzgruppe (zustandslos) aus. Weitere Informationen finden Sie unter Zustandslose oder zustandsorientierte MIGs.
- Geben Sie für Name
l7-ilb-backend-example
ein. - Wählen Sie für Standort die Option Einzelne Zone aus.
- Wählen Sie bei Region die Option
us-west1
aus. - Wählen Sie bei Zone die Option
us-west1-a
aus. - Wählen Sie bei Instanzvorlage die Option
l7-ilb-backend-template
aus. Geben Sie an, wie viele Instanzen die Gruppe umfassen soll.
Geben Sie für dieses Beispiel für Autoscaling die folgenden Optionen an:
- Wählen Sie für Autoscaling-Modus
Off:do not autoscale
aus. - Geben Sie für Maximale Anzahl von Instanzen den Wert
2
ein.
Optional können Sie im Abschnitt Autoscaling der Benutzeroberfläche die Instanzgruppe so konfigurieren, dass Instanzen basierend auf der CPU-Auslastung automatisch hinzugefügt oder entfernt werden.
- Wählen Sie für Autoscaling-Modus
Klicken Sie auf Erstellen.
gcloud
Bei den gcloud
-Anleitungen in diesem Handbuch wird davon ausgegangen, dass Sie Cloud Shell oder eine andere Umgebung verwenden, in der Bash installiert ist.
Erstellen Sie mit dem Befehl
gcloud compute instance-templates create
eine VM-Instanzvorlage mit einem HTTP-Server.gcloud compute instance-templates create l7-ilb-backend-template \ --region=us-west1 \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --tags=allow-ssh,load-balanced-backend \ --image-family=debian-10 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2' \ --project=SERVICE_PROJECT_ID
Erstellen Sie mit dem Befehl
gcloud compute instance-groups managed create
eine verwaltete Instanzgruppe in der Zone.gcloud compute instance-groups managed create l7-ilb-backend-example \ --zone=us-west1-a \ --size=2 \ --template=l7-ilb-backend-template \ --project=SERVICE_PROJECT_ID
Terraform
VM-Instanzvorlage erstellen
Erstellen Sie eine verwaltete Instanzgruppe.
Bei HTTP:
Bei HTTPS:
Load-Balancer konfigurieren
In diesem Abschnitt erfahren Sie, wie Sie die Ressourcen für den internen Application Load Balancer erstellen:
- HTTP-Systemdiagnose
- Backend-Dienst mit einer verwalteten Instanzgruppe als Backend
- Eine URL-Zuordnung
- SSL-Zertifikat (nur für HTTPS erforderlich)
- Zielproxy
- Weiterleitungsregel
Proxyverfügbarkeit
Je nach Anzahl der Dienstprojekte, die dasselbe freigegebene VPC-Netzwerk verwenden, werden Kontingente oder Limits möglicherweise schneller ausgeschöpft als im Netzwerkbereitstellungsmodell, in dem jedes Google Cloud-Projekt sein eigenes Netzwerk hostet.
Beispielsweise haben Google Cloud-Regionen manchmal nicht genügend Proxy-Kapazität für einen neuen internen Application Load Balancer. In diesem Fall gibt die Google Cloud Console beim Erstellen des Load-Balancers eine Warnmeldung zur Proxyverfügbarkeit aus. Sie haben folgende Möglichkeiten, dieses Problem zu beheben:
- Warten Sie, bis das Kapazitätsproblem behoben ist.
Wenden Sie sich an Ihr Google Cloud-Vertriebsteam, um diese Limits zu erhöhen.
Console
Kontext zum Dienstprojekt wechseln
- Öffnen Sie in der Google Cloud Console die Seite Dashboard.
- Klicken Sie oben auf der Seite auf die Liste Auswählen aus. Wählen Sie im angezeigten Fenster Auswählen aus das Dienstprojekt aus, in dem Sie den Load-Balancer erstellen möchten.
Konfiguration starten
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
- Klicken Sie auf Load-Balancer erstellen.
- Wählen Sie unter Typ des Load Balancers die Option Application Load Balancer (HTTP/HTTPS) aus und klicken Sie auf Weiter.
- Wählen Sie für Öffentlich oder intern die Option Intern aus und klicken Sie auf Weiter.
- Wählen Sie für Regionenübergreifende oder Einzelregion-Bereitstellung die Option Am besten für regionale Arbeitslasten aus und klicken Sie auf Weiter.
- Klicken Sie auf Konfigurieren.
Grundlegende Konfiguration
- Geben Sie
l7-ilb-shared-vpc
als Name für den Load-Balancer ein. - Wählen Sie
us-west1
als Region aus. Wählen Sie für das Netzwerk die Option lb-network (aus Projekt: HOST_PROJECT_ID) aus.
Wenn die Warnung Nur-Proxy-Subnetz im freigegebenen VPC-Netzwerk erforderlich angezeigt wird, prüfen Sie, ob der Administrator des Hostprojekts das
proxy-only-subnet
in der Regionus-west1
im freigegebenen VPC-Netzwerklb-network
erstellt hat. Die Erstellung des Load-Balancers ist auch dann erfolgreich, wenn Sie keine Berechtigung zum Ansehen des Nur-Proxy-Subnetzes auf dieser Seite haben.Lassen Sie das Fenster geöffnet, um fortzufahren.
Backend konfigurieren
- Klicken Sie auf Backend-Konfiguration.
- Wählen Sie im Menü Back-End-Service erstellen oder auswählen die Option Back-End-Service erstellen aus.
- Legen Sie als Name für den Back-End-Dienst
l7-ilb-backend-service
fest. - Setzen Sie den Backend-Typ auf Instanzgruppen.
- In the New backend section:
- Legen Sie für Instanzgruppe
l7-ilb-backend-example
fest. - Setzen Sie die Portnummern auf
80
. - Setzen Sie den Balancing-Modus auf Auslastung.
- Klicken Sie auf Fertig.
- Legen Sie für Instanzgruppe
- Wählen Sie im Abschnitt Systemdiagnose die Option Systemdiagnose erstellen mit den folgenden Parametern aus:
- Name:
l7-ilb-basic-check
- Protokoll:
HTTP
- Port:
80
- Name:
- Klicken Sie auf Speichern und Fortfahren.
- Klicken Sie auf Erstellen.
Routingregeln konfigurieren
- Klicken Sie auf Routingregeln. Achten Sie darauf, dass
l7-ilb-backend-service
der einzige Back-End-Dienst für alle nicht übereinstimmenden Hosts und alle nicht übereinstimmenden Pfade ist.
Weitere Informationen zur Trafficverwaltung finden Sie unter Trafficverwaltung einrichten.
Frontend konfigurieren
Bei HTTP:
- Klicken Sie auf Frontend-Konfiguration.
- Legen Sie als Name
l7-ilb-forwarding-rule
fest. - Legen Sie als Protokoll
HTTP
fest. - Setzen Sie die Option Subnetzwerk auf
lb-frontend-and-backend-subnet
. Wählen Sie nicht das Nur-Proxy-Subnetz für das Frontend aus, auch wenn es sich um eine Option in der Liste handelt. - Legen Sie als Port
80
fest. - Klicken Sie auf das Menü IP-Adresse und dann auf IP-Adresse erstellen.
- Geben Sie im Bereich Statische interne IP-Adresse reservieren die folgenden Informationen an:
- Geben Sie im Feld Name
ip-address-shared-vpc
ein. - Klicken Sie unter Statische IP-Adresse auf Selbst auswählen. Geben Sie als Benutzerdefinierte IP-Adresse
10.1.2.99
ein. - (Optional) Wenn Sie diese IP-Adresse für verschiedene Front-Ends freigeben möchten, setzen Sie den Zweck auf Freigegeben.
- Geben Sie im Feld Name
- Klicken Sie auf Fertig.
Bei HTTPS:
Wenn Sie HTTPS zwischen dem Client und dem Load-Balancer verwenden, benötigen Sie eine oder mehrere SSL-Zertifikatsressourcen, um den Proxy zu konfigurieren. Informationen zum Erstellen von SSL-Zertifikatsressourcen finden Sie unter SSL-Zertifikate. Von Google verwaltete Zertifikate werden derzeit nicht von internen Application Load Balancern unterstützt.
- Klicken Sie auf Frontend-Konfiguration.
- Geben Sie im Feld Name
l7-ilb-forwarding-rule
ein. - Wählen Sie im Feld Protokoll die Option
HTTPS (includes HTTP/2)
aus. - Setzen Sie die Option Subnetzwerk auf
lb-frontend-and-backend-subnet
. Wählen Sie nicht das Nur-Proxy-Subnetz für das Frontend aus, auch wenn es sich um eine Option in der Liste handelt. - Achten Sie darauf, dass der Port auf
443
festgelegt ist, um HTTPS-Traffic zuzulassen. - Klicken Sie auf das Menü IP-Adresse und dann auf IP-Adresse erstellen.
- Geben Sie im Bereich Statische interne IP-Adresse reservieren die folgenden Informationen an:
- Geben Sie im Feld Name
ip-address-shared-vpc
ein. - Klicken Sie unter Statische IP-Adresse auf Selbst auswählen. Geben Sie als Benutzerdefinierte IP-Adresse
10.1.2.99
ein. - (Optional) Wenn Sie diese IP-Adresse für verschiedene Front-Ends freigeben möchten, setzen Sie den Zweck auf Freigegeben.
- Geben Sie im Feld Name
- Klicken Sie auf die Liste Zertifikat.
- Wenn Sie bereits eine selbstverwaltete SSL-Zertifikatsressource haben, die Sie als primäres SSL-Zertifikat verwenden möchten, wählen Sie diese aus dem Menü aus.
- Wählen Sie andernfalls Neues Zertifikat erstellen aus.
- Geben Sie
l7-ilb-cert
als Name ein. - Laden Sie in den entsprechenden Feldern Ihre PEM-formatierten Dateien hoch:
- Public-Key-Zertifikat
- Zertifikatskette
- Privater Schlüssel
- Klicken Sie auf Erstellen.
- Geben Sie
- So fügen Sie zusätzlich zur primären SSL-Zertifikatsressource weitere Zertifikatsressourcen hinzu:
- Klicken Sie auf Zertifikat hinzufügen.
- Wählen Sie ein Zertifikat aus der Liste Zertifikate aus oder klicken Sie auf Neues Zertifikat erstellen und folgen Sie der vorherigen Anleitung.
- Klicken Sie auf Fertig.
Konfiguration prüfen und fertigstellen
- Klicken Sie auf Erstellen.
gcloud
Definieren Sie die HTTP-Systemdiagnose mit dem Befehl
gcloud compute health-checks create http
.gcloud compute health-checks create http l7-ilb-basic-check \ --region=us-west1 \ --use-serving-port \ --project=SERVICE_PROJECT_ID
Definieren Sie den Backend-Dienst mit dem Befehl
gcloud compute backend-services create
.gcloud compute backend-services create l7-ilb-backend-service \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --health-checks=l7-ilb-basic-check \ --health-checks-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_ID
Fügen Sie dem Back-End-Dienst mit dem Befehl
gcloud compute backend-services add-backend
Back-Ends hinzu.gcloud compute backend-services add-backend l7-ilb-backend-service \ --balancing-mode=UTILIZATION \ --instance-group=l7-ilb-backend-example \ --instance-group-zone=us-west1-a \ --region=us-west1 \ --project=SERVICE_PROJECT_ID
Erstellen Sie die URL-Zuordnung mit dem Befehl
gcloud compute url-maps create
.gcloud compute url-maps create l7-ilb-map \ --default-service=l7-ilb-backend-service \ --region=us-west1 \ --project=SERVICE_PROJECT_ID
Erstellen Sie den Zielproxy.
Bei HTTP:
Erstellen Sie für einen internen HTTP-Load-Balancer den Zielproxy mit dem Befehl
gcloud compute target-http-proxies create
.gcloud compute target-http-proxies create l7-ilb-proxy \ --url-map=l7-ilb-map \ --url-map-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_ID
Bei HTTPS:
Informationen zum Erstellen von SSL-Zertifikatsressourcen finden Sie unter SSL-Zertifikate. Von Google verwaltete Zertifikate werden derzeit nicht von internen Application Load Balancern unterstützt.
Weisen Sie Ihre Dateipfade den entsprechenden Variablennamen zu.
export LB_CERT=path to PEM-formatted file
export LB_PRIVATE_KEY=path to PEM-formatted file
Erstellen Sie ein regionales SSL-Zertifikat mit dem Befehl
gcloud compute ssl-certificates create
.gcloud compute ssl-certificates create l7-ilb-cert \ --certificate=$LB_CERT \ --private-key=$LB_PRIVATE_KEY \ --region=us-west1
Verwenden Sie das regionale SSL-Zertifikat, um mit dem Befehl
gcloud compute target-https-proxies create
einen Zielproxy zu erstellen.gcloud compute target-https-proxies create l7-ilb-proxy \ --url-map=l7-ilb-map \ --region=us-west1 \ --ssl-certificates=l7-ilb-cert \ --project=SERVICE_PROJECT_ID
Erstellen Sie die Weiterleitungsregel.
Bei benutzerdefinierten Netzwerken müssen Sie in der Weiterleitungsregel auf das Subnetz verweisen.
Verwenden Sie
lb-frontend-and-backend-subnet
für die IP-Adresse der Weiterleitungsregel. Wenn Sie das Nur-Proxy-Subnetz verwenden, schlägt das Erstellen der Weiterleitungsregel fehl.Bei HTTP:
Verwenden Sie den Befehl
gcloud compute forwarding-rules create
mit den richtigen Flags.gcloud compute forwarding-rules create l7-ilb-forwarding-rule \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --address=IP_ADDRESS_NAME \ --ports=80 \ --region=us-west1 \ --target-http-proxy=l7-ilb-proxy \ --target-http-proxy-region=us-west1 \ --project=SERVICE_PROJECT_ID
Bei HTTPS:
Verwenden Sie den Befehl
gcloud compute forwarding-rules create
mit den richtigen Flags.gcloud compute forwarding-rules create l7-ilb-forwarding-rule \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --address=IP_ADDRESS_NAME \ --ports=443 \ --region=us-west1 \ --target-https-proxy=l7-ilb-proxy \ --target-https-proxy-region=us-west1 \ --project=SERVICE_PROJECT_ID
Terraform
HTTP-Systemdiagnose definieren
Bei HTTP:
Bei HTTPS:
Backend-Dienst definieren
Erstellen Sie die URL-Zuordnung:
Erstellen Sie den Zielproxy.
Bei HTTP:
Für HTTPS: Erstellen Sie ein regionales SSL-Zertifikat.
Informationen zum Erstellen von SSL-Zertifikatsressourcen finden Sie unter SSL-Zertifikate. Von Google verwaltete Zertifikate werden derzeit nicht von internen Application Load Balancern unterstützt.
Mit dem regionalen SSL-Zertifikat einen Zielproxy erstellen
Erstellen Sie die Weiterleitungsregel.
Bei benutzerdefinierten Netzwerken müssen Sie in der Weiterleitungsregel auf das Subnetz verweisen.
Bei HTTP:
Bei HTTPS:
Load-Balancer testen
Erstellen Sie zuerst eine Beispiel-Client-VM, um den Load-Balancer zu testen. Richten Sie dann eine SSH-Sitzung mit der VM ein und senden Sie Traffic von dieser VM zum Load-Balancer.
VM-Testinstanz erstellen
Clients können sich entweder im Hostprojekt oder in einem verbundenen Dienstprojekt befinden. In diesem Beispiel testen Sie die Funktion des Load-Balancers, indem Sie eine Client-VM in einem Dienstprojekt bereitstellen. Der Client muss dasselbe freigegebene VPC-Netzwerk verwenden und sich in derselben Region befinden wie der Load-Balancer.
Console
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf Instanz erstellen.
Legen Sie als Name
client-vm
fest.Geben Sie als Zone us-west1-a an.
Klicken Sie auf Erweiterte Optionen und dann auf Netzwerk.
Geben Sie die folgenden Netzwerk-Tags ein:
allow-ssh
,load-balanced-backend
.Wählen Sie im Bereich Netzwerkschnittstellen die Option Für mich freigegebene Netzwerke (von Hostprojekt: HOST_PROJECT_ID) aus.
Wählen Sie das Subnetz
lb-frontend-and-backend-subnet
aus dem Netzwerklb-network
aus.Klicken Sie auf Erstellen.
gcloud
Erstellen Sie eine VM-Testinstanz.
gcloud compute instances create client-vm \ --image-family=debian-10 \ --image-project=debian-cloud \ --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --zone=us-west1-a \ --tags=allow-ssh \ --project=SERVICE_PROJECT_ID
Terraform
Erstellen Sie eine VM-Testinstanz.
Traffic an den Load-Balancer senden
Stellen Sie mit SSH eine Verbindung zur soeben erstellten Instanz her und testen Sie, ob die HTTP(S)-Dienste auf den Backends über die IP-Adresse der Weiterleitungsregel des internen Application Load Balancers erreichbar sind und ob über die Backend-Instanzen hinweg Traffic ausgeglichen wird.
Stellen Sie eine SSH-Verbindung zur Clientinstanz her.
gcloud compute ssh client-vm \ --zone=us-west1-a
Prüfen Sie, ob die IP-Adresse ihren Hostnamen bereitstellt. Ersetzen Sie LB_IP_ADDRESS durch die IP-Adresse des Load-Balancers.
curl LB_IP_ADDRESS
Ersetzen Sie für HTTPS-Tests
curl
durch Folgendes:curl -k -s 'https://LB_IP_ADDRESS:443'
Das Flag
-k
bewirkt, dass curl die Zertifikatsvalidierung überspringt.
Load-Balancer mit einem projektübergreifenden Backend-Dienst 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 internen Application Load Balancern können Sie auch Bereitstellungen freigegebener VPC-Netzwerke konfigurieren, bei denen eine URL-Zuordnung in einem Host- oder Dienstprojekt auf Backend-Dienste (und Backends) in mehreren Dienstprojekten in Umgebungen mit freigegebener VPC verweisen kann. Dies wird als projektübergreifender Dienstverweis bezeichnet.
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-Dienst in einem Dienstprojekt
- Weiterleitungsregel, Ziel-Proxy und URL-Zuordnung in einem Dienstprojekt und Backend-Dienst in einem anderen Dienstprojekt
Der projektübergreifende Dienstverweis kann mit Instanzgruppen, serverlosen NEGs oder anderen unterstützten Backend-Typen verwendet werden. Wenn Sie serverlose NEGs verwenden, müssen Sie eine VM in dem VPC-Netzwerk erstellen, in dem Sie das Frontend des Load-Balancers erstellen möchten. Ein Beispiel finden Sie unter VM-Instanz in einem bestimmten Subnetz erstellen im Abschnitt Internen Application Load Balancer mit Cloud Run einrichten.
Anforderungen einrichten
In diesem Beispiel wird ein Beispiel-Load-Balancer mit seinem Frontend und Backend in zwei verschiedenen Dienstprojekten konfiguriert.
Wenn Sie es noch nicht getan haben, müssen Sie alle erforderlichen Schritte ausführen, um die freigegebene VPC einzurichten und das Netzwerk sowie die Subnetze und Firewallregeln zu konfigurieren, die für dieses Beispiel erforderlich sind. Weitere Informationen finden Sie hier:
Backends und Backend-Dienst in Dienstprojekt B erstellen
Alle Schritte in diesem Abschnitt müssen in Dienstprojekt B ausgeführt werden.
Console
Erstellen Sie eine Instanzvorlage. Rufen Sie in der Google Cloud Console die Seite Instanzvorlagen auf.
- Klicken Sie auf Instanzvorlage erstellen.
- Geben Sie einen Namen für die Instanzvorlage ein:
cross-ref-backend-template
. - Das Bootlaufwerk sollte auf ein Debian-Image wie Debian GNU/Linux 10 (Buster) eingestellt sein. Diese Anleitungen verwenden Befehle, die nur für Debian verfügbar sind, z. B.
apt-get
. Wenn Sie das Bootlaufwerk ändern müssen, klicken Sie auf Ändern.- Wählen Sie als Betriebssystem die Option Debian aus.
- Wählen Sie für Version eines der verfügbaren Debian-Images aus, z. B. Debian GNU/Linux 10 (buster).
- Klicken Sie auf Auswählen.
- Klicken Sie auf Erweiterte Optionen und dann auf Netzwerk.
- Geben Sie die folgenden Netzwerk-Tags ein:
allow-ssh
,load-balanced-backend
. - Wählen Sie im Bereich Netzwerkschnittstellen die Option Für mich freigegebene Netzwerke (von Hostprojekt: HOST_PROJECT_ID) aus.
- Wählen Sie das Subnetz
lb-frontend-and-backend-subnet
aus dem Netzwerklb-network
aus. - Klicken Sie auf Verwaltung. Fügen Sie unter Verwaltung das folgende Skript in das Feld Startskript ein.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google"
http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" |
tee /var/www/html/index.html systemctl restart apache2 - Klicken Sie auf Erstellen.
Erstellen Sie eine verwaltete Instanzgruppe. Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.
- Klicken Sie auf Instanzgruppe erstellen.
- Wählen Sie Neue verwaltete Instanzgruppe (zustandslos) aus. Weitere Informationen finden Sie unter Zustandslose oder zustandsorientierte MIGs.
- Geben Sie im Feld Name eine Bezeichnung für die Instanzgruppe ein:
cross-ref-ig-backend
. - Wählen Sie für Standort die Option Einzelne Zone aus.
- Wählen Sie bei Region die Option
us-west1
aus. - Wählen Sie bei Zone die Option
us-west1-a
aus. - Wählen Sie für Instanzvorlage die Option cross-ref-backend-template aus.
Geben Sie an, wie viele Instanzen die Gruppe umfassen soll.
Geben Sie für dieses Beispiel für Autoscaling die folgenden Optionen an:
- Wählen Sie für Autoscaling-Modus
Off:do not autoscale
aus. - Geben Sie für Maximale Anzahl von Instanzen den Wert
2
ein.
Optional können Sie im Abschnitt Autoscaling der Benutzeroberfläche die Instanzgruppe so konfigurieren, dass Instanzen basierend auf der CPU-Auslastung automatisch hinzugefügt oder entfernt werden.
- Wählen Sie für Autoscaling-Modus
Klicken Sie auf Erstellen.
Erstellen Sie einen regionalen Backend-Dienst. In diesem Schritt erstellen wir auch die Systemdiagnose und fügen dem Backend-Dienst Backends hinzu. Öffnen Sie in der Google Cloud Console die Seite Back-Ends.
- Klicken Sie auf Regionalen Backend-Dienst erstellen.
- Geben Sie im Feld Name eine Bezeichnung für den Backend-Dienst ein:
cross-ref-backend-service
. - Wählen Sie als Region us-west1 aus.
- Wählen Sie für Typ des Load Balancers die Option Regionaler interner Application Load Balancer (INTERNAL_MANAGED) aus.
- Setzen Sie den Backend-Typ auf Instanzgruppen.
- Legen Sie im Bereich Back-Ends für Netzwerk den Wert lb-network fest.
- Click Add backend and set the following fields:
- Legen Sie für die Instanzgruppe cross-ref-ig-backend fest.
- Geben Sie die Portnummern ein:
80
. - Setzen Sie den Balancing-Modus auf Auslastung.
- Klicken Sie auf Fertig.
- Wählen Sie im Abschnitt Systemdiagnose die Option Systemdiagnose erstellen mit den folgenden Parametern aus:
- Name:
cross-ref-http-health-check
- Protokoll:
HTTP
- Port:
80
- Klicken Sie auf Speichern.
- Name:
- Klicken Sie auf Weiter.
Optional: Geben Sie im Abschnitt Berechtigungen hinzufügen die IAM-Hauptkonten (normalerweise eine E-Mail-Adresse) von Load-Balancer-Administratoren aus anderen Projekten ein, damit sie diesen Backend-Dienst für Load-Balancern in ihren eigenen Projekten verwenden können. Ohne diese Berechtigung können Sie keinen projektübergreifenden Dienstverweis verwenden.
Wenn Sie keine Berechtigung zum Festlegen von Zugriffssteuerungsrichtlinien für Backend-Dienste in diesem Projekt haben, können Sie den Backend-Dienst jetzt erstellen. Ein autorisierter Nutzer kann diesen Schritt später wie in der Gewähren Sie dem Load-Balancer-Administrator Berechtigungen zur Verwendung des Backend-Dienstes ausführen. In diesem Abschnitt wird auch beschrieben, wie Sie Zugriff auf alle Backend-Dienste in diesem Projekt gewähren, damit Sie nicht jedes Mal Zugriff gewähren müssen, wenn Sie einen neuen Backend-Dienst erstellen.
Klicken Sie auf Erstellen.
gcloud
Erstellen Sie mit dem Befehl
gcloud compute instance-templates create
eine VM-Instanzvorlage mit einem HTTP-Server.gcloud compute instance-templates create BACKEND_IG_TEMPLATE \ --region=us-west1 \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --tags=allow-ssh,load-balanced-backend \ --image-family=debian-10 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2' \ --project=SERVICE_PROJECT_B_ID
Dabei gilt:
BACKEND_IG_TEMPLATE
: Der Name der Instanzgruppenvorlage.SERVICE_PROJECT_B_ID
: Die Projekt-ID des Dienstprojekts B, in dem die Backends des Load-Balancers und der Backend-Dienst erstellt werden.HOST_PROJECT_ID
: Die Projekt-ID des freigegebenen VPC-Hostprojekts.
Erstellen Sie mit dem Befehl
gcloud compute instance-groups managed create
eine verwaltete Instanzgruppe in der Zone.gcloud compute instance-groups managed create BACKEND_MIG \ --zone=us-west1-a \ --size=2 \ --template=BACKEND_IG_TEMPLATE \ --project=SERVICE_PROJECT_B_ID
Dabei gilt:
BACKEND_MIG
: Der Name der Backend-Instanzgruppe.
Definieren Sie die HTTP-Systemdiagnose mit dem Befehl
gcloud compute health-checks create http
.gcloud compute health-checks create http HTTP_HEALTH_CHECK_NAME \ --region=us-west1 \ --use-serving-port \ --project=SERVICE_PROJECT_B_ID
Dabei gilt:
HTTP_HEALTH_CHECK_NAME
: Der Name für die HTTP-Systemdiagnose.
Definieren Sie den Backend-Dienst mit dem Befehl
gcloud compute backend-services create
.gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --health-checks=HTTP_HEALTH_CHECK_NAME \ --health-checks-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_B_ID
Dabei gilt:
BACKEND_SERVICE_NAME
: Der Name des Backend-Dienstes, der in Dienstprojekt B erstellt wurde.
Fügen Sie dem Backend-Dienst mit dem Befehl
gcloud compute backend-services add-backend
Backends hinzu.gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --balancing-mode=UTILIZATION \ --instance-group=BACKEND_MIG \ --instance-group-zone=us-west1-a \ --region=us-west1 \ --project=SERVICE_PROJECT_B_ID
Terraform
eine Instanzvorlage erstellen
Erstellen Sie eine verwaltete Instanzgruppe.
Bei HTTP
Bei HTTPS
Erstellen Sie eine Systemdiagnose für das Backend.
Bei HTTP
Bei HTTPS
Erstellen Sie einen regionalen Backend-Dienst.
Load-Balancer-Frontend und URL-Zuordnung in Dienstprojekt A erstellen
Alle Schritte in diesem Abschnitt müssen im Dienstprojekt A ausgeführt werden.
Console
Konfiguration starten
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
- Klicken Sie auf Load-Balancer erstellen.
- Wählen Sie unter Typ des Load Balancers die Option Application Load Balancer (HTTP/HTTPS) aus und klicken Sie auf Weiter.
- Wählen Sie für Öffentlich oder intern die Option Intern aus und klicken Sie auf Weiter.
- Wählen Sie für Regionenübergreifende oder Einzelregion-Bereitstellung die Option Am besten für regionale Arbeitslasten aus und klicken Sie auf Weiter.
- Klicken Sie auf Konfigurieren.
Grundlegende Konfiguration
- Geben Sie im Feld Name eine Bezeichnung für den Load-Balancer ein.
- Wählen Sie
us-west1
als Region aus. Wählen Sie für das Netzwerk die Option lb-network (aus Projekt: HOST_PROJECT_NAME) aus.
Wenn die Warnung Nur-Proxy-Subnetz im freigegebenen VPC-Netzwerk erforderlich angezeigt wird, prüfen Sie, ob der Administrator des Hostprojekts das
proxy-only-subnet
in der Regionus-west1
im freigegebenen VPC-Netzwerklb-network
erstellt hat. Die Erstellung des Load-Balancers ist auch dann erfolgreich, wenn Sie keine Berechtigung zum Ansehen des Nur-Proxy-Subnetzes auf dieser Seite haben.Lassen Sie das Fenster geöffnet, um fortzufahren.
Backend konfigurieren
- Klicken Sie auf Backend-Konfiguration.
- Klicken Sie auf Projektübergreifende Backend-Dienste.
- Geben Sie als Projekt-ID die Projekt-ID für Dienstprojekt B ein.
- Geben Sie unter Name des Backend-Dienstes den Namen des Backend-Dienstes aus Dienstprojekt B ein, das Sie verwenden möchten. In diesem Beispiel ist das
cross-ref-backend-service
. - Klicken Sie auf Backend-Dienst hinzufügen.
Routingregeln konfigurieren
- Klicken Sie auf Routingregeln. Der cross-ref-backend-service muss der einzige Backend-Dienst für alle nicht übereinstimmenden Hosts und alle nicht übereinstimmenden Pfade sein.
Weitere Informationen zur Trafficverwaltung finden Sie unter Trafficverwaltung einrichten.
Frontend konfigurieren
Damit der projektübergreifende Dienst verweist, muss das Frontend dasselbe Netzwerk (lb-network
) aus dem freigegebenen VPC-Hostprojekt verwenden, mit dem der Backend-Dienst erstellt wurde.
Bei HTTP:
- Klicken Sie auf Frontend-Konfiguration.
- Geben Sie einen Name für die Weiterleitungsregel ein:
cross-ref-http-forwarding-rule
. - Legen Sie als Protokoll
HTTP
fest. - Setzen Sie die Option Subnetzwerk auf
lb-frontend-and-backend-subnet
. Wählen Sie nicht das Nur-Proxy-Subnetz für das Frontend aus, auch wenn es sich um eine Option in der Liste handelt. - Legen Sie als Port
80
fest. - Klicken Sie auf das Menü IP-Adresse und dann auf IP-Adresse erstellen.
- Geben Sie im Bereich Statische interne IP-Adresse reservieren die folgenden Informationen an:
- Geben Sie im Feld Name
cross-ref-ip-address
ein. - Klicken Sie unter Statische IP-Adresse auf Selbst auswählen. Geben Sie als Benutzerdefinierte IP-Adresse
10.1.2.98
ein. - (Optional) Wenn Sie diese IP-Adresse für verschiedene Front-Ends freigeben möchten, setzen Sie den Zweck auf Freigegeben.
- Geben Sie im Feld Name
- Klicken Sie auf Fertig.
Bei HTTPS:
Wenn Sie HTTPS zwischen dem Client und dem Load-Balancer verwenden, benötigen Sie eine oder mehrere SSL-Zertifikatsressourcen, um den Proxy zu konfigurieren. Informationen zum Erstellen von SSL-Zertifikatsressourcen finden Sie unter SSL-Zertifikate. Von Google verwaltete Zertifikate werden derzeit nicht von internen Application Load Balancern unterstützt.
- Klicken Sie auf Frontend-Konfiguration.
- Geben Sie einen Name für die Weiterleitungsregel ein:
cross-ref-https-forwarding-rule
. - Wählen Sie im Feld Protokoll die Option
HTTPS (includes HTTP/2)
aus. - Setzen Sie die Option Subnetzwerk auf
lb-frontend-and-backend-subnet
. Wählen Sie nicht das Nur-Proxy-Subnetz für das Frontend aus, auch wenn es sich um eine Option in der Liste handelt. - Achten Sie darauf, dass der Port auf
443
festgelegt ist, um HTTPS-Traffic zuzulassen. - Klicken Sie auf das Menü IP-Adresse und dann auf IP-Adresse erstellen.
- Geben Sie im Bereich Statische interne IP-Adresse reservieren die folgenden Informationen an:
- Geben Sie im Feld Name
cross-ref-ip-address
ein. - Klicken Sie unter Statische IP-Adresse auf Selbst auswählen. Geben Sie als Benutzerdefinierte IP-Adresse
10.1.2.98
ein. - (Optional) Wenn Sie diese IP-Adresse für verschiedene Front-Ends freigeben möchten, setzen Sie den Zweck auf Freigegeben.
- Geben Sie im Feld Name
- Klicken Sie auf die Liste Zertifikat.
- Wenn Sie bereits eine selbstverwaltete SSL-Zertifikatressource haben, die Sie als primäres SSL-Zertifikat verwenden möchten, wählen Sie es aus dem Menü aus.
- Wählen Sie andernfalls Neues Zertifikat erstellen aus.
- Geben Sie einen Namen für das SSL-Zertifikat ein.
- Laden Sie in den entsprechenden Feldern Ihre PEM-formatierten Dateien hoch:
- Public-Key-Zertifikat
- Zertifikatskette
- Privater Schlüssel
- Klicken Sie auf Erstellen.
- So fügen Sie zusätzlich zur primären SSL-Zertifikatsressource weitere Zertifikatsressourcen hinzu:
- Klicken Sie auf Zertifikat hinzufügen.
- Wählen Sie ein Zertifikat aus der Liste Zertifikate aus oder klicken Sie auf Neues Zertifikat erstellen und folgen Sie der vorherigen Anleitung.
- Klicken Sie auf Fertig.
Konfiguration prüfen und fertigstellen
- Klicken Sie auf Erstellen.
Load-Balancer testen
Nachdem Sie den Load-Balancer erstellt haben, testen Sie ihn mithilfe der Schritte unter Load-Balancer testen.
gcloud
Erstellen Sie die URL-Zuordnung und legen Sie den Standarddienst auf den Backend-Dienst in Dienstprojekt B fest.
gcloud compute url-maps create URL_MAP_NAME \ --default-service=projects/SERVICE_PROJECT_B_ID/regions/us-west1/backendServices/BACKEND_SERVICE_NAME \ --region=us-west1 \ --project=SERVICE_PROJECT_A_ID
Dabei gilt:
URL_MAP_NAME
: Der Name für die URL-Zuordnung.BACKEND_SERVICE_NAME
: Der Name des Backend-Dienstes, der in Dienstprojekt B erstellt wurde.SERVICE_PROJECT_B_ID
: Die Projekt-ID des Dienstprojekts B, in dem die Backends und der Backend-Dienst des Load-Balancers erstellt werden.SERVICE_PROJECT_A_ID
ist die Projekt-ID des Dienstprojekts A, in dem das Frontend des Load-Balancers erstellt wird.
Die Erstellung einer URL-Zuordnung schlägt fehl, wenn Sie die Berechtigung
compute.backendServices.use
für den Backend-Dienst in Dienstprojekt B nicht haben.Erstellen Sie den Zielproxy.
Bei HTTP:
gcloud compute target-http-proxies create HTTP_TARGET_PROXY_NAME \ --url-map=URL_MAP_NAME \ --url-map-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_A_ID
Dabei gilt:
HTTP_TARGET_PROXY_NAME
: Der Name des HTTP-Ziel-Proxys.
Bei HTTPS:
Erstellen Sie ein regionales SSL-Zertifikat mit dem Befehl
gcloud compute ssl-certificates create
.gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate=PATH_TO_CERTIFICATE \ --private-key=PATH_TO_PRIVATE_KEY \ --region=us-west1 \ --project=SERVICE_PROJECT_A_ID
Dabei gilt:
SSL_CERTIFICATE_NAME
: Der Name der SSL-Zertifikatsressource.PATH_TO_CERTIFICATE
: Der Pfad zur lokalen SSL-Zertifikatsdatei im PEM-Format.PATH_TO_PRIVATE_KEY
: Der Pfad zum privaten Schlüssel des lokalen SSL-Zertifikats im PEM-Format.
Verwenden Sie das regionale SSL-Zertifikat, um mit dem Befehl
gcloud compute target-https-proxies create
einen Zielproxy zu erstellen.gcloud compute target-https-proxies create HTTPS_TARGET_PROXY_NAME \ --url-map=URL_MAP_NAME \ --region=us-west1 \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --project=SERVICE_PROJECT_A_ID
Dabei gilt:
HTTPS_TARGET_PROXY_NAME
: Der Name für den Ziel-HTTPS-Proxy.
Erstellen Sie die Weiterleitungsregel. Damit der projektübergreifende Dienst verweist, muss die Weiterleitungsregel dasselbe Netzwerk (
lb-network
) aus dem freigegebenen VPC-Hostprojekt verwenden, mit dem der Backend-Dienst erstellt wurde.Bei HTTP:
gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --address=IP_ADDRESS_CROSS_REF \ --ports=80 \ --region=us-west1 \ --target-http-proxy=HTTP_TARGET_PROXY_NAME \ --target-http-proxy-region=us-west1 \ --project=SERVICE_PROJECT_A_ID
Dabei gilt:
HTTP_FORWARDING_RULE_NAME
: Der Name der Weiterleitungsregel, die zur Verarbeitung von HTTP-Traffic verwendet wird.
Bei HTTPS:
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --address=IP_ADDRESS_CROSS_REF \ --ports=443 \ --region=us-west1 \ --target-https-proxy=HTTPS_TARGET_PROXY_NAME \ --target-https-proxy-region=us-west1 \ --project=SERVICE_PROJECT_A_ID
Dabei gilt:
HTTPS_FORWARDING_RULE_NAME
: Der Name der Weiterleitungsregel, die für die Verarbeitung von HTTPS-Traffic verwendet wird.
Testen Sie den Load-Balancer mit den unter Load-Balancer testen beschriebenen Schritten.
Terraform
Erstellen Sie die URL-Zuordnung:
Erstellen Sie den Zielproxy.
Bei HTTP
Bei HTTPS
Regionales SSL-Zertifikat erstellen
Mit dem regionalen SSL-Zertifikat einen Zielproxy erstellen
Erstellen Sie die Weiterleitungsregel.
Bei HTTP
Bei HTTPS
Testen Sie den Load-Balancer mit den unter Load-Balancer testen beschriebenen Schritten.
Dem Load-Balancer-Administrator die Berechtigungen erteilen, den Backend-Dienst zu verwenden
Wenn Load-Balancer auf Backend-Dienste in anderen Dienstprojekten verweisen sollen, muss der Load-Balancer-Administrator die Berechtigung compute.backendServices.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 Projektebene oder auf der Ebene eines einzelnen Backend-Dienstes zugewiesen werden.
Dieser Schritt ist nicht erforderlich, wenn Sie beim Erstellen des Backend-Dienstes bereits die erforderlichen Berechtigungen auf Backend-Dienstebene gewährt haben. Sie können entweder diesen Abschnitt überspringen oder weiterlesen, um zu erfahren, wie Sie Zugriff auf alle Backend-Dienste in diesem Projekt gewähren, damit Sie nicht bei jedem Erstellen eines neuen Backend-Dienstes Zugriff gewähren müssen.
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.backendServices.use
zu erteilen. Dies kann entweder auf Projektebene (für alle Backend-Dienste im Projekt) oder pro Backend-Dienst erfolgen.
Console
Berechtigungen auf Projektebene
Gehen Sie folgendermaßen vor, um allen Backend-Diensten in Ihrem Projekt Berechtigungen zu erteilen.
Sie benötigen die Berechtigungen compute.regionBackendServices.setIamPolicy
und resourcemanager.projects.setIamPolicy
, um diesen Schritt auszuführen.
Rufen Sie in der Google Cloud Console die Seite Freigegebene Load-Balancing-Dienste auf.
Wählen Sie im Abschnitt Alle Backend-Dienstberechtigungen (Berechtigungen auf Projektebene) Ihr Projekt aus.
Wenn das Feld "Berechtigungen" nicht sichtbar ist, klicken Sie auf Bereich "Berechtigungen" anzeigen. Der Bereich Berechtigungen auf Projektebene wird rechts geöffnet.
Klicken Sie auf
Hauptkonto hinzufügen.Geben Sie unter Neue Hauptkonten die E-Mail-Adresse oder die andere Kennung des Hauptkontos ein.
Wählen Sie unter Rolle die Rolle Nutzer von Compute-Load-Balancer-Diensten aus der Drop-down-Liste aus.
Optional: Fügen Sie der Rolle eine Bedingung hinzu.
Klicken Sie auf Speichern.
Berechtigungen auf Ressourcenebene für einzelne Backend-Dienste
Gehen Sie folgendermaßen vor, um einzelnen Backend-Diensten in Ihrem Projekt Berechtigungen zu erteilen.
Sie benötigen die Berechtigung compute.regionBackendServices.setIamPolicy
, um diesen Schritt auszuführen.
gcloud
Berechtigungen auf Projektebene
Gehen Sie folgendermaßen vor, um allen Backend-Diensten in Ihrem Projekt Berechtigungen zu erteilen.
Sie benötigen die Berechtigungen compute.regionBackendServices.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"
Berechtigungen auf Ressourcenebene für einzelne Backend-Dienste
Auf Backend-Dienstebene können Dienstprojektadministratoren einen der folgenden Befehle verwenden, um die Rolle „Nutzer von Compute-Load-Balancer-Diensten“ (roles/compute.loadBalancerServiceUser
) zuzuweisen.
Sie benötigen die Berechtigung compute.regionBackendServices.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/us-west1/backend-services/BACKEND_SERVICE_NAME",title=Shared VPC condition'
oder
gcloud compute backend-services add-iam-policy-binding BACKEND_SERVICE_NAME \ --member="user:LOAD_BALANCER_ADMIN" \ --role="roles/compute.loadBalancerServiceUser" \ --project=SERVICE_PROJECT_B_ID \ --region=us-west1
Wenn Sie diese Befehle verwenden möchten, ersetzen Sie LOAD_BALANCER_ADMIN
durch das Hauptkonto des Nutzers, z. B. test-user@gmail.com
.
IAM-Berechtigungen können von Ihnen mithilfe von Bedingungen und durch Angabe von Bedingungsattributen auch so konfiguriert werden, dass sie nur für einen Teil der regionalen Backend-Dienste gelten.
Nächste Schritte
- Sie können mithilfe von Einschränkungen für Organisationsrichtlinien einschränken, wie Funktionen von freigegebenen VPCs wie die projektübergreifende Dienstreferenz in Ihrem Projekt verwendet werden. Weitere Informationen finden Sie unter Einschränkungen für Organisationsrichtlinien für Cloud Load Balancing.
- Informationen zum Verwalten der Nur-Proxy-Subnetzressource, die für interne Application Load Balancer erforderlich ist, finden Sie unter Nur-Proxy-Subnetz für interne Application Load Balancer.
- Informationen zum Beheben von Problemen mit einem internen Application Load Balancer finden Sie unter Fehlerbehebung bei internen Application Load Balancern.
- Einrichtung des Load-Balancers bereinigen