Auf dieser Seite finden Sie eine Anleitung zum Erstellen interner Netzwerk-Load-Balancer für das Load-Balancing von Traffic für mehrere Protokolle.
Um einen Load-Balancer für mehrere Protokolle zu konfigurieren, einschließlich TCP und UDP, erstellen Sie eine Weiterleitungsregel mit dem auf L3_DEFAULT
gesetzten Protokoll. Diese Weiterleitungsregel verweist auf einen Backend-Dienst, für den das Protokoll auf UNSPECIFIED
gesetzt ist.
In diesem Beispiel verwenden wir einen internen Passthrough-Netzwerk-Load-Balancer, um den Traffic auf eine Backend-VM in der Region us-west1
zu verteilen. Der Load-Balancer hat eine Weiterleitungsregel mit dem Protokoll L3_DEFAULT
, um TCP, UDP, ICMP, ICMPv6, SCTP, ESP, AH und GRE zu verarbeiten.
Hinweise
- Installieren Sie die Google Cloud CLI. Eine vollständige Übersicht über das Tool finden Sie im Leitfaden zur gcloud CLI. Befehle für das Load-Balancing finden Sie in den Referenzen zur API und zur gcloud CLI.
Wenn Sie die gcloud CLI noch nicht ausgeführt haben, führen Sie zuerst den Befehl
gcloud init
zur Authentifizierung aus. - Mehr über Bash erfahren
Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen dieser Anleitung benötigen:
- So erstellen Sie Load-Balancer-Ressourcen:
Administrator für Compute-Load-Balancer (
roles/compute.loadBalancerAdmin
) - So erstellen Sie Compute Engine-Instanzen und Instanzgruppen:
Compute-Instanzadministrator (
roles/compute.instanceAdmin.v1
) - So erstellen Sie Netzwerkkomponenten:
Compute-Netzwerkadministrator (
roles/compute.networkAdmin
)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Load-Balancer für L3_DEFAULT-Traffic einrichten
Die Schritte in diesem Abschnitt beschreiben die folgenden Konfigurationen:
- Ein Beispiel, das ein VPC-Netzwerk im benutzerdefinierten Modus namens
lb-network
verwendet. Sie können ein Netzwerk im automatischen Modus verwenden, wenn Sie nur IPv4-Traffic verarbeiten möchten. Für IPv6-Traffic ist jedoch ein Subnetz im benutzerdefinierten Modus erforderlich. - Ein Single-Stack-Subnetz (
stack-type
ist aufIPv4
gesetzt), das für IPv4-Traffic erforderlich ist. Beim Erstellen eines Single-Stack-Subnetzes in einem VPC-Netzwerk im benutzerdefinierten Modus wählen Sie einen IPv4-Subnetzbereich für das Subnetz aus. Für IPv6-Traffic benötigen wir außerdem ein Dual-Stack-Subnetz (stack-type
ist aufIPv4_IPv6
gesetzt). Wenn Sie ein Dual-Stack-Subnetz in einem VPC-Netzwerk im benutzerdefinierten Modus erstellen, wählen Sie einen IPv6-Zugriffstyp für das Subnetz aus. In diesem Beispiel setzen wir den Parameteripv6-access-type
des Subnetzes aufINTERNAL
. Dies bedeutet, dass neuen VMs in diesem Subnetz sowohl interne IPv4- als auch interne IPv6-Adressen zugewiesen werden können. - Firewall-Regeln, die eingehende Verbindung zu Backend-VMs ermöglichen
- The backend instance group and the load balancer components used for this
example are located in this region and subnet:
- Region:
us-west1
- Subnetz:
lb-subnet
, mit primärem IPv4-Adressbereich10.1.2.0/24
. Obwohl Sie auswählen, welcher IPv4-Adressbereich im Subnetz konfiguriert wurde, wird der IPv6-Adressbereich automatisch zugewiesen. Google bietet einen (/64) IPv6-CIDR-Block mit fester Größe.
- Region:
- Eine Backend-VM in einer verwalteten Instanzgruppe in Zone
us-west1-a
. - Eine Client-VM zum Testen von Verbindungen zu den Back-Ends.
- Einen internen Passthrough-Netzwerk-Load-Balancer mit den folgenden Komponenten:
- Eine Systemdiagnose für den Backend-Dienst.
- Ein Backend-Dienst in der Region
us-west1
, bei dem das Protokoll aufUNSPECIFIED
gesetzt ist, um die Verbindungsverteilung zur zonalen Instanzgruppe zu verwalten. - Für eine Weiterleitungsregel mit dem Protokoll
L3_DEFAULT
und dem PortALL
.
Netzwerk, Region und Subnetz konfigurieren
Aktivieren Sie einen internen IPv6-Bereich des VPC-Netzwerks (Virtual Private Cloud), um Subnetze mit internen IPv6-Bereichen zu konfigurieren. Interne IPv6-Subnetzbereiche werden aus diesem Bereich zugewiesen. So erstellen Sie das Beispielnetzwerk und das Subnetz:
Console
Führen Sie die folgenden Schritte aus, um IPv4- und IPv6-Traffic zu unterstützen:
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.Führen Sie die folgenden Schritte aus, um interne IPv6-Adressbereiche in Subnetzen in diesem Netzwerk zu konfigurieren:
- Wählen Sie für Interner VPC-Netzwerk-IPv6-ULA-Bereich den Wert Aktiviert aus.
- Wählen Sie unter Internen IPv6-Bereich zuweisen die Option Automatisch oder Manuell aus.
Wählen Sie unter Modus für Subnetzerstellung die Option Benutzerdefiniert aus.
Legen Sie im Abschnitt Neues Subnetz folgende Konfigurationsparameter für das Subnetz fest:
- Geben Sie für Name
lb-subnet
ein. - Wählen Sie bei Region die Option
us-west1
aus. - Wählen Sie zum Erstellen eines Dual-Stack-Subnetzes für IP-Stack-Typ IPv4 und IPv6 (Dual-Stack) aus.
- Geben Sie unter IPv4-Bereich
10.1.2.0/24
ein. - Wählen Sie für Zugriffstyp IPv6 die Option Intern aus.
- Geben Sie für Name
Klicken Sie auf Fertig.
Klicken Sie auf Erstellen.
Führen Sie die folgenden Schritte aus, um IPv4-Traffic zu unterstützen:
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-subnet
- Region:
us-west1
- IP-Stack-Typ: IPv4 (Einzel-Stack)
- IP-Adressbereich:
10.1.2.0/24
- Name:
- Klicken Sie auf Fertig.
Klicken Sie auf Erstellen.
gcloud
Verwenden Sie für IPv4- und IPv6-Traffic den folgenden Befehl:
Führen Sie den
gcloud compute networks create
-Befehl aus, um ein neues VPC-Netzwerk im benutzerdefinierten Modus zu erstellen.Verwenden Sie das
--enable-ula-internal-ipv6
-Flag, um interne IPv6-Bereiche in allen Subnetzen dieses Netzwerks zu konfigurieren. Mit dieser Option wird ein ULA-Präfix/48
aus dem Bereichfd20::/20
zugewiesen, der von Google Cloud für interne IPv6-Subnetzbereiche verwendet wird.gcloud compute networks create lb-network \ --subnet-mode=custom \ --enable-ula-internal-ipv6
Erstellen Sie in
lb-network
ein Subnetz für Back-Ends in der Regionus-west1
.Führen Sie den
gcloud compute networks subnets create
-Befehl aus, um die Subnetze zu erstellen.gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1 \ --stack-type=IPV4_IPV6 --ipv6-access-type=INTERNAL
Verwenden Sie für nur IPv4-Traffic die folgenden Befehle:
Verwenden Sie zum Erstellen des benutzerdefinierten VPC-Netzwerks den
gcloud compute networks create
-Befehl:gcloud compute networks create lb-network --subnet-mode=custom
Verwenden Sie den Befehl
gcloud compute networks subnets create
, um das Subnetz für Back-Ends in der Regionus-west1
im Netzwerklb-network
zu erstellen.gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
API
Verwenden Sie für IPv4- und IPv6-Traffic den folgenden Befehl:
Erstellen Sie ein neues VPC-Netzwerk im benutzerdefinierten Modus: Stellen Sie eine
POST
-Anfrage an die Methodenetworks.insert
.Zum Konfigurieren interner IPv6-Bereiche in allen Subnetzen dieses Netzwerks legen Sie
enableUlaInternalIpv6
auftrue
fest. Mit dieser Option wird der Bereich/48
aus dem Bereichfd20::/20
zugewiesen, der von Google für interne IPv6-Subnetzbereiche verwendet wird.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "autoCreateSubnetworks": false, "name": "lb-network", "mtu": MTU, "enableUlaInternalIpv6": true, }
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID des Projekts, in dem das VPC-Netzwerk erstellt wird.MTU
ist die maximale Übertragungseinheit des Netzwerks MTU kann entweder1460
(Standardeinstellung) oder1500
sein. Lesen Sie die maximale Übertragungseinheit, bevor Sie die MTU auf1500
setzen.
Stellen Sie eine
POST
-Anfrage an die Methodesubnetworks.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "ipCidrRange": "10.1.2.0/24", "network": "lb-network", "name": "lb-subnet" "stackType": IPV4_IPV6, "ipv6AccessType": Internal }
Verwenden Sie für nur IPv4-Traffic die folgenden Schritte:
Stellen Sie eine
POST
-Anfrage an die Methodenetworks.insert
. Ersetzen SiePROJECT_ID
durch die ID Ihres Google Cloud-Projekts.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "name": "lb-network", "autoCreateSubnetworks": false }
Stellen Sie zwei
POST
-Anfragen an die Methodesubnetworks.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks { "name": "lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "ipCidrRange": "10.1.2.0/24", "privateIpGoogleAccess": false }
Firewallregeln konfigurieren
In diesem Beispiel werden die folgenden Firewallregeln verwendet:
fw-allow-lb-access
: Eine Eingangsregel, die für alle Ziele im VPC-Netzwerk gilt und Traffic von Quellen in den Bereichen10.1.2.0/24
zulässt. Durch diese Regel wird eingehender Traffic von jedem Client im Subnetz zugelassen.fw-allow-lb-access-ipv6
: Eine Regel für eingehenden Traffic, die für alle Ziele im VPC-Netzwerk gilt und Traffic von Quellen im IPv6-Bereich im Subnetz zulässt. Durch diese Regel wird eingehender IPv6-Traffic von jedem Client im Subnetz zugelassen.fw-allow-ssh
: Eine Regel für eingehenden Traffic, die für die Instanzen mit Load-Balancing gilt und eingehende SSH-Verbindungen an TCP-Port 22 von 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-ssh
verwendet, um die VMs zu identifizieren, auf die sie angewendet werden soll.fw-allow-health-check
: Eine Regel für eingehenden Traffic, die für die Instanzen mit Load-Balancing gilt und Traffic von den Google Cloud-Systemen für Systemdiagnosen zulässt (130.211.0.0/22
und35.191.0.0/16
). In diesem Beispiel wird das Ziel-Tagallow-health-check
verwendet, um die Instanzen zu identifizieren, auf die sie angewendet werden soll.fw-allow-health-check-ipv6
: Eine Regel für eingehenden Traffic, die für die Instanzen mit Load-Balancing gilt und Traffic von den Google Cloud-Systemen für Systemdiagnosen zulässt (2600:2d00:1:b029::/64
). In diesem Beispiel wird das Ziel-Tagallow-health-check-ipv6
verwendet, um die Instanzen zu identifizieren, auf die sie angewendet werden soll.
Ohne diese Firewallregeln blockiert die Standardregel zum Ablehnen von eingehendem Traffic den eingehenden Traffic zu den Backend-Instanzen.
Console
Rufen Sie in der Google Cloud Console die Seite der Firewall-Richtlinien auf.
So lassen Sie zu, dass IPv4-TCP-, UDP- und ICMP-Traffic die Backend-Instanzgruppe
ig-a
erreicht:- Klicken Sie auf Firewallregel erstellen.
- Name:
fw-allow-lb-access
- Netzwerk:
lb-network
- Priorität:
1000
- Trafficrichtung: Eingehend
- Aktion bei Übereinstimmung: Zulassen
- Ziele: Alle Instanzen im Netzwerk
- Quellfilter: IPv4-Bereiche.
- IPv4-Quellbereiche:
10.1.2.0/24
- Wählen Sie unter Protokolle und Ports die Option Angegebene Protokolle und Ports aus.
- Wählen Sie TCP aus und geben Sie
ALL
ein. - Wählen Sie UDP aus.
- Wählen Sie Andere aus und geben Sie
ICMP
ein.
- Wählen Sie TCP aus und geben Sie
Klicken Sie auf Erstellen.
So lassen Sie eingehende SSH-Verbindungen zu:
- Klicken Sie auf Firewallregel erstellen.
- Name:
fw-allow-ssh
- Netzwerk:
lb-network
- Priorität:
1000
- 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 und geben Sie
tcp:22
ein.
Klicken Sie auf Erstellen.
So lassen Sie zu, dass IPv6-TCP-, UDP- und ICMP-Traffic die Backend-Instanzgruppe
ig-a
erreicht:- Klicken Sie auf Firewallregel erstellen.
- Name:
fw-allow-lb-access-ipv6
- Netzwerk:
lb-network
- Priorität:
1000
- Trafficrichtung: Eingehend
- Aktion bei Übereinstimmung: Zulassen
- Ziele: Alle Instanzen im Netzwerk
- Quellfilter: IPv6-Bereiche
- IPv6-Quellbereiche: IPV6_ADDRESS zugewiesen in
lb-subnet
- Wählen Sie unter Protokolle und Ports die Option Angegebene Protokolle und Ports aus.
- Wählen Sie TCP aus und geben Sie
0-65535
ein. - Wählen Sie UDP aus.
- Wählen Sie Sonstige aus und geben Sie für das ICMPv6-Protokoll
58
ein.
- Wählen Sie TCP aus und geben Sie
Klicken Sie auf Erstellen.
So lassen Sie Google Cloud IPv6-Systemdiagnosen zu:
- Klicken Sie auf Firewallregel erstellen.
- Name:
fw-allow-health-check-ipv6
- Netzwerk:
lb-network
- Priorität:
1000
- Trafficrichtung: Eingehend
- Aktion bei Übereinstimmung: Zulassen
- Ziele: Angegebene Zieltags
- Zieltags:
allow-health-check-ipv6
- Quellfilter: IPv6-Bereiche
- Quell-IPv6-Bereiche:
2600:2d00:1:b029::/64
- Protokolle und Ports: Alle zulassen
Klicken Sie auf Erstellen.
So lassen Sie Google Cloud IPv4-Systemdiagnosen zu:
- Klicken Sie auf Firewallregel erstellen.
- Name:
fw-allow-health-check
- Netzwerk:
lb-network
- Priorität:
1000
- Trafficrichtung: Eingehend
- Aktion bei Übereinstimmung: Zulassen
- Ziele: Angegebene Zieltags
- Zieltags:
allow-health-check
- Quellfilter: IPv4-Bereiche.
- IPv4-Quellbereiche:
130.211.0.0/22
und35.191.0.0/16
- Protokolle und Ports: Alle zulassen
Klicken Sie auf Erstellen.
gcloud
Damit der IPv4-TCP-Traffic die Backend-Instanzgruppe
ig-a
erreichen kann, erstellen Sie die folgende Regel:gcloud compute firewall-rules create fw-allow-lb-access \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.1.2.0/24 \ --rules=tcp,udp,icmp
Erstellen Sie mithilfe des Netzwerk-Tags
allow-ssh
einefw-allow-ssh
-Firewallregel, um SSH-Verbindungen zu VMs zuzulassen. 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
Damit der IPv6-Traffic die Backend-Instanzgruppe
ig-a
erreichen kann, erstellen Sie die folgende Regel:gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=IPV6_ADDRESS \ --rules=all
Ersetzen Sie
IPV6_ADDRESS
durch die inlb-subnet
zugewiesene IPv6-Adresse.Erstellen Sie die Firewallregel
fw-allow-health-check
, um Google Cloud-Systemdiagnosen zuzulassen.gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp,udp,icmp
Erstellen Sie die Regel
fw-allow-health-check-ipv6
, um Google Cloud IPv6-Systemdiagnosen zuzulassen.gcloud compute firewall-rules create fw-allow-health-check-ipv6 \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check-ipv6 \ --source-ranges=2600:2d00:1:b029::/64 \ --rules=tcp,udp,icmp
API
Zum Erstellen der Firewallregel
fw-allow-lb-access
senden Sie einePOST
-Anfrage an die Methodefirewalls.insert
. Ersetzen SiePROJECT_ID
durch die ID Ihres Google Cloud-Projekts.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-lb-access", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "10.1.2.0/24" ], "allPorts": true, "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Erstellen Sie die Firewallregel
fw-allow-lb-access-ipv6
. Stellen Sie dazu einePOST
-Anfrage an die Methodefirewalls.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-lb-access-ipv6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "IPV6_ADDRESS" ], "allPorts": true, "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "58" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Ersetzen Sie IPV6_ADDRESS durch die in
lb-subnet
zugewiesene IPv6-Adresse.Senden Sie zum Erstellen der Firewallregel
fw-allow-ssh
einePOST
-Anfrage an die Methodefirewalls.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-ssh", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "0.0.0.0/0" ], "targetTags": [ "allow-ssh" ], "allowed": [ { "IPProtocol": "tcp", "ports": [ "22" ] } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Senden Sie zum Erstellen der Firewallregel
fw-allow-health-check
einePOST
-Anfrage an die Methodefirewalls.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-health-check", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "130.211.0.0/22", "35.191.0.0/16" ], "targetTags": [ "allow-health-check" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Erstellen Sie die Firewallregel
fw-allow-health-check-ipv6
. Stellen Sie dazu einePOST
-Anfrage an die Methodefirewalls.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-health-check-ipv6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "2600:2d00:1:b029::/64" ], "targetTags": [ "allow-health-check-ipv6" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Backend-VMs und Instanzgruppen erstellen
Für dieses Load-Balancing-Szenario erstellen Sie eine zonal verwaltete Compute Engine-Instanzgruppe und installieren einen Apache-Webserver.
Konfigurieren Sie die Backend-VMs als Dual-Stack, um sowohl IPv4- als auch IPv6-Traffic zu verarbeiten. Setzen Sie den stack-type
der VM auf IPv4_IPv6
. Die VMs übernehmen außerdem die Einstellung ipv6-access-type
(im Beispiel INTERNAL
) aus dem Subnetz. Weitere Informationen zu IPv6-Anforderungen finden Sie in der Übersicht über internen Passthrough-Network-Load-Balancer: Weiterleitungsregeln.
Wenn Sie vorhandene VMs als Back-Ends verwenden möchten, aktualisieren Sie die VMs mit dem Befehl gcloud compute instances network-interfaces update auf Dual-Stack.
Instanzen, die als Backend-VMs für interne Passthrough-Network-Load-Balancer verwendet werden, müssen die entsprechende Linux-Gastumgebung, Windows-Gastumgebung oder andere Prozesse ausführen, die gleichwertige Funktionen bereitstellen.
Zur Vereinfachung der Anleitung führen die Backend-VMs Debian GNU/Linux 10 aus.
Erstellen Sie die Instanzgruppe
Console
Führen Sie die folgenden Schritte aus, um IPv4- und IPv6-Traffic zu unterstützen:
eine Instanzvorlage erstellen Rufen Sie in der Google Cloud Console die Seite Instanzvorlagen auf.
- Klicken Sie auf Instanzvorlage erstellen.
- Geben Sie im Feld Name
vm-a1
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
. - Maximieren Sie den Bereich Erweiterte Optionen.
Maximieren Sie den Bereich Verwaltung und kopieren Sie das folgende Script in das Feld Startscript. Mit dem Startskript wird der Apache-Server auch so konfiguriert, dass Port
8080
anstelle von Port80
überwacht wird.#! /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 sed -ire 's/^Listen 80$/Listen 8080/g' /etc/apache2/ports.conf systemctl restart apache2
Maximieren Sie den Bereich Netzwerk und geben Sie Folgendes an:
- Fügen Sie unter Netzwerk-Tags
allow-ssh
undallow-health-check-ipv6
hinzu. - Klicken Sie unter Netzwerkschnittstellen auf die Schnittstelle Standard und konfigurieren Sie die folgenden Felder:
- Netzwerk:
lb-network
- Subnetzwerk:
lb-subnet
- IP-Stack-Typ: IPv4 und IPv6 (Dual-Stack)
- Netzwerk:
- Fügen Sie unter Netzwerk-Tags
Klicken Sie auf Erstellen.
Führen Sie die folgenden Schritte aus, um IPv4-Traffic zu unterstützen:
eine Instanzvorlage erstellen Rufen Sie in der Google Cloud Console die Seite Instanzvorlagen auf.
Klicken Sie auf Instanzvorlage erstellen.
- Geben Sie im Feld Name
vm-a1
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
. - Maximieren Sie den Bereich Erweiterte Optionen.
Maximieren Sie den Bereich Verwaltung und kopieren Sie das folgende Script in das Feld Startscript. Mit dem Startskript wird der Apache-Server auch so konfiguriert, dass Port
8080
anstelle von Port80
überwacht wird.#! /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 sed -ire 's/^Listen 80$/Listen 8080/g' /etc/apache2/ports.conf systemctl restart apache2
Maximieren Sie den Bereich Netzwerk und geben Sie Folgendes an:
- Fügen Sie unter Netzwerk-Tags
allow-ssh
undallow-health-check
hinzu. - Klicken Sie unter Netzwerkschnittstellen auf die Schnittstelle Standard und konfigurieren Sie die folgenden Felder:
- Netzwerk:
lb-network
- Subnetzwerk:
lb-subnet
- IP-Stack-Typ: IPv4 (Einzel-Stack)
- Netzwerk:
- Fügen Sie unter Netzwerk-Tags
Klicken Sie auf Erstellen.
- Geben Sie im Feld Name
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
ig-a
ein. - Wählen Sie für Standort die Option Einzelne Zone aus.
- Wählen Sie
us-west1
als Region aus. - Wählen Sie
us-west1-a
als Zone aus. - Wählen Sie bei Instanzvorlage die Option
vm-a1
aus. Geben Sie an, wie viele Instanzen die Gruppe umfassen soll.
Geben Sie für dieses Beispiel unter 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.
- 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 HTTP-Server.Mit dem Startskript wird der Apache-Server auch so konfiguriert, dass Port
8080
anstelle von Port80
überwacht wird.Verwenden Sie den folgenden Befehl, um IPv4- und IPv6-Traffic zu verarbeiten.
gcloud compute instance-templates create vm-a1 \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet \ --ipv6-network-tier=PREMIUM \ --stack-type=IPv4_IPv6 \ --tags=allow-ssh \ --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 sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'
Wenn Sie nur IPv4-Traffic verarbeiten möchten, verwenden Sie den folgenden Befehl.
gcloud compute instance-templates create vm-a1 \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet \ --tags=allow-ssh \ --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 sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'
Erstellen Sie mit dem Befehl
gcloud compute instance-groups managed create
eine verwaltete Instanzgruppe in der Zone.gcloud compute instance-groups managed create ig-a \ --zone us-west1-a \ --size 2 \ --template vm-a1
API
Führen Sie die folgenden Schritte aus, um IPv4- und IPv6-Traffic zu verarbeiten:
Erstellen Sie eine VM. Stellen Sie dazu
POST
-Anfragen an die Methodeinstances.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "vm-a1", "tags": { "items": [ "allow-health-check-ipv6", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "stackType": "IPV4_IPV6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-a1", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname="$(curl -H "Metadata-Flavor:Google" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)"\necho "Page served from: $vm_hostname" | \\\ntee /var/www/html/index.html\nsed -ire "s/^Listen 80$/Listen 8080/g" /etc/\\napache2/ports.conf\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
Führen Sie die folgenden Schritte aus, um IPv4-Traffic zu verarbeiten.
Erstellen Sie eine VM. Stellen Sie dazu
POST
-Anfragen an die Methodeinstances.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "vm-a1", "tags": { "items": [ "allow-health-check", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "stackType": "IPV4", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-a1", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname="$(curl -H "Metadata-Flavor:Google" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)"\necho "Page served from: $vm_hostname" | \\\ntee /var/www/html/index.html\nsed -ire "s/^Listen 80$/Listen 8080/g" /etc/\\napache2/ports.conf\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
Erstellen Sie eine Instanzgruppe. Stellen Sie dazu eine
POST
-Anfrage an die MethodeinstanceGroups.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups { "name": "ig-a", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }
Fügen Sie jeder Instanzgruppe Instanzen hinzu. Stellen Sie dazu eine
POST
-Anfrage an die MethodeinstanceGroups.addInstances
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a/addInstances { "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a1" } ] }
Client-VM erstellen
In diesem Beispiel wird eine Client-VM erstellt, die sich in derselben Region wie die Backend-VMs (Server) befindet. Der Client validiert die Konfiguration des Load-Balancers und demonstriert das erwartete Verhalten, wie im Abschnitt "Test" beschrieben.
Für IPv4- und IPv6-Traffic:
Console
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf Instanz erstellen.
Legen Sie als Name
vm-client-ipv6
fest.Setzen Sie Zone auf
us-west1-a
.Maximieren Sie den Abschnitt Erweiterte Optionen und nehmen Sie die folgenden Änderungen vor:
- Maximieren Sie Netzwerk und fügen Sie dann
allow-ssh
zu den Netzwerk-Tags hinzu. - Klicken Sie unter Netzwerkschnittstellen auf Bearbeiten, nehmen Sie die folgenden Änderungen vor und klicken Sie dann auf Fertig:
- Netzwerk:
lb-network
- Subnetz:
lb-subnet
- IP-Stack-Typ: IPv4 und IPv6 (Dual-Stack)
- Primäre interne IP: sitzungsspezifisch (automatisch)
- Externe IP: sitzungsspezifisch
- Netzwerk:
- Maximieren Sie Netzwerk und fügen Sie dann
Klicken Sie auf Erstellen.
gcloud
Die Client-VM kann sich in einer beliebigen Zone in derselben Region wie der Load-Balancer befinden. Außerdem kann sie jedes Subnetz in dieser Region verwenden. In diesem Beispiel befindet sich der Client in der Zone us-west1-a
und verwendet dasselbe Subnetz wie die Backend-VMs.
gcloud compute instances create vm-client-ipv6 \ --zone=us-west1-a \ --image-family=debian-10 \ --image-project=debian-cloud \ --stack-type=IPV4_IPV6 \ --tags=allow-ssh \ --subnet=lb-subnet
API
Stellen Sie eine POST
-Anfrage an die Methode instances.insert
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances { "name": "vm-client-ipv6", "tags": { "items": [ "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "stackType": "IPV4_IPV6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-client", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/debian-image-name", "diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "scheduling": { "preemptible": false }, "deletionProtection": false }
Für IPv4-Traffic.
Console
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf Instanz erstellen.
Geben Sie für Name
vm-client
ein.Geben Sie für Zone den Wert
us-west1-a
ein.Maximieren Sie den Bereich Erweiterte Optionen.
Klicken Sie auf Netzwerk und konfigurieren Sie dann die folgenden Felder:
- Geben Sie bei Netzwerk-Tags den Wert
allow-ssh
ein. - Wählen Sie für Netzwerkschnittstellen Folgendes aus:
- Netzwerk:
lb-network
- Subnetz:
lb-subnet
- Netzwerk:
- Geben Sie bei Netzwerk-Tags den Wert
Klicken Sie auf Erstellen.
gcloud
Die Client-VM kann sich in einer beliebigen Zone in derselben Region wie der Load-Balancer befinden. Außerdem kann sie jedes Subnetz in dieser Region verwenden. In diesem Beispiel befindet sich der Client in der Zone us-west1-a
und verwendet dasselbe Subnetz wie die Backend-VMs.
gcloud compute instances create vm-client \ --zone=us-west1-a \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=lb-subnet
API
Stellen Sie eine POST
-Anfrage an die Methode instances.insert
.
Ersetzen Sie PROJECT_ID
durch die ID Ihres Google Cloud-Projekts.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances { "name": "vm-client", "tags": { "items": [ "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-client", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/debian-image-name", "diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "scheduling": { "preemptible": false }, "deletionProtection": false }
Load-Balancer-Komponenten konfigurieren
Load-Balancer für mehrere Protokolle erstellen
gcloud
Erstellen Sie eine HTTP-Systemdiagnose für Port 80. Diese Systemdiagnose wird verwendet, um den Status von Back-Ends in der
ig-a
-Instanzgruppe zu prüfen.gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80
Erstellen Sie einen Backend-Dienst, dessen Protokoll auf
UNSPECIFIED
gesetzt ist.gcloud compute backend-services create be-ilb-l3-default \ --load-balancing-scheme=internal \ --protocol=UNSPECIFIED \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1
Fügen Sie die Instanzgruppe dem Backend-Dienst hinzu:
gcloud compute backend-services add-backend be-ilb-l3-default \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-a
Für IPv6-Traffic: Erstellen Sie eine Weiterleitungsregel mit dem Protokoll
L3_DEFAULT
, um den gesamten unterstützten IPv6-Protokolltraffic zu verarbeiten. Alle Ports müssen mitL3_DEFAULT
-Weiterleitungsregeln konfiguriert werden.gcloud compute forwarding-rules create fr-ilb-ipv6 \ --region=us-west1 \ --load-balancing-scheme=internal \ --subnet=lb-subnet \ --ip-protocol=L3_DEFAULT \ --ports=ALL \ --backend-service=be-ilb-l3-default \ --backend-service-region=us-west1 \ --ip-version=IPV6
Für IPv4-Traffic: Erstellen Sie eine Weiterleitungsregel mit dem Protokoll
L3_DEFAULT
, um den gesamten unterstützten IPv4-Protokoll-Traffic zu verarbeiten. Alle Ports müssen mitL3_DEFAULT
-Weiterleitungsregeln konfiguriert werden. Verwenden Sie10.1.2.99
als interne IP-Adresse.gcloud compute forwarding-rules create fr-ilb-l3-default \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=10.1.2.99 \ --ip-protocol=L3_DEFAULT \ --ports=ALL \ --backend-service=be-ilb-l3-default \ --backend-service-region=us-west1
API
Erstellen Sie die Systemdiagnose. Stellen Sie dazu eine
POST
-Anfrage an die MethoderegionHealthChecks.insert
. Ersetzen SiePROJECT_ID
durch die ID Ihres Google Cloud-Projekts.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/regionHealthChecks { "name": "hc-http-80", "type": "HTTP", "httpHealthCheck": { "port": 80 } }
Erstellen Sie den regionalen Backend-Dienst. Stellen Sie dazu eine
POST
-Anfrage an die MethoderegionBackendServices.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb-l3-default", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "UNSPECIFIED", "connectionDraining": { "drainingTimeoutSec": 0 } }
Für IPv6-Traffic: Erstellen Sie die Weiterleitungsregel. Stellen Sie dazu eine
POST
-Anfrage an die MethodeforwardingRules.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-ipv6", "IPProtocol": "L3_DEFAULT", "allPorts": true, "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default", "ipVersion": "IPV6", "networkTier": "PREMIUM" }
Für IPv4-Traffic: Erstellen Sie die Weiterleitungsregel. Stellen Sie dazu eine
POST
-Anfrage an die MethodeforwardingRules.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-l3-default", "IPAddress": "10.1.2.99", "IPProtocol": "L3_DEFAULT", "allPorts": true, "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default", "networkTier": "PREMIUM" }
Load-Balancer testen
Die folgenden Tests zeigen Ihnen, wie Sie die Konfiguration des Load-Balancers validieren und das erwartete Verhalten ermitteln können.
Verbindung von Client-VM testen
Dieser Test nimmt von einer separaten Client-VM Verbindung mit dem Load-Balancer auf, also nicht von einer Backend-VM des Load-Balancers.
gcloud: IPv6
Stellen Sie eine Verbindung zur Client-VM-Instanz her.
gcloud compute ssh vm-client-ipv6 --zone=us-west1-a
Beschreiben Sie die IPv6-Weiterleitungsregel
fr-ilb-ipv6
. Beachten SieIPV6_ADDRESS
in der Beschreibung.gcloud compute forwarding-rules describe fr-ilb-ipv6 --region=us-west1
Führen Sie von Clients mit IPv6-Verbindung den folgenden Befehl aus: Ersetzen Sie
IPV6_ADDRESS
durch die sitzungsspezifische IPv6-Adresse in der Weiterleitungsregelfr-ilb-ipv6
.curl -m 10 -s http://IPV6_ADDRESS:80
Wenn die zugewiesene IPv6-Adresse beispielsweise
[fd20:1db0:b882:802:0:46:0:0/96]:80
lautet, sollte der Befehl so aussehen:curl -m 10 -s http://[fd20:1db0:b882:802:0:46:0:0]:80
gcloud: IPv4
Stellen Sie eine Verbindung zur Client-VM-Instanz her.
gcloud compute ssh vm-client --zone=us-west1-a
Beschreiben Sie die IPv4-Weiterleitungsregel
fr-ilb
.gcloud compute forwarding-rules describe fr-ilb --region=us-west1
Stellen Sie mit
curl
eine Webanfrage an den Load-Balancer, um dessen IP-Adresse zu kontaktieren. Wiederholen Sie die Anfrage. So können Sie sehen, dass Antworten von verschiedenen Backend-VMs stammen. Der Name der VM, die die Antwort generiert, wird aufgrund des Inhalts von/var/www/html/index.html
auf jeder Backend-VM im Text der HTML-Antwort angezeigt. Die erwarteten Antworten sehen so aus:Page served from: vm-a1
.curl http://10.1.2.99
Die Weiterleitungsregel ist für die Bereitstellung der Ports
80
und53
konfiguriert. Um Traffic an diese Ports zu senden, hängen Sie nach der IP-Adresse einen Doppelpunkt (:
) und die Portnummer an:curl http://10.1.2.99:80
IP-Adresse des Load-Balancers pingen
Dieser Test zeigt ein erwartetes Verhalten: Sie können die IP-Adresse des Load-Balancers per Ping kontaktieren.
gcloud: IPv6
Stellen Sie eine Verbindung zur Client-VM-Instanz her.
gcloud compute ssh vm-client-ipv6 --zone=us-west1-a
Versuchen Sie, die IPv6-Adresse des Load-Balancers per Ping zu kontaktieren. Ersetzen Sie
IPV6_ADDRESS
durch die sitzungsspezifische IPv6-Adresse in der Weiterleitungsregelfr-ilb-ipv6
.Sie erhalten eine Antwort und der Befehl
ping
funktioniert in diesem Beispiel.ping6 IPV6_ADDRESS
Wenn die zugewiesene IPv6-Adresse beispielsweise
[2001:db8:1:1:1:1:1:1/96]
lautet, lautet der Befehl so:ping6 2001:db8:1:1:1:1:1:1
Die Ausgabe sieht in etwa so aus:
@vm-client: ping
IPV6_ADDRESS
PINGIPV6_ADDRESS
(IPV6_ADDRESS
) 56(84) bytes of data. 64 bytes fromIPV6_ADDRESS
: icmp_seq=1 ttl=64 time=1.58 ms
gcloud: IPv4
Stellen Sie eine Verbindung zur Client-VM-Instanz her.
gcloud compute ssh vm-client --zone=us-west1-a
Versuchen Sie, die IPv4-Adresse des Load-Balancers per Ping zu kontaktieren. Sie erhalten eine Antwort und der Befehl
ping
funktioniert in diesem Beispiel.ping 10.1.2.99
Die Ausgabe sieht so aus:
@vm-client: ping 10.1.2.99 PING 10.1.2.99 (10.1.2.99) 56(84) bytes of data. 64 bytes from 10.1.2.99: icmp_seq=1 ttl=64 time=1.58 ms 64 bytes from 10.1.2.99: icmp_seq=2 ttl=64 time=0.242 ms 64 bytes from 10.1.2.99: icmp_seq=3 ttl=64 time=0.295 ms
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.
Sie können eine statische interne IP-Adresse für Ihr Beispiel reservieren. Mit dieser Konfiguration können mehrere interne Weiterleitungsregeln dieselbe IP-Adresse mit unterschiedlichen Protokollen und unterschiedlichen Ports verwenden.
Die Back-Ends Ihres Beispiel-Load-Balancers müssen sich weiterhin in der Region us-west1
befinden.
Im folgenden Diagramm wird die Architektur für dieses Beispiel dargestellt:
Sie können auch die folgenden Konfigurationen für Weiterleitungsregeln verwenden:
Weiterleitungsregeln mit mehreren Ports:
- Protokoll
TCP
mit Ports80,8080
- Protokoll
L3_DEFAULT
mit PortsALL
- Protokoll
Weiterleitungsregeln mit allen Ports:
- Protokoll
TCP
mit PortsALL
- Protokoll
L3_DEFAULT
mit PortsALL
- Protokoll
Statische interne IPv4-Adresse reservieren
Reservieren Sie eine statische interne IP-Adresse für 10.1.2.99
und setzen Sie das Flag --purpose
auf SHARED_LOADBALANCER_VIP
. Das Flag --purpose
ist erforderlich, damit viele Weiterleitungsregeln dieselbe interne IP-Adresse verwenden können.
gcloud
Führen Sie den Befehl gcloud compute addresses create
aus:
gcloud compute addresses create internal-lb-ipv4 \ --region us-west1 \ --subnet lb-subnet \ --purpose SHARED_LOADBALANCER_VIP \ --addresses 10.1.2.99
API
Rufen Sie die Methode addresses.insert
auf.
Ersetzen Sie PROJECT_ID
durch die ID Ihres Google Cloud-Projekts.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/addresses
Der Anfragetext muss den addressType
(der INTERNAL
lauten sollte), den name
der Adresse und den subnetwork
enthalten, zu dem die IP-Adresse gehört. Sie müssen address
als 10.1.2.99
angeben.
{ "addressType": "INTERNAL", "name": "internal-lb-ipv4", "subnetwork": "regions/us-west1/subnetworks/lb-subnet", "purpose": "SHARED_LOADBALANCER_VIP", "address": "10.1.2.99" }
Load-Balancer-Komponenten konfigurieren
Konfigurieren Sie drei Load-Balancer mit den folgenden Komponenten:
- Der erste Load-Balancer hat eine Weiterleitungsregel mit dem Protokoll
TCP
und dem Port80
. TCP-Traffic, der bei der internen IP-Adresse an Port80
ankommt, wird von der WeiterleitungsregelTCP
verarbeitet. - Der zweite Load-Balancer hat eine Weiterleitungsregel mit dem Protokoll
UDP
und dem Port53
. UDP-Traffic, der bei der internen IP-Adresse an Port53
ankommt, wird von der WeiterleitungsregelUDP
verarbeitet. - Der dritte Load-Balancer hat eine Weiterleitungsregel mit dem Protokoll
L3_DEFAULT
und dem PortALL
. Anderer Traffic, der nicht von den WeiterleitungsregelnTCP
oderUDP
übereinstimmt, wird von der WeiterleitungsregelL3_DEFAULT
verarbeitet. - Alle drei Load-Balancer haben in ihren Weiterleitungsregeln dieselbe statische interne IP-Adresse (
internal-lb-ipv4
).
Ersten Load-Balancer erstellen
Erstellen Sie den ersten Load-Balancer für TCP-Traffic an Port 80
.
gcloud
Erstellen Sie den Backend-Dienst für TCP-Traffic:
gcloud compute backend-services create be-ilb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1
Fügen Sie die Instanzgruppe dem Backend-Dienst hinzu:
gcloud compute backend-services add-backend be-ilb \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-a
Erstellen Sie eine Weiterleitungsregel für den Backend-Dienst. Verwenden Sie die statische reservierte interne IP-Adresse (
internal-lb-ipv4
) als interne IP-Adresse.gcloud compute forwarding-rules create fr-ilb \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=internal-lb-ipv4 \ --ip-protocol=TCP \ --ports=80 \ --backend-service=be-ilb \ --backend-service-region=us-west1
API
Erstellen Sie den regionalen Backend-Dienst. Stellen Sie dazu eine
POST
-Anfrage an die MethoderegionBackendServices.insert
. Ersetzen SiePROJECT_ID
durch die ID Ihres Google Cloud-Projekts.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "TCP", "connectionDraining": { "drainingTimeoutSec": 0 } }
Create the forwarding rule by making a
POST
request to theforwardingRules.insert
method:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb", "IPAddress": "internal-lb-ipv4", "IPProtocol": "TCP", "ports": [ "80" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb", "networkTier": "PREMIUM" }
Zweiten Load-Balancer erstellen
Erstellen Sie den zweiten Load-Balancer für UDP-Traffic an Port 53
.
gcloud
Erstellen Sie einen Backend-Dienst, dessen Protokoll auf
UDP
gesetzt ist.gcloud compute backend-services create be-ilb-udp \ --load-balancing-scheme=internal \ --protocol=UDP \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1
Fügen Sie die Instanzgruppe dem Backend-Dienst hinzu:
gcloud compute backend-services add-backend be-ilb-udp \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-a
Erstellen Sie eine Weiterleitungsregel für den Backend-Dienst. Verwenden Sie die statische reservierte interne IP-Adresse (
internal-lb-ipv4
) als interne IP-Adresse.gcloud compute forwarding-rules create fr-ilb-udp \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=internal-lb-ipv4 \ --ip-protocol=UDP \ --ports=53 \ --backend-service=be-ilb-udp \ --backend-service-region=us-west1
API
Erstellen Sie den regionalen Backend-Dienst. Stellen Sie dazu eine
POST
-Anfrage an die MethoderegionBackendServices.insert
. Ersetzen SiePROJECT_ID
durch die ID Ihres Google Cloud-Projekts.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb-udp", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "UDP", "connectionDraining": { "drainingTimeoutSec": 0 } }
Erstellen Sie die Weiterleitungsregel. Stellen Sie dazu eine
POST
-Anfrage an die MethodeforwardingRules.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-udp", "IPAddress": "internal-lb-ipv4", "IPProtocol": "UDP", "ports": [ "53" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-udp", "networkTier": "PREMIUM" }
Dritten Load-Balancer erstellen
Erstellen Sie die Weiterleitungsregel des dritten Load-Balancers, um die statische reservierte interne IP-Adresse zu verwenden.
gcloud
Erstellen Sie die Weiterleitungsregel mit dem Protokoll L3_DEFAULT
, um den gesamten anderen unterstützten IPv4-Protokoll-Traffic zu verarbeiten. Verwenden Sie die statische reservierte interne IP-Adresse (internal-lb-ipv4
) als interne IP-Adresse.
gcloud compute forwarding-rules create fr-ilb-l3-default \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=internal-lb-ipv4 \ --ip-protocol=L3_DEFAULT \ --ports=ALL \ --backend-service=be-ilb-l3-default \ --backend-service-region=us-west1
API
Erstellen Sie die Weiterleitungsregel. Stellen Sie dazu eine POST
-Anfrage an die Methode forwardingRules.insert
.
Ersetzen Sie PROJECT_ID
durch die ID Ihres Google Cloud-Projekts.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-l3-default", "IPAddress": "internal-lb-ipv4", "IPProtocol": "L3_DEFAULT", "ports": [ "ALL" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default", "networkTier": "PREMIUM" }
Load-Balancer testen
Führen Sie zum Testen des Load-Balancers die Schritte im vorherigen Abschnitt aus.
Nächste Schritte
- Wichtige Konzepte finden Sie unter Übersicht über den internen Netzwerk-Load-Balancer.
- Informationen zum Konfigurieren des Failovers finden Sie unter Failover für den internen Passthrough-Netzwerk-Load-Balancer konfigurieren.
- Informationen zum Konfigurieren von Logging und Monitoring für interne Passthrough-Netzwerk-Load-Balancer finden Sie unter Logging und Monitoring für Netzwerk-Load-Balancer.
- Weitere Informationen zur Fehlerbehebung finden Sie unter Fehlerbehebung bei internen Passthrough-Netzwerk-Load-Balancern.
- Load-Balancing-Einrichtung bereinigen