Ein regionaler externer Proxy-Network-Load-Balancer ist ein proxy-basierter regionaler Layer-4-Load-Balancer, mit dem Sie Ihren TCP-Diensttraffic in einer einzelnen Region hinter einer externen regionalen IP-Adresse ausführen und skalieren können. Diese Load Balancer verteilen externen TCP-Traffic aus dem Internet an Back-Ends in derselben Region.
Bevor Sie beginnen, lesen Sie die Übersicht über externen Proxy-Network-Load-Balancer.
Diese Anleitung enthält eine Anleitung zum Einrichten eines regionalen externen Proxy-Network-Load-Balancers mit einem MIG-Backend (verwaltete Instanzgruppe). In diesem Beispiel konfigurieren Sie die im folgenden Diagramm dargestellte Bereitstellung.
In diesem Beispiel verwenden wir den Load-Balancer, um TCP-Traffic auf Back-End-VMs in zwei zonalen verwalteten Instanzgruppen in der Region A zu verteilen. Der Dienst besteht dabei aus einer Reihe von Apache, die für die Kommunikation über Port 110 konfiguriert sind. Für viele Browser ist Port 110 aber nicht zulässig. Daher wird im Testabschnitt curl verwendet.
Ein regionaler externer Proxy-Network-Load-Balancer ist ein regionaler Load-Balancer. Alle Load-Balancer-Komponenten müssen sich in derselben Region wie der Load Balancer befinden.
Berechtigungen
Damit Sie dieser Anleitung folgen können, müssen Sie in der Lage sein, Instanzen zu erstellen und ein Netzwerk in einem Projekt zu ändern. Sie müssen entweder Inhaber oder Bearbeiter des Projekts sein oder alle folgenden Compute Engine-IAM-Rollen innehaben.
| Aufgabe | Erforderliche Rolle |
|---|---|
| Netzwerke, Subnetze und Load-Balancer-Komponenten erstellen | Compute-Netzwerkadministrator
(roles/compute.networkAdmin) |
| Firewallregeln hinzufügen und löschen | Compute-Sicherheitsadministrator
(roles/compute.securityAdmin) |
| Instanzen erstellen | Compute-Instanzadministrator
(roles/compute.instanceAdmin) |
Weitere Informationen finden Sie in folgenden Leitfäden:
Optional: BYOIP-Adressen verwenden
Mit „Eigene IP-Adresse verwenden“ (Bring your own IP, BYOIP) können Sie Ihre eigenen öffentlichen Adressen inGoogle Cloud importieren, um sie mit Google Cloud -Ressourcen zu verwenden. Wenn Sie beispielsweise Ihre eigenen IPv4-Adressen importieren, können Sie der Weiterleitungsregel eine davon zuweisen, wenn Sie den Load-Balancer konfigurieren. Wenn Sie der Anleitung in diesem Dokument folgen, um den Load-Balancer zu konfigurieren, geben Sie die BYOIP-Adresse als IP-Adresse an.
Weitere Informationen zur Verwendung von BYOIP finden Sie unter Eigene IP-Adressen verwenden.
Netzwerk und Subnetze konfigurieren
Sie benötigen ein VPC-Netzwerk mit zwei Subnetzen: eines für die Back-Ends des Load-Balancers und eines für die Proxys des Load-Balancers. Dieser Load Balancer ist regional. Traffic innerhalb des VPC-Netzwerks wird an den Load-Balancer weitergeleitet, wenn sich die Quelle des Traffics in einem Subnetz in derselben Region wie der Load-Balancer befindet.
In diesem Beispiel werden das folgende VPC-Netzwerk, die folgende Region und die folgenden Subnetze verwendet:
Netzwerk: Ein VPC-Netzwerk im benutzerdefinierten Modus mit dem Namen
lb-networkSubnetz für Back-Ends:Ein Subnetz mit dem Namen
backend-subnetin Region A, das10.1.2.0/24für seinen primären IP-Adressbereich verwendet.Subnetz für Proxys:Ein Subnetz mit dem Namen
proxy-only-subnetin Region B, das10.129.0.0/23für seinen primären IP-Adressbereich verwendet.
Netzwerk und Subnetze erstellen
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.
Erstellen Sie ein Subnetz für die Back-Ends des Load-Balancers. Geben Sie im Bereich Neues Subnetz folgende Informationen ein:
- Name:
backend-subnet - Region:
REGION_A - IP-Adressbereich:
10.1.2.0/24
- Name:
Klicken Sie auf Fertig.
Klicken Sie auf Erstellen.
gcloud
Verwenden Sie zum Erstellen des benutzerdefinierten VPC-Netzwerks den Befehl
gcloud compute networks create:gcloud compute networks create lb-network --subnet-mode=custom
Verwenden Sie zum Erstellen eines Subnetzes im Netzwerk
lb-networkin der RegionREGION_Aden Befehlgcloud compute networks subnets create:gcloud compute networks subnets create backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=REGION_A
Nur-Proxy-Subnetz erstellen
Ein Nur-Proxy-Subnetz stellt eine Reihe von IP-Adressen bereit, die Google 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 Load-Balancern in Region A des VPC-Netzwerk lb-network verwendet.
Console
Wenn Sie die Google Cloud Console verwenden, können Sie das Nur-Proxy-Subnetz später auf der Seite Load-Balancing erstellen.
Führen Sie die folgenden Schritte aus, wenn Sie jetzt das Nur-Proxy-Subnetz erstellen möchten:
Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
Klicken Sie auf
lb-network, den Namen des VPC-Netzwerks.Klicken Sie auf Subnetz hinzufügen.
Geben Sie für Name
proxy-only-subnetein.Wählen Sie bei Region die Option
REGION_Aaus.Setzen Sie Zweck auf Regional verwalteter Proxy.
Geben Sie
10.129.0.0/23als IP-Adressbereich ein.Klicken Sie auf Hinzufügen.
gcloud
Verwenden Sie zum Erstellen des Nur-Proxy-Subnetzes den Befehl gcloud compute networks subnets
create:
gcloud compute networks subnets create proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=REGION_A \
--network=lb-network \
--range=10.129.0.0/23
Firewallregeln erstellen
In diesem Beispiel erstellen Sie die folgenden Firewallregeln:
fw-allow-ssh: Eine Regel für eingehenden Traffic, die für die Instanzen mit Load-Balancing gilt und eingehende SSH-Verbindungen über TCP-Port22von jeder Adresse aus ermöglicht. Sie können einen restriktiveren IP-Quellbereich für diese Regel auswählen. Geben Sie dazu beispielsweise nur die IP-Bereiche des Systems an, von dem aus Sie SSH-Sitzungen initiieren. In diesem Beispiel wird das Ziel-Tagallow-sshverwendet.fw-allow-health-check. Eine Ingress-Regel, die für die Instanzen mit Load-Balancing gilt und den gesamten TCP-Traffic aus den Google Cloud Bereichen für Systemdiagnose-Prüfungen zulässt. In diesem Beispiel wird das Ziel-Tagallow-health-checkverwendet.fw-allow-proxy-only-subnet. Eine Regel für eingehenden Traffic, die zulässt, dass Verbindungen vom Nur-Proxy-Subnetz die Back-Ends erreichen.
Ohne diese Firewallregeln blockiert die Standardregel zum Ablehnen von eingehendem Traffic den eingehenden Traffic zu den Backend-Instanzen.
Die Back-End-Instanzen werden von den Ziel-Tags definiert. Ohne die Ziel-Tags gelten die Firewallregeln für alle Ihre Backend-Instanzen im VPC-Netzwerk. Achten Sie beim Erstellen der Backend-VMs darauf, die angegebenen Ziel-Tags wie in Verwaltete Instanzgruppe erstellen beschrieben zu verwenden.
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 zulässt. Füllen Sie die folgenden Felder aus:
- 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.
Klicken Sie ein zweites Mal auf Firewallregel erstellen, um die Regel zum Zulassen vonGoogle Cloud -Systemdiagnosen zu erstellen:
- Name:
fw-allow-health-check - Netzwerk:
lb-network - Trafficrichtung: Eingehend
- Aktion bei Übereinstimmung: Zulassen
- Ziele: Angegebene Ziel-Tags
- Zieltags:
allow-health-check - Quellfilter: IPv4-Bereiche.
- Quell-IPv4-Bereiche:
35.191.0.0/16,130.211.0.0/22 Protokolle und Ports:
- Wählen Sie Angegebene Protokolle und Ports aus.
- Klicken Sie das Kästchen TCP an und geben Sie
80als Portnummer ein.
Sie sollten diese Regeln nur auf Protokolle und Ports beschränken, die mit den von Ihren Systemdiagnosen verwendeten übereinstimmen. Wenn Sie
tcp:80für das Protokoll und den Port verwenden,kann Google Cloud mit HTTP auf Port80Ihre VMs kontaktieren. Es kann jedoch nicht HTTPS auf Port443verwenden, um den Kontakt herzustellen.
- Name:
Klicken Sie auf Erstellen.
Klicken Sie ein drittes Mal auf Firewallregel erstellen, um die Regel zu erstellen, die Verbindungen von den Proxyservern des Load-Balancers zu den Back-Ends zulässt:
- Name:
fw-allow-proxy-only-subnet - Netzwerk:
lb-network - Trafficrichtung: Eingehend
- Aktion bei Übereinstimmung: Zulassen
- Ziele: Angegebene Ziel-Tags
- Zieltags:
allow-proxy-only-subnet - Quellfilter: IPv4-Bereiche.
- IPv4-Quellbereiche:
10.129.0.0/23 - Protokolle und Ports:
- Wählen Sie Angegebene Protokolle und Ports aus.
- Setzen Sie das Häkchen für TCP und geben Sie als Portnummer
80ein.
- 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 Siesource-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:22Erstellen Sie die Regel
fw-allow-health-check, um Google Cloud-Systemdiagnosen zuzulassen. In diesem Beispiel wird der gesamte TCP-Traffic von Systemdiagnosetests 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=35.191.0.0/16,130.211.0.0/22\ --target-tags=allow-health-check \ --rules=tcp:80Erstellen Sie die Regel
fw-allow-proxy-only-subnet, um Verbindungen von den Envoy-Proxys der Region zu Ihren Back-Ends zuzulassen. Legen Sie für--source-rangesdie zugewiesenen Bereiche des Nur-Proxy-Subnetzes fest, in diesem Beispiel10.129.0.0/23.gcloud compute firewall-rules create fw-allow-proxy-only-subnet \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.129.0.0/23 \ --target-tags=allow-proxy-only-subnet \ --rules=tcp:80
IP-Adresse des Load-Balancers reservieren
Reservieren Sie eine statische IP-Adresse für den Load-Balancer.
Console
Rufen Sie in der Google Cloud Console die Seite Statische Adresse reservieren auf.
Wählen Sie einen Namen für die neue Adresse.
Wählen Sie für Netzwerkdienststufe die Option Standard aus.
Setzen Sie die IP-Version auf IPv4. IPv6-Adressen werden nicht unterstützt.
Wählen Sie unter Typ die Option Regional aus.
Wählen Sie bei Region die Option
REGION_Aaus.Ü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
Verwenden Sie den Befehl
gcloud compute addresses create, um eine statische externe IP-Adresse zu reservieren:gcloud compute addresses create ADDRESS_NAME \ --region=REGION_A \ --network-tier=STANDARDErsetzen Sie dabei
ADDRESS_NAMEdurch den Namen, mit dem Sie diese Adresse bezeichnen möchten.Verwenden Sie den Befehl
gcloud compute addresses describe, um das Ergebnis anzeigen zu lassen:gcloud compute addresses describe ADDRESS_NAME
Erstellen Sie eine verwaltete Instanzgruppe.
In diesem Abschnitt erfahren Sie, wie Sie zwei Back-Ends der verwalteten Instanzgruppe (MIG) in der Region A für den Load-Balancer erstellen. Die MIG stellt VM-Instanzen bereit, auf denen die Backend-Apache-Server in diesem Beispiel ausgeführt werden. In der Regel wird ein regionaler externer Proxy-Network-Load-Balancer nicht für HTTP-Traffic verwendet. Apache-Software wird jedoch häufig zum Testen verwendet.
Console
Instanzvorlage erstellen
Rufen Sie in der Google Cloud Console die Seite Instanzvorlagen auf.
Klicken Sie auf Instanzvorlage erstellen.
Geben Sie für Name
ext-reg-tcp-proxy-backend-templateein.Das Bootlaufwerk sollte auf ein Debian-Image wie Debian GNU/Linux 12 (bookworm) eingestellt sein. Diese Anleitungen verwenden Befehle, die nur für Debian verfügbar sind, z. B.
apt-get.Klicken Sie auf Erweiterte Optionen.
Klicken Sie auf Netzwerk und konfigurieren Sie die folgenden Felder:
- Geben Sie für Netzwerk-Tags
allow-ssh,allow-health-checkundallow-proxy-only-subnetein. - Wählen Sie für Netzwerkschnittstellen Folgendes aus:
- Netzwerk:
lb-network - Subnetz:
backend-subnet
- Netzwerk:
- Geben Sie für Netzwerk-Tags
Klicken Sie auf Verwaltung. Fügen Sie im Feld Startskript das nachfolgende Skript 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 MIG mit zustandsorientierten Laufwerken erstellen.
Geben Sie für Name
mig-aein.Wählen Sie für Standort die Option Einzelne Zone aus.
Wählen Sie bei Region die Option
REGION_Aaus.Wählen Sie bei Zone die Option
ZONE_Aaus.Wählen Sie bei Instanzvorlage die Option
ext-reg-tcp-proxy-backend-templateaus.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 autoscaleaus. - Geben Sie für Maximale Anzahl von Instanzen den Wert
2ein.
- Wählen Sie für Autoscaling-Modus
Klicken Sie im Abschnitt Portzuordnung auf Port hinzufügen.
- Geben Sie als Portname
tcp80ein. - Geben Sie für Portnummer
80ein.
- Geben Sie als Portname
Klicken Sie auf Erstellen.
Zum Erstellen einer zweiten verwalteten Instanzgruppe wiederholen Sie die Schritte unter Verwaltete Instanzgruppe erstellen und verwenden dabei die folgenden Einstellungen:
- Name:
mig-b - Zone:
ZONE_B
Behalten Sie alle anderen Einstellungen bei.
- Name:
gcloud
Bei der Anleitung für die Google Cloud CLI in diesem Leitfaden wird davon ausgegangen, dass Sie Cloud Shell oder eine andere Umgebung verwenden, in der bash installiert ist.
Verwenden Sie zum Erstellen einer VM-Instanzvorlage mit HTTP-Server den Befehl
gcloud compute instance-templates create:gcloud compute instance-templates create ext-reg-tcp-proxy-backend-template \ --region=REGION_A \ --network=lb-network \ --subnet=backend-subnet \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --image-family=debian-12 \ --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'Erstellen Sie eine verwaltete Instanzgruppe in der Zone
ZONE_A:gcloud compute instance-groups managed create mig-a \ --zone=ZONE_A \ --size=2 \ --template=ext-reg-tcp-proxy-backend-templateErstellen Sie eine verwaltete Instanzgruppe in der Zone
ZONE_B.gcloud compute instance-groups managed create mig-b \ --zone=ZONE_B \ --size=2 \ --template=ext-reg-tcp-proxy-backend-template
Load-Balancer konfigurieren
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 Network Load Balancer (TCP/UDP/SSL) aus und klicken Sie auf Weiter.
- Wählen Sie unter Proxy oder Passthrough die Option Proxy-Load Balancer aus und klicken Sie auf Weiter.
- Wählen Sie für Öffentlich oder intern die Option Öffentlich (extern) aus, und klicken Sie auf Weiter.
- Wählen Sie unter Globale 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 für Name
my-ext-tcp-lbein. - Wählen Sie bei Region die Option
REGION_Aaus. - Wählen Sie für Netzwerk die Option
lb-networkaus.
Nur-Proxy-Subnetz reservieren
- Klicken Sie auf Reservieren.
- Geben Sie im Feld Name
proxy-only-subnetein. - Geben Sie im Feld IP-Adressbereich den Wert
10.129.0.0/23ein. - Klicken Sie auf Hinzufügen.
Back-Ends konfigurieren
- Klicken Sie auf Backend-Konfiguration.
- Wählen Sie in der Liste Backend-Typ die Option Instanzgruppe aus.
- Wählen Sie in der Liste Protokoll die Option TCP aus.
- Geben Sie im Feld Benannter Port
tcp80ein. - Systemdiagnose konfigurieren:
- Wählen Sie in der Liste Systemdiagnose die Option Systemdiagnose erstellen aus.
- Geben Sie im Feld Name
tcp-health-checkein. - Wählen Sie in der Liste Protokoll die Option TCP aus.
- Geben Sie im Feld Port den Wert
80ein. - Klicken Sie auf Erstellen.
- Configure the first backend:
- Wählen Sie für Neues Backend die Instanzgruppe
mig-aaus. - Geben Sie unter Portnummern
80ein. - Übernehmen Sie die verbleibenden Standardwerte und klicken Sie dann auf Fertig.
- Wählen Sie für Neues Backend die Instanzgruppe
- Configure the second backend:
- Klicken Sie auf Backend hinzufügen.
- Wählen Sie für Neues Backend die Instanzgruppe
mig-baus. - Geben Sie unter Portnummern
80ein. - Behalten Sie die verbleibenden Standardwerte bei und klicken Sie dann auf Fertig.
- Übernehmen Sie die verbleibenden Standardwerte und klicken Sie dann auf Speichern.
- Prüfen Sie in der Google Cloud -Konsole, ob neben Backend-Konfiguration ein Häkchen angezeigt wird. Ist dies nicht der Fall, prüfen Sie, ob Sie alle Schritte ausgeführt haben.
Frontend konfigurieren
- Klicken Sie auf Frontend-Konfiguration.
- Geben Sie für Name
ext-reg-tcp-forwarding-ruleein. - Wählen Sie für Netzwerkdienststufe die Option Standard aus.
- Wählen Sie unter IP-Adresse die zuvor reservierte IP-Adresse aus: LB_IP_ADDRESS
- Geben Sie für Portnummer
110ein. Die Weiterleitungsregel leitet nur Pakete mit einem übereinstimmenden Zielport weiter. - Wählen Sie Aus für Proxyprotokoll aus, da das Proxyprotokoll nicht mit der Apache HTTP Server-Software funktioniert. Weitere Informationen finden Sie unter Proxyprotokoll.
- Klicken Sie auf Fertig.
- Prüfen Sie in der Google Cloud Console, ob neben Frontend-Konfiguration ein Häkchen angezeigt wird. Ist dies nicht der Fall, prüfen Sie, ob Sie alle vorherigen Schritte ausgeführt haben.
Überprüfen und abschließen
- Klicken Sie auf Überprüfen und abschließen.
- Prüfen Sie die Konfigurationseinstellungen des Load-Balancers.
- Optional: Klicken Sie auf Entsprechender Code, um die REST API-Anfrage aufzurufen, die zum Erstellen des Load-Balancers verwendet wird.
- Klicken Sie auf Erstellen.
gcloud
Erstellen Sie eine regionale Systemdiagnose.
gcloud compute health-checks create tcp tcp-health-check \ --region=REGION_A \ --use-serving-portErstellen Sie einen Backend-Dienst.
gcloud compute backend-services create ext-reg-tcp-proxy-bs \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=TCP \ --port-name=tcp80 \ --region=REGION_A \ --health-checks=tcp-health-check \ --health-checks-region=REGION_AFügen Sie Instanzgruppen zu Ihrem Backend-Dienst hinzu:
gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \ --region=REGION_A \ --instance-group=mig-a \ --instance-group-zone=ZONE_A \ --balancing-mode=UTILIZATION \ --max-utilization=0.8gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \ --region=REGION_A \ --instance-group=mig-b \ --instance-group-zone=ZONE_B \ --balancing-mode=UTILIZATION \ --max-utilization=0.8Erstellen Sie einen Ziel-TCP-Proxy:
gcloud compute target-tcp-proxies create ext-reg-tcp-target-proxy \ --backend-service=ext-reg-tcp-proxy-bs \ --proxy-header=NONE \ --region=REGION_AWenn Sie den Proxyheader aktivieren möchten, legen Sie
PROXY_V1anstelle vonNONEfest. Aktivieren Sie in diesem Beispiel das Proxyprotokoll nicht, da es mit der Apache HTTP Server-Software nicht funktioniert. Weitere Informationen finden Sie unter Proxyprotokoll.Erstellen Sie die Weiterleitungsregel. Geben Sie für
--portseine einzelne Portnummer zwischen 1 und 65535 an. In diesem Beispiel wird Port110verwendet. Die Weiterleitungsregel leitet nur Pakete mit einem übereinstimmenden Zielport weiter.gcloud compute forwarding-rules create ext-reg-tcp-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=lb-network \ --region=REGION_A \ --target-tcp-proxy=ext-reg-tcp-target-proxy \ --target-tcp-proxy-region=REGION_A \ --address=LB_IP_ADDRESS \ --ports=110
Load-Balancer testen
Nachdem Sie den Load-Balancer konfiguriert haben, können Sie Traffic zum Testen an die IP-Adresse des Load-Balancers senden.
Rufen Sie die IP-Adresse des Load-Balancers ab.
Führen Sie den folgenden Befehl aus, um die IPv4-Adresse abzurufen:
gcloud compute addresses describe ADDRESS_NAME
Senden Sie den Traffic mit folgendem Befehl an Ihren Load-Balancer. Ersetzen Sie
LB_IP_ADDRESSdurch die IPv4-Adresse des Load-Balancers:curl -m1 LB_IP_ADDRESS:9090
Zusätzliche Konfigurationsoptionen
In diesem Abschnitt wird die Konfiguration des Beispiels um alternative und zusätzliche Optionen erweitert. Alle Aufgaben sind optional. Sie können sie in beliebiger Reihenfolge ausführen.
Load-Balancer mit TLS-Routen erstellen
In diesem Abschnitt erfahren Sie, wie Sie einen Load Balancer erstellen, der SNI-basiertes Routing verwenden kann. Mit SNI-basiertem Routing können Ihre Proxy-Netzwerk-Load-Balancer Traffic anhand des SNI-Hostnamens (Server Name Indication) weiterleiten, der während des TLS-Handshake angegeben wird.
Für diesen Load Balancer verwenden wir dieselben Netzwerke, Subnetze und Firewallregeln, die zuvor auf dieser Seite erstellt wurden. Sie konfigurieren die im folgenden Diagramm dargestellte Bereitstellung:
Backend einer verwalteten Instanzgruppe erstellen
In diesem Abschnitt erfahren Sie, wie Sie Back-Ends für verwaltete Instanzgruppen (MIGs) für den Load Balancer erstellen. Die MIG stellt VM-Instanzen bereit, auf denen die Backend-Server für dieses Beispiel ausgeführt werden.
Bei der Anleitung für die Google Cloud CLI in diesem Leitfaden wird davon ausgegangen, dass Sie Cloud Shell oder eine andere Umgebung verwenden, in der bash installiert ist.
Erstellen Sie eine Instanzvorlage mit einem HTTPS-Dienst vom Typ „echo“, der über Port 443 verfügbar gemacht wird.
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --region=REGION_A \ --network=NETWORK \ --subnet=SUBNET_A \ --stack-type=IPv4_ONLY \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash sudo sed -i "s/^#DNS=.*/DNS=8.8.8.8 8.8.4.4/" /etc/systemd/resolved.conf sudo systemctl restart systemd-resolved sudo rm -rf /var/lib/apt/lists/* sudo apt-get -y clean sudo apt-get -y update sudo apt-get -y install ca-certificates curl gnupg software-properties-common sudo curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - sudo add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" sudo apt-get -y update sudo apt-get -y install docker-ce sudo which docker echo "{ \"registry-mirrors\": [\"https://mirror.gcr.io\"] }" | sudo tee -a /etc/docker/daemon.json sudo service docker restart sudo docker run -e HTTPS_PORT=9999 -p 443:9999 --rm -dt mendhak/http-https-echo:22'Ersetzen Sie Folgendes:
INSTANCE_TEMPLATE_NAME: ein Name für die Instanzvorlage.REGION_A: die Region für die Instanzvorlage.NETWORK: Der Name des Netzwerks.SUBNET_A: der Name des Subnetzwerks.
Erstellen Sie anhand der Instanzvorlage eine verwaltete Instanzgruppe:
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --zone=ZONE_A \ --size=2 \ --template=INSTANCE_TEMPLATE_NAME
Ersetzen Sie
ZONE_Adurch die Zone der Instanzgruppe.Legen Sie den Namen des Bereitstellungsports für die verwaltete Instanzgruppe fest:
gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP_NAME \ --named-ports=PORT_NAME:PORT_NUMBER \ --zone=ZONE_A
Ersetzen Sie Folgendes:
PORT_NAME: Ein Name für den Serving-Port, z. B.tcp443.PORT_NUMBER: Eine Portnummer für den Bereitstellungsport, z. B.443.
Firewall konfigurieren
Konfigurieren Sie eine Firewallregel, um Traffic vom Load Balancer und von den Systemdiagnoseprüfungen zu den Backend-Instanzen zuzulassen.
gcloud compute firewall-rules create FIREWALL_RULE_NAME \
--network=NETWORK \
--action=allow \
--direction=ingress \
--source-ranges=35.191.0.0/16,130.211.0.0/22 \
--target-tags=allow-health-check \
--rules=tcp:443
Ersetzen Sie FIREWALL_RULE_NAME durch einen Namen für die Firewallregel.
Load-Balancer konfigurieren
Erstellen Sie eine HTTPS-Systemdiagnose:
gcloud compute health-checks create http HTTPS_HEALTH_CHECK_NAME \ --region=REGION_A \ --port=HC_PORTErsetzen Sie Folgendes:
HTTPS_HEALTH_CHECK_NAME: Ein Name für die Systemdiagnose.HC_PORT: der Port für die Systemdiagnose, z. B.443.REGION_A: die Region für die Systemdiagnose.
Erstellen Sie einen Backend-Dienst.
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=TCP \ --port-name=PORT_NAME \ --health-checks=HTTPS_HEALTH_CHECK_NAME \ --health-checks-region=REGION_A \ --region=REGION_AErsetzen Sie Folgendes:
BACKEND_SERVICE_NAME: Ein Name für den Backend-Dienst.PORT_NAME: der Portname für den Backend-Dienst. Verwenden Sie denselben benannten Port, der für die Instanzgruppe konfiguriert ist, z. B.tcp443.HTTPS_HEALTH_CHECK_NAME: Der Name der HTTPS-Systemdiagnose.
Fügen Sie die Backend-Instanzgruppe Ihrem Backend-Dienst hinzu:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 --instance-group=INSTANCE_GROUP_NAME \ --instance-group-zone=ZONE_A \ --region=REGION_AErsetzen Sie Folgendes:
INSTANCE_GROUP_NAME: Der Name der Backend-Instanzgruppe.ZONE_A: Zone der Instanzgruppe.
Erstellen Sie einen Ziel-TCP-Proxy.
gcloud beta compute target-tcp-proxies create TARGET_TCP_PROXY_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --proxy-header=NONE \ --region=REGION_AErsetzen Sie
TARGET_TCP_PROXY_NAMEdurch den Namen des Ziel-TCP-Proxys.Erstellen Sie eine TLS-Routenspezifikation und speichern Sie sie in einer YAML-Datei.
cat <<EOF | tee YAML_FILE_NAME name: TLS_ROUTE_NAME targetProxies: - projects/PROJECT_NUMBER/locations/REGION_A/targetTcpProxies/TARGET_TCP_PROXY rules: - matches: - sniHost: - example.com action: destinations: - serviceName: projects/PROJECT_NUMBER/locations/REGION_A/backendServices/BACKEND_SERVICE_NAME EOFErsetzen Sie Folgendes:
YAML_FILE_NAME: Ein Name für die YAML-Datei, z. B.tls-route.yaml.TLS_ROUTE_NAME: ein Name für die TLS-Route.PROJECT_NUMBER: die Projektnummer
Erstellen Sie die TLS-Routenressource mit der YAML-Spezifikationsdatei.
gcloud network-services tls-routes import TLS_ROUTE_NAME \ --source=YAML_FILE_NAME \ --location=REGION_A
Erstellen Sie die Weiterleitungsregel.
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=NETWORK \ --region=REGION_A \ --target-tcp-proxy=TARGET_TCP_PROXY_NAME \ --target-tcp-proxy-region=REGION_A \ --address=IP_ADDRESS \ --ports=PORT_NUMBER
Ersetzen Sie Folgendes:
FORWARDING_RULE_NAMEist ein Name für die Weiterleitungsregel.NETWORK: Der Name des Netzwerks.SUBNET_A: der Name des Subnetzwerks in derselben Region wie der Load-Balancer.IP_ADDRESS: die IP-Adresse des Load-Balancers.PORT_NUMBER: Der von der Weiterleitungsregel verwendete Port, z. B.443.
Load-Balancer testen
Nachdem Sie den Load-Balancer konfiguriert haben, können Sie Traffic zum Testen an die IP-Adresse des Load-Balancers senden.
Prüfen Sie, ob Sie über den Load-Balancer auf den HTTPS-Dienst zugreifen können.
curl https://example.com --resolve example.com:443:IP_ADDRESS -k
Der Befehl sollte eine Antwort von einer der VMs in der verwalteten Instanzgruppe zurückgeben, wobei der Hostname an die Console ausgegeben wird.
"path": "/", "headers": { "host": "example.com", "user-agent": "curl/7.81.0", "accept": "*/*" }, "method": "GET", "body": "", "fresh": false, "hostname": "example.com", "ip": "::ffff:10.142.0.2", "ips": [], "protocol": "https", "query": {}, "subdomains": [], "xhr": false, "os": { "hostname": "0cd3aec9b351" }, "connection": { "servername": "example.com" }Sie können das weiter überprüfen, indem Sie einen anderen SNI-Hostnamen angeben, der nicht mit einer TLS-Route übereinstimmt, oder indem Sie überhaupt keinen SNI-Hostnamen angeben. In diesem Fall wird die Anfrage verworfen.
- Führen Sie einen Test mit einem SNI-Hostname aus, der nicht mit „example.com“ übereinstimmt, um sicherzustellen, dass die Verbindung abgelehnt wird.
curl https://unknown.com --resolve unknown.com:443:IP_ADDRESS -k
- Führen Sie einen Test mit einer Nur-Text-Verbindung ohne TLS durch, um sicherzustellen, dass die Verbindung abgelehnt wird.
curl example.com:443 --resolve example.com:443:IP_ADDRESS -k
Diese Befehle geben den folgenden Fehler zurück.
curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection
Der Fehlercode
connection_refusedwird in denproxyStatus-Logs angezeigt, wenn der Load-Balancer solche ungültigen Verbindungen ablehnt.
Sitzungsaffinität aktivieren
Die Beispielkonfiguration erstellt einen Backend-Dienst ohne Sitzungsaffinität.
Diese Verfahren zeigen, wie Sie einen Backend-Dienst für den vorher erstellten Beispiel-Load-Balancer aktualisieren, damit der Backend-Dienst die Client-IP-Affinität oder Cookie-Affinität verwendet.
Wenn die Client-IP-Affinität aktiviert ist, leitet der Load-Balancer die Anfragen eines bestimmten Clients anhand eines Hashs, der aus der IP-Adresse des Clients und der IP-Adresse des Load-Balancers (der internen IP-Adresse einer internen Weiterleitungsregel) erstellt wurde, an dieselbe Backend-VM weiter.
Führen Sie die folgenden Schritte aus, um die Client-IP-Sitzungsaffinität zu aktivieren.
Console
Rufen Sie in der Google Cloud Console die Seite Load Balancing auf.
Klicken Sie auf Back-Ends.
Klicken Sie auf
ext-reg-tcp-proxy-bs(Name des Backend-Dienstes, den Sie für dieses Beispiel erstellt haben) und dann auf Bearbeiten.Klicken Sie auf der Seite Backend-Dienstdetails auf Erweiterte Konfiguration.
Wählen Sie unter Sitzungsaffinität die Option Client-IP aus.
Klicken Sie auf Aktualisieren.
gcloud
Verwenden Sie den Befehl gcloud compute backend-services update ext-reg-tcp-proxy-bs, um den Backend-Dienst ext-reg-tcp-proxy-bs zu aktualisieren und die Client-IP-Sitzungsaffinität anzugeben:
gcloud compute backend-services update ext-reg-tcp-proxy-bs \
--region=REGION_A \
--session-affinity=CLIENT_IP
Nächste Schritte
- Proxy-Network Load Balancer in IPv6 konvertieren
- Übersicht über externen Proxy-Network-Load-Balancer
- Logging und Monitoring für Proxy-Network-Load-Balancer
- Einrichtung des Load-Balancers bereinigen