Diese Anleitung vermittelt anhand eines Beispiels, wie Sie Failover für einen internen Passthrough-Network Load Balancer von Google Cloud konfigurieren. Bevor Sie sie durchgehen, machen Sie sich mit folgenden Themen vertraut:
- Konzepte für internen Passthrough-Network Load Balancer
- Failover-Konzepte für interne Passthrough-Network Load Balancer
- Übersicht über Firewallregeln
- Systemdiagnosekonzepte
Berechtigungen
Damit Sie dieser Anleitung folgen können, müssen Sie Instanzen erstellen und ein Netzwerk in einem Projekt ändern. Sie sollten daher entweder Inhaber oder Bearbeiter des Projekts sein oder über alle folgenden IAM-Rollen für Compute Engine verfügen:
Aufgabe | Erforderliche Rolle |
---|---|
Netzwerke, Subnetze und Load-Balancer-Komponenten erstellen | Netzwerkadministrator |
Firewallregeln hinzufügen und löschen | Sicherheitsadministrator |
Instanzen erstellen | Compute-Instanzadministrator |
Weitere Informationen finden Sie in folgenden Leitfäden:
Einrichtung
In dieser Anleitung erfahren Sie, wie Sie einen internen Passthrough-Network Load Balancer konfigurieren und testen, der Failover verwendet. Die Schritte in diesem Abschnitt erläutern, wie Sie folgende Elemente konfigurieren:
- Ein VPC-Netzwerk mit benutzerdefinierten Subnetzen als Beispiel
- Firewall-Regeln, die eingehende Verbindung zu Backend-VMs ermöglichen
- Back-End-VMs:
- Ein primäres Back-End in einer nicht verwalteten Instanzgruppe in Zone
us-west1-a
- Ein Failover-Back-End in einer nicht verwalteten Instanzgruppe in Zone
us-west1-c
- Ein primäres Back-End in einer nicht verwalteten Instanzgruppe in Zone
- Eine Client-VM zum Testen von Verbindungen und Beobachten des Failover-Verhaltens
- Die folgenden Komponenten für den internen Passthrough-Network Load Balancer:
- Eine Systemdiagnose für den Backend-Dienst
- Ein interner Back-End-Dienst in der Region
us-west1
, um die Verteilung von Verbindungen zwischen den Back-End-VMs zu verwalten - Eine interne Weiterleitungsregel und eine interne IP-Adresse für das Frontend des Load-Balancers
Die Architektur dieses Beispiels sieht so aus:
Netzwerk, Region und Subnetz konfigurieren
Dieses Beispiel verwendet ein VPC-Netzwerk, eine Region und Subnetz mit den folgenden Parametern:
Netzwerk: Das Netzwerk ist ein VPC-Netzwerk im benutzerdefinierten Modus mit dem Namen
lb-network
.Region: Die Region ist
us-west1
.Subnetz: Das Subnetz
lb-subnet
verwendet den IP-Bereich10.1.2.0/24
.
Gehen Sie so vor, um das Netzwerk und das Subnetz zu erstellen:
Console
Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
Klicken Sie auf VPC-Netzwerk erstellen.
Geben Sie als Namen
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-Adressbereich:
10.1.2.0/24
- Klicken Sie auf Fertig.
- Name:
Klicken Sie auf Erstellen.
gcloud
Erstellen Sie das benutzerdefinierte 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-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
API
Stellen Sie eine POST
-Anfrage an die Methode networks.insert
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/global/networks
{ "routingConfig": { "routingMode": "REGIONAL" }, "name": "lb-network", "autoCreateSubnetworks": false }
Stellen Sie eine POST
-Anfrage an die Methode subnetworks.insert
. Ersetzen Sie PROJECT_ID
durch Ihre Google Cloud-Projekt-ID.
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
Dieses Beispiel verwendet die folgenden Firewallregeln:
fw-allow-lb-subnet
: Eine Regel für eingehenden Traffic, die für alle Ziele im VPC-Netzwerk gilt und Traffic aus Quellen im Bereich10.1.2.0/24
zulässt. Mit dieser Regel wird für eingehenden Traffic von jeder Quelle innerhalb vonlb-subnet
zu den Instanzen (VMs) ein Load-Balancing vorgenommen.fw-allow-ssh
: Eine Regel für eingehenden Traffic, die für die Instanzen mit Load-Balancing gilt und eingehende SSH-Verbindungen über TCP-Port 22 von allen IP-Adressen zulässt. Sie können einen eingeschränkteren IP-Bereich von Quellen 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 welche die Firewallregel angewendet wird.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.
Ohne diese Firewallregeln blockiert die Standardregel zum Ablehnen von eingehendem Traffic den eingehenden Traffic zu den Back-End-Instanzen.
Console
Rufen Sie in der Google Cloud Console die Seite der Firewall-Richtlinien auf.
Klicken Sie auf Firewallregel erstellen und geben Sie folgende Informationen ein, um die Regel zu erstellen, die Subnetztraffic zulässt:
- Name:
fw-allow-lb-subnet
- Netzwerk:
lb-network
- Priorität:
1000
- Trafficrichtung: Eingehend
- Aktion bei Übereinstimmung: Zulassen
- Ziele: Alle Instanzen im Netzwerk
- Quellfilter: IPv4-Bereiche.
- Source IPv4 ranges:
10.1.2.0/24
- Protokolle und Ports: Alle zulassen
- Name:
Klicken Sie auf Erstellen.
Klicken Sie noch einmal auf Firewallregel erstellen, um die Regel zu erstellen, die eingehende SSH-Verbindungen zulässt:
- Name:
fw-allow-ssh
- Netzwerk:
lb-network
- Priorität:
1000
- 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 und geben Sie Folgendes ein:
tcp:22
- Name:
Klicken Sie auf Erstellen.
Klicken Sie ein drittes Mal auf Firewallregel erstellen, um die Regel zum Zulassen von Google Cloud-Systemdiagnosen zu erstellen:
- Name:
fw-allow-health-check
- Netzwerk:
lb-network
- Priorität:
1000
- Trafficrichtung: Eingehend
- Aktion bei Übereinstimmung: Zulassen
- Ziele: Angegebene Ziel-Tags
- Zieltags:
allow-health-check
- Quellfilter: IPv4-Bereiche.
- IPv4-Quellbereiche:
130.211.0.0/22
und35.191.0.0/16
- Protokolle und Ports: Alle zulassen
- Name:
Klicken Sie auf Erstellen.
gcloud
Erstellen Sie die Firewallregel
fw-allow-lb-subnet
, um die Kommunikation mit dem Subnetz zuzulassen:gcloud compute firewall-rules create fw-allow-lb-subnet \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.1.2.0/24 \ --rules=tcp,udp,icmp
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
Erstellen Sie die Regel
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
API
Erstellen Sie die Firewallregel fw-allow-lb-subnet
. Stellen Sie dazu eine POST
-Anfrage an die Methode firewalls.insert
. Ersetzen Sie PROJECT_ID
durch Ihre Google Cloud-Projekt-ID.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/global/firewalls
{ "name": "fw-allow-lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "10.1.2.0/24" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Erstellen Sie die Firewallregel fw-allow-ssh
. Stellen Sie dazu eine POST
-Anfrage an die Methode firewalls.insert
. Ersetzen Sie PROJECT_ID
durch Ihre Google Cloud-Projekt-ID.
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 }
Erstellen Sie die Firewallregel fw-allow-health-check
. Stellen Sie dazu eine POST
-Anfrage an die Methode firewalls.insert
. Ersetzen Sie PROJECT_ID
durch Ihre Google Cloud-Projekt-ID.
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 }
Back-End-VMs und Instanzgruppen erstellen
In diesem Schritt erstellen Sie die Back-End-VMs und nicht verwalteten Instanzgruppen:
- Die Instanzgruppe
ig-a
inus-west1-a
ist ein primäres Back-End mit zwei VMs:vm-a1
vm-a2
- Die Instanzgruppe
ig-c
inus-west1-c
ist ein Failover-Back-End mit zwei VMs:vm-c1
vm-c2
Das primäre und das Failover-Back-End werden in getrennten Zonen platziert, um die Anleitung zu vereinfachen und das Failover zu ermöglichen, falls eine Zone ausfällt.
Jede primäre und Backup-VM ist so konfiguriert, dass ein Apache-Webserver auf den TCP-Ports 80 und 443 ausgeführt wird. Jeder VM wird eine interne IP-Adresse im lb-subnet
für den Clientzugriff und eine sitzungsspezifische externe (öffentliche) IP-Adresse für den SSH-Zugriff zugewiesen.
Informationen zum Entfernen externer IP-Adressen finden Sie unter Externe IP-Adressen aus Back-End-VMs entfernen.
Apache ist standardmäßig für die Bindung an eine beliebige IP-Adresse konfiguriert. Interne Passthrough-Network Load Balancer liefern Pakete aus und behalten dabei die Ziel-IP bei.
Achten Sie darauf, dass die auf Ihren primären und Backup-VMs ausgeführte Serversoftware die IP-Adresse der internen Weiterleitungsregel des Load-Balancers überwacht. Wenn Sie mehrere interne Weiterleitungsregeln konfigurieren, achten Sie darauf, dass Ihre Software die interne IP-Adresse überwacht, die mit diesen Regeln verknüpft ist. Die Ziel-IP-Adresse eines Pakets, das ein interner Passthrough-Network Load Balancer an eine Backend-VM liefert, ist die interne IP-Adresse der Weiterleitungsregel.
Zur Vereinfachung der Anleitung führen alle primären und Backend-VMs Debian GNU/Linux 10 aus.
Console
Backend-VMs erstellen
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Wiederholen Sie die nachstehenden Schritte, um vier VMs mit den folgenden Namen- und Zonenkombinationen zu erstellen.
- Name:
vm-a1
, Zone:us-west1-a
- Name:
vm-a2
, Zone:us-west1-a
- Name:
vm-c1
, Zone:us-west1-c
- Name:
vm-c2
, Zone:us-west1-c
- Name:
Klicken Sie auf Instanz erstellen.
Legen Sie den Namen wie in Schritt 2 angegeben fest.
Wählen Sie für die Region
us-west1
aus und legen Sie die Zone wie in Schritt 2 angegeben fest.Prüfen Sie unter Bootlaufwerk, ob das ausgewählte Image Debian GNU/Linux 10 (Buster) ist. Klicken Sie auf Auswählen, wenn Sie das Image ändern möchten.
Klicken Sie auf Erweiterte Optionen.
Klicken Sie auf Netzwerk und konfigurieren Sie die folgenden Felder:
- Geben Sie für Netzwerk-Tags
allow-health-check
undallow-ssh
ein. - Wählen Sie für Netzwerkschnittstellen Folgendes aus:
- Netzwerk:
lb-network
- Subnetz:
lb-subnet
- Netzwerk:
- Geben Sie für Netzwerk-Tags
Klicken Sie auf Verwaltung. Fügen Sie im Feld Startskript das nachfolgende Skript ein. Der Skriptinhalt ist für alle vier VMs gleich:
#! /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.
Instanzgruppen erstellen
Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.
Wiederholen Sie die folgenden Schritte, um mit diesen Kombinationen zwei nicht verwaltete Instanzgruppen mit jeweils zwei VMs zu erstellen.
- Instanzgruppe:
ig-a
, Zone:us-west1-a
, VMs:vm-a1
undvm-a2
- Instanzgruppe:
ig-c
, Zone:us-west1-c
, VMs:vm-c1
undvm-c2
- Instanzgruppe:
Klicken Sie auf Instanzgruppe erstellen.
Klicken Sie auf Neue nicht verwaltete Instanzgruppe.
Legen Sie Name wie in Schritt 2 angegeben fest.
Wählen Sie im Bereich Standort als Region
us-west1
aus und legen Sie dann wie in Schritt 2 angegeben eine Zone fest.Geben Sie bei Netzwerk den Parameter
lb-network
ein.Geben Sie bei Subnetzwerk den Parameter
lb-subnet
ein.Fügen Sie im Bereich VM-Instanzen die in Schritt 2 angegebenen VMs hinzu.
Klicken Sie auf Erstellen.
gcloud
Erstellen Sie vier VMs, indem Sie den folgenden Befehl viermal ausführen und die nachstehenden vier Kombinationen für
VM_NAME
undZONE
verwenden. Der Skriptinhalt ist für alle vier VMs identisch.VM_NAME
:vm-a1
;ZONE
:us-west1-a
VM_NAME
:vm-a2
;ZONE
:us-west1-a
VM_NAME
:vm-c1
;ZONE
:us-west1-c
VM_NAME
:vm-c2
;ZONE
:us-west1-c
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check \ --subnet=lb-subnet \ --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 die zwei nicht verwalteten Instanzgruppen in jeder Zone:
gcloud compute instance-groups unmanaged create ig-a \ --zone=us-west1-a gcloud compute instance-groups unmanaged create ig-c \ --zone=us-west1-c
Fügen Sie den entsprechenden Instanzgruppen die VMs hinzu:
gcloud compute instance-groups unmanaged add-instances ig-a \ --zone=us-west1-a \ --instances=vm-a1,vm-a2 gcloud compute instance-groups unmanaged add-instances ig-c \ --zone=us-west1-c \ --instances=vm-c1,vm-c2
API
Erstellen Sie jetzt vier Back-End-VMs. Stellen Sie dazu vier POST
-Anfragen an die Methode instances.insert
.
Verwenden Sie für die vier VMs die folgenden VM-Namen und -Zonen:
VM_NAME
:vm-a1
;ZONE
:us-west1-a
VM_NAME
:vm-a2
;ZONE
:us-west1-a
VM_NAME
:vm-c1
;ZONE
:us-west1-c
VM_NAME
:vm-c2
;ZONE
:us-west1-c
Ersetzen Sie dabei Folgendes:
PROJECT_ID
: Ihre Projekt-IDZONE
: Zone der InstanzDEBIAN_IMAGE_NAME
ist der Name des Debian-Images für die Instanz. Der aktuelleDEBIAN_IMAGE_NAME
kann mit dem folgendengcloud
-Befehl abgerufen werden:gcloud compute images list \ --filter="family=debian-12"
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/ZONE
/instances
{ "name": "VM_NAME", "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": [ { "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_NAME", "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\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
Erstellen Sie nun zwei Instanzgruppen. Stellen Sie dazu eine POST
-Anfrage an die Methode instanceGroups.insert
. Ersetzen Sie PROJECT_ID
durch Ihre Google Cloud-Projekt-ID.
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" }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-c/instanceGroups
{ "name": "ig-c", "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 Methode instanceGroups.addInstances
. Ersetzen Sie PROJECT_ID
durch Ihre Google Cloud-Projekt-ID.
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", "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a2" } ] }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-c/instanceGroups/ig-c/addInstances
{ "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c1", "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c2" } ] }
Client-VM erstellen
In diesem Beispiel wird eine Client-VM (vm-client
) in derselben Region wie der Load-Balancer erstellt. Mit dem Client wird die Funktionsweise von Failover demonstriert.
Console
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf Instanz erstellen.
Legen Sie als Name
vm-client
fest.Setzen Sie Zone auf
us-west1-a
.Klicken Sie auf Erweiterte Optionen.
Klicken Sie auf Netzwerk und konfigurieren Sie 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 primäre und die Backup-VM.
gcloud compute instances create vm-client \ --zone=us-west1-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=lb-subnet
API
Stellen Sie eine POST
-Anfrage an die Methode instances.insert
.
Ersetzen Sie dabei Folgendes:
PROJECT_ID
: Ihre Projekt-IDDEBIAN_IMAGE_NAME
ist der Name des Debian-Images für die Instanz. Der aktuelleDEBIAN_IMAGE_NAME
kann mit dem folgendengcloud
-Befehl abgerufen werden:gcloud compute images list \ --filter="family=debian-12"
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 }
Komponenten für den Load-Balancer konfigurieren
In diesen Schritten konfigurieren Sie alle Komponenten für den internen Passthrough-Network Load Balancer. Zuerst konfigurieren Sie die Systemdiagnose und den Backend-Dienst und danach die Frontend-Komponenten:
Systemdiagnose: Dieses Beispiel verwendet eine HTTP-Systemdiagnose, die nur auf die HTTP-Antwort
200
(OK) prüft. Weitere Informationen finden Sie im Abschnitt "Systemdiagnose" der Übersicht über den internen Passthrough-Network Load Balancer.Backend-Dienst: Da im Beispiel HTTP-Traffic über den internen Load-Balancer weitergeleitet wird, gibt die Konfiguration TCP und nicht UDP an. Zur Illustration von Failover hat dieser Backend-Dienst eine Failover-Quote von
0.75
.Weiterleitungsregel: Dieses Beispiel erstellt eine einzelne interne Weiterleitungsregel.
Interne IP-Adresse: In diesem Beispiel wird bei der Erstellung der Weiterleitungsregel eine interne IP-Adresse (
10.1.2.99
) festgelegt.
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 für Proxy oder Passthrough die Option Passthrough-Load Balancer aus und klicken Sie auf Weiter.
- Wählen Sie für Öffentlich oder intern die Option Intern aus und klicken Sie auf Weiter.
- Klicken Sie auf Konfigurieren.
Grundlegende Konfiguration
- Legen Sie als Name
be-ilb
fest. - Legen Sie Region auf
us-west1
fest. - Legen Sie für Netzwerk
lb-network
fest. - Click Backend configuration and make the following changes:
- Wählen Sie unter Back-Ends im Bereich Neues Element die Instanzgruppe
ig-a
aus. Achten Sie darauf, dass Diese Instanzgruppe als Failover-Gruppe für Sicherungen verwenden nicht aktiviert ist. Klicken Sie auf Fertig. - Klicken Sie auf Backend hinzufügen. Wählen Sie im angezeigten Bereich Neues Element die Instanzgruppe
ig-c
aus. Klicken Sie das Kästchen Diese Instanzgruppe als Failover-Gruppe für Sicherungen verwenden an. Klicken Sie auf Fertig. - Wählen Sie unter Systemdiagnose die Option Weitere Systemdiagnose erstellen aus, geben Sie die folgenden Informationen ein und klicken Sie auf Speichern und fortfahren:
- Name:
hc-http-80
- Protokoll:
HTTP
- Port:
80
- Proxyprotokoll:
NONE
- Anfragepfad:
/
Wenn Sie die Google Cloud Console zum Erstellen des Load-Balancers verwenden, ist die Systemdiagnose global. Wenn Sie eine regionale Systemdiagnose erstellen möchten, verwenden Siegcloud
oder die API.
- Name:
- Klicken Sie auf Erweiterte Konfigurationen. Konfigurieren Sie im Abschnitt Failover-Richtlinie Folgendes:
- Failover-Quote:
0.75
- Aktivieren Sie Verbindungsausgleich bei Failover aktivieren.
- Failover-Quote:
- Überprüfen Sie, bevor Sie fortfahren, ob sich neben Back-End-Konfiguration ein blaues Häkchen befindet. Gehen Sie diesen Schritt noch einmal durch, wenn nicht.
- Wählen Sie unter Back-Ends im Bereich Neues Element die Instanzgruppe
- Klicken Sie auf Frontend-Konfiguration. In the New Frontend IP and port
section, make the following changes:
- Name:
fr-ilb
- Subnetzwerk:
ilb-subnet
- Wählen Sie unter Interne IP-Adresse die Option Statische interne IP-Adresse reservieren aus, geben Sie die folgenden Informationen ein und klicken Sie dann auf Reservieren:
- Name:
ip-ilb
- Statische IP-Adresse: Selbst auswählen
- Benutzerdefinierte IP-Adresse:
10.1.2.99
- Name:
- Ports: Wählen Sie Einzeln aus und geben Sie als Portnummer
80
ein. - Überprüfen Sie, bevor Sie fortfahren, ob sich neben der Frontend-Konfiguration ein blaues Häkchen befindet. Gehen Sie diesen Schritt noch einmal durch, wenn nicht.
- Name:
- Klicken Sie auf Prüfen und abschließen. Kontrollieren Sie die Einstellungen.
- Klicken Sie auf Erstellen.
gcloud
Erstellen Sie eine neue HTTP-Systemdiagnose, um die TCP-Konnektivität zu den VMs auf Port 80 zu testen.
gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80
Erstellen Sie den Back-End-Dienst für HTTP-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 \ --failover-ratio 0.75
Fügen Sie dem Back-End-Dienst ein primäres Back-End hinzu:
gcloud compute backend-services add-backend be-ilb \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-a
Fügen Sie dem Back-End-Dienst ein Failover-Back-End hinzu:
gcloud compute backend-services add-backend be-ilb \ --region=us-west1 \ --instance-group=ig-c \ --instance-group-zone=us-west1-c \ --failover
Erstellen Sie eine Weiterleitungsregel für den Backend-Dienst. Wenn Sie die Weiterleitungsregel erstellen, geben Sie
10.1.2.99
für die interne IP-Adresse im Subnetz an.gcloud compute forwarding-rules create fr-ilb \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=10.1.2.99 \ --ip-protocol=TCP \ --ports=80 \ --backend-service=be-ilb \ --backend-service-region=us-west1
API
Erstellen Sie die Systemdiagnose. Stellen Sie dazu eine POST
-Anfrage an die Methode regionHealthChecks.insert
. Ersetzen Sie dabei PROJECT_ID
durch Ihre Projekt-ID.
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 Methode regionBackendServices.insert
. Ersetzen Sie dabei PROJECT_ID
durch Ihre Projekt-ID.
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" }, { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups/ig-c", "balancingMode": "CONNECTION" "failover": true } ], "failoverPolicy": { "failoverRatio": 0.75 }, "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "connectionDraining": { "drainingTimeoutSec": 0 } }
Erstellen Sie die Weiterleitungsregel. Stellen Sie dazu eine POST
-Anfrage an die Methode forwardingRules.insert
. Ersetzen Sie dabei PROJECT_ID
durch Ihre Projekt-ID.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/regions/us-west1/forwardingRules
{ "name": "fr-ilb", "IPAddress": "10.1.2.99", "IPProtocol": "TCP", "ports": [ "80", "8008", "8080", "8088" ], "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" }
Tests
Diese Tests zeigen Ihnen, wie Sie die Konfiguration des Load-Balancers validieren und das erwartete Verhalten ermitteln können.
Testverfahren für Clients
Dieses Verfahren nimmt von der Client-VM aus Verbindung mit dem Load-Balancer auf. Verwenden Sie dieses Verfahren für die anderen Tests.
Stellen Sie eine Verbindung zur Client-VM-Instanz her.
gcloud compute ssh vm-client --zone=us-west1-a
Stellen Sie mit
curl
eine Webanfrage an den Load-Balancer, um dessen IP-Adresse zu kontaktieren.curl http://10.1.2.99
Beachten Sie den vom Befehl
curl
zurückgegebenen Text. Der Name der Back-End-VM, die die Antwort generiert, wird in diesem Text angezeigt. Beispiel:Page served from: vm-a1
Ausgangszustand testen
Nachdem Sie den Beispiel-Load-Balancer konfiguriert haben, sollten alle vier Back-End-VMs fehlerfrei sein:
- Die beiden primären VMs
vm-a1
undvm-a2
- Die beiden Backup-VMs
vm-c1
undvm-c2
Folgen Sie dem Testverfahren für Clients. Wiederholen Sie den zweiten Schritt einige Male. Das erwartete Verhalten besteht darin, dass der Traffic von den beiden primären VMs vm-a1
und vm-a2
bereitgestellt wird, da beide fehlerfrei sind. Jede primäre VM sollte etwa in der Hälfte der Fälle eine Antwort liefern, da für diesen Load-Balancer keine Sitzungsaffinität konfiguriert wurde.
Failover testen
Dieser Test simuliert den Ausfall von vm-a1
, sodass Sie das Failover-Verhalten beobachten können.
Stellen Sie eine Verbindung zur VM
vm-a1
her.gcloud compute ssh vm-a1 --zone=us-west1-a
Halten Sie den Apache-Webserver an. Nach zehn Sekunden erkennt Google Cloud diese VM als fehlerhaft. (Die im Rahmen der Konfiguration erstellte Systemdiagnose
hc-http-80
verwendet das Standardprüfintervall von fünf Sekunden und als Fehlerschwellenwert zwei aufeinanderfolgende fehlgeschlagene Versuche.)sudo apachectl stop
Folgen Sie dem Testverfahren für Clients. Wiederholen Sie den zweiten Schritt einige Male. Das erwartete Verhalten besteht darin, dass der Traffic von den beiden Backup-VMs
vm-c1
undvm-c2
bereitgestellt wird. Da nur eine primäre VM,vm-a2
, fehlerfrei ist, beträgt das Verhältnis der Zahl fehlerfreier primärer VMs zur Gesamtzahl primärer VMs0.5
. Diese Zahl liegt unter dem Failover-Schwellenwert von0.75
. Daher hat Google Cloud den aktiven Pool des Load-Balancers neu konfiguriert, um die Sicherungs-VMs zu verwenden. Nun sollte jede Backup-VM etwa in der Hälfte der Fälle eine Antwort geben, wenn für diesen Load-Balancer keine Sitzungsaffinität konfiguriert ist.
Failback testen
Dieser Test simuliert ein Failback durch den Neustart des Apache-Servers auf vm-a1
.
Stellen Sie eine Verbindung zur VM
vm-a1
her.gcloud compute ssh vm-a1 --zone=us-west1-a
Starten Sie den Apache-Webserver und warten Sie zehn Sekunden.
sudo apachectl start
Folgen Sie dem Testverfahren für Clients. Wiederholen Sie den zweiten Schritt einige Male. Das erwartete Verhalten besteht darin, dass der Traffic von den beiden primären VMs
vm-a1
undvm-a2
bereitgestellt wird. Da beide primären VMs fehlerfrei sind, liegt das Verhältnis der Anzahl fehlerfreier primärer VMs zur Gesamtzahl primärer VMs bei1.0
und damit über dem Failover-Schwellenwert von0.75
. Daher hat Google Cloud den aktiven Pool so konfiguriert, dass wieder die primären VMs verwendet werden.
Weitere Back-End-VMs hinzufügen
In diesem Abschnitt wird die Beispielkonfiguration erweitert, indem dem Load-Balancer weitere primäre und Backup-VMs hinzugefügt werden. Dazu werden zwei weitere Back-End-Instanzgruppen erstellt, um zu zeigen, dass Sie primäre und Backup-VMs auf mehrere Zonen in derselben Region verteilen können:
- Eine dritte Instanzgruppe,
ig-d
inus-west1-c
, dient als primäres Back-End mit zwei VMs:vm-d1
vm-d2
- Die vierte Instanzgruppe,
ig-b
inus-west1-a
, dient als Failover-Back-End mit zwei VMs:vm-b1
vm-b2
Die geänderte Architektur dieses Beispiels sieht so aus:
Zusätzliche VMs und Instanzgruppen erstellen
Führen Sie die folgenden Schritte aus, um die zusätzlichen primären und Backup-VMs sowie die zugehörigen nicht verwalteten Instanzgruppen zu erstellen.
Console
Backend-VMs erstellen
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Wiederholen Sie die nachstehenden Schritte, um vier VMs mit den folgenden Namen- und Zonenkombinationen zu erstellen.
- Name:
vm-b1
, Zone:us-west1-a
- Name:
vm-b2
, Zone:us-west1-a
- Name:
vm-d1
, Zone:us-west1-c
- Name:
vm-d2
, Zone:us-west1-c
- Name:
Klicken Sie auf Instanz erstellen.
Legen Sie den Namen wie in Schritt 2 angegeben fest.
Wählen Sie für die Region
us-west1
aus und legen Sie die Zone wie in Schritt 2 angegeben fest.Prüfen Sie unter Bootlaufwerk, ob das ausgewählte Image Debian GNU/Linux 10 (Buster) ist. Klicken Sie auf Auswählen, wenn Sie das Image ändern möchten.
Klicken Sie auf Erweiterte Optionen und nehmen Sie die folgenden Änderungen vor:
- Klicken Sie auf Netzwerk und fügen Sie die folgenden Netzwerk-Tags hinzu:
allow-ssh
undallow-health-check
- Klicken Sie unter Netzwerkschnittstellen auf die Schaltfläche "Bearbeiten", nehmen Sie die folgenden Änderungen vor und klicken Sie auf Fertig:
- Netzwerk:
lb-network
- Subnetz:
lb-subnet
- Primäre interne IP: flüchtig (automatisch)
- Externe IP: sitzungsspezifisch
- Netzwerk:
Klicken Sie auf Verwaltung. Kopieren Sie den folgenden Skriptinhalt und fügen Sie ihn im Feld Startskript ein. Der Skriptinhalt ist für alle vier VMs gleich:
#! /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 Netzwerk und fügen Sie die folgenden Netzwerk-Tags hinzu:
Klicken Sie auf Erstellen.
Instanzgruppen erstellen
Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.
Wiederholen Sie die folgenden Schritte, um mit diesen Kombinationen zwei nicht verwaltete Instanzgruppen mit jeweils zwei VMs zu erstellen.
- Instanzgruppe:
ig-b
, Zone:us-west1-a
, VMs:vm-b1
undvm-b2
- Instanzgruppe:
ig-d
, Zone:us-west1-c
, VMs:vm-d1
undvm-d2
- Instanzgruppe:
Klicken Sie auf Instanzgruppe erstellen.
Klicken Sie auf Neue nicht verwaltete Instanzgruppe.
Legen Sie Name wie in Schritt 2 angegeben fest.
Wählen Sie im Bereich Standort als Region
us-west1
aus und legen Sie dann wie in Schritt 2 angegeben eine Zone fest.Geben Sie bei Netzwerk den Parameter
lb-network
ein.Geben Sie bei Subnetzwerk den Parameter
lb-subnet
ein.Fügen Sie im Bereich VM-Instanzen die in Schritt 2 angegebenen VMs hinzu.
Klicken Sie auf Erstellen.
gcloud
Erstellen Sie vier VMs, indem Sie den folgenden Befehl viermal ausführen und die nachstehenden vier Kombinationen für
VM_NAME
undZONE
verwenden. Der Skriptinhalt ist für alle vier VMs identisch.VM_NAME
:vm-b1
;ZONE
:us-west1-a
VM_NAME
:vm-b2
;ZONE
:us-west1-a
VM_NAME
:vm-d1
;ZONE
:us-west1-c
VM_NAME
:vm-d2
;ZONE
:us-west1-c
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check \ --subnet=lb-subnet \ --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 die zwei nicht verwalteten Instanzgruppen in jeder Zone:
gcloud compute instance-groups unmanaged create ig-b \ --zone=us-west1-a gcloud compute instance-groups unmanaged create ig-d \ --zone=us-west1-c
Fügen Sie den entsprechenden Instanzgruppen die VMs hinzu:
gcloud compute instance-groups unmanaged add-instances ig-b \ --zone=us-west1-a \ --instances=vm-b1,vm-b2 gcloud compute instance-groups unmanaged add-instances ig-d \ --zone=us-west1-c \ --instances=vm-d1,vm-d2
API
Erstellen Sie jetzt vier Back-End-VMs. Stellen Sie dazu vier POST
-Anfragen an die Methode instances.insert
.
Verwenden Sie für die vier VMs die folgenden VM-Namen und -Zonen:
VM_NAME
:vm-b1
;ZONE
:us-west1-a
VM_NAME
:vm-b2
;ZONE
:us-west1-a
VM_NAME
:vm-d1
;ZONE
:us-west1-c
VM_NAME
:vm-d2
;ZONE
:us-west1-c
Ersetzen Sie dabei Folgendes:
PROJECT_ID
: Ihre Projekt-IDDEBIAN_IMAGE_NAME
ist der Name des Debian-Images für die Instanz. Der aktuelleDEBIAN_IMAGE_NAME
kann mit dem folgendengcloud
-Befehl abgerufen werden:gcloud compute images list \ --filter="family=debian-12"
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/ZONE/instances
{ "name": "VM_NAME", "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": [ { "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_NAME", "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\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
Erstellen Sie nun zwei Instanzgruppen. Stellen Sie dazu eine POST
-Anfrage an die Methode instanceGroups.insert
. Ersetzen Sie dabei PROJECT_ID
durch Ihre Projekt-ID.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-a/instanceGroups
{ "name": "ig-b", "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" }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-c/instanceGroups
{ "name": "ig-d", "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 Methode instanceGroups.addInstances
. Ersetzen Sie dabei PROJECT_ID
durch Ihre Projekt-ID.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-a/instanceGroups/ig-b/addInstances
{ "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-b1", "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-b2" } ] }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-c/instanceGroups/ig-d/addInstances
{ "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-d1", "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-d2" } ] }
Primäres Backend hinzufügen
Dieses Verfahren kann als Vorlage dienen, um dem Backend-Dienst eines vorhandenen internen Passthrough-Network Load Balancer eine nicht verwaltete Instanzgruppe als primäres Backend hinzuzufügen. Im konkreten Fall der Beispielkonfiguration zeigt das Verfahren, wie Sie dem Load-Balancer ig-d
die Instanzgruppe be-ilb
als primäres Backend hinzufügen.
Console
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Klicken Sie auf dem Tab Load-Balancer auf den Namen eines vorhandenen internen TCP- oder UDP-Load-Balancers (in diesem Beispiel
be-ilb
).Klicken Sie auf Bearbeiten
.Klicken Sie in der Back-End-Konfiguration auf Back-End hinzufügen und wählen Sie eine nicht verwaltete Instanzgruppe aus (in diesem Beispiel
ig-d
).Achten Sie darauf, dass Diese Instanzgruppe als Failover-Gruppe für Sicherungen verwenden nicht aktiviert ist.
Klicken Sie auf Fertig und anschließend auf Aktualisieren.
gcloud
Verwenden Sie den folgenden Befehl gcloud
, um ein primäres Backend zu einem vorhandenen internen Passthrough-Network Load Balancer-Backend-Dienst hinzuzufügen.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION
Ersetzen Sie dabei Folgendes:
BACKEND_SERVICE_NAME
ist der Name des Back-End-Dienstes des Load-Balancers. Verwenden Sie für das Beispielbe-ilb
.INSTANCE_GROUP_NAME
ist der Name der Instanzgruppe, die als primäres Back-End hinzugefügt werden soll. Verwenden Sie für das Beispielig-d
.INSTANCE_GROUP_ZONE
ist die Zone, in der die Instanzgruppe definiert ist. Verwenden Sie für das Beispielus-west1-c
.REGION
ist die Region des Load-Balancers. Verwenden Sie für das Beispielus-west1
.
API
Fügen Sie einem vorhandenen Back-End-Dienst mit der Methode regionBackendServices.patch
ein Failover-Back-End hinzu.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME { "backends": [ { "balancingMode": "connection", "failover": false, "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME" } ] }
Ersetzen Sie dabei Folgendes:
PROJECT_ID
: Ihre Projekt-IDREGION
ist die Region des Load-Balancers. Verwenden Sie für das Beispielus-west1
.BACKEND_SERVICE_NAME
ist der Name des Back-End-Dienstes des Load-Balancers. Verwenden Sie für das Beispielbe-ilb
.INSTANCE_GROUP_NAME
ist der Name der Instanzgruppe, die als primäres Back-End hinzugefügt werden soll. Verwenden Sie für das Beispielig-d
.INSTANCE_GROUP_ZONE
ist die Zone, in der die Instanzgruppe definiert ist. Verwenden Sie für das Beispielus-west1-c
.
Failover-Backend hinzufügen
Dieses Verfahren kann als Vorlage dienen, um dem Backend-Dienst eines vorhandenen internen Passthrough-Network Load Balancers eine nicht verwaltete Instanzgruppe als primäres Backend hinzuzufügen. Im konkreten Fall der Beispielkonfiguration zeigt das Verfahren, wie Sie dem Load-Balancer ig-b
die Instanzgruppe be-ilb
als primäres Backend hinzufügen.
Console
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Klicken Sie auf dem Tab Load Balancer auf den Namen eines vorhandenen Load-Balancers vom Typ TCP/UDP (intern) (in diesem Beispiel
be-ilb
).Klicken Sie auf Bearbeiten
.Klicken Sie in der Back-End-Konfiguration auf Back-End hinzufügen und wählen Sie eine nicht verwaltete Instanzgruppe aus (in diesem Beispiel
ig-b
).Aktivieren Sie Diese Instanzgruppe als Failover-Gruppe für Sicherungen verwenden.
Klicken Sie auf Fertig und anschließend auf Aktualisieren.
gcloud
Verwenden Sie den folgenden Befehl gcloud
, um ein Failover-Backend zu einem vorhandenen internen Passthrough-Network Load Balancer-Backend-Dienst hinzuzufügen.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION \ --failover
Ersetzen Sie dabei Folgendes:
BACKEND_SERVICE_NAME
ist der Name des Back-End-Dienstes des Load-Balancers. Verwenden Sie für das Beispielbe-ilb
.INSTANCE_GROUP_NAME
ist der Name der Instanzgruppe, die als primäres Back-End hinzugefügt werden soll. Verwenden Sie für das Beispielig-b
.INSTANCE_GROUP_ZONE
ist die Zone, in der die Instanzgruppe definiert ist. Verwenden Sie für das Beispielus-west1-a
.REGION
ist die Region des Load-Balancers. Verwenden Sie für das Beispielus-west1
.
API
Fügen Sie einem vorhandenen Back-End-Dienst mit der Methode regionBackendServices.patch
ein Failover-Back-End hinzu.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME { "backends": [ { "balancingMode": "connection", "failover": true, "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME" } ] }
Ersetzen Sie dabei Folgendes:
PROJECT_ID
: Ihre Projekt-IDBACKEND_SERVICE_NAME
ist der Name des Back-End-Dienstes des Load-Balancers. Verwenden Sie für das Beispielbe-ilb
.INSTANCE_GROUP_NAME
ist der Name der Instanzgruppe, die als primäres Back-End hinzugefügt werden soll. Verwenden Sie für das Beispielig-b
.INSTANCE_GROUP_ZONE
ist die Zone, in der die Instanzgruppe definiert ist. Verwenden Sie für das Beispielus-west1-a
.REGION
ist die Region des Load-Balancers. Verwenden Sie für das Beispielus-west1
.
Primäres oder Failover-Backend konvertieren
Sie können ein primäres Backend in ein Failover-Backend konvertieren oder umgekehrt, ohne die Instanzgruppe aus dem Backend-Dienst des internen Passthrough-Network Load Balancer zu entfernen.
Console
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Klicken Sie auf dem Tab Load Balancer auf den Namen eines vorhandenen Load Balancers vom Typ TCP/UDP (intern).
Klicken Sie auf Bearbeiten
.Klicken Sie im Menü Backend-Konfiguration auf den Namen einer der Backend-Instanzgruppen. Gehen Sie anschließend so vor:
- Aktivieren Sie Diese Instanzgruppe als Failover-Gruppe für Sicherungen verwenden, um diese Instanzgruppe zu einem Failover-Back-End zu machen.
- Deaktivieren Sie Diese Instanzgruppe als Failover-Gruppe für Sicherungen verwenden, um diese Instanzgruppe zu einem primären Back-End zu machen.
Klicken Sie auf Fertig und anschließend auf Aktualisieren.
gcloud
Verwenden Sie den folgenden Befehl gcloud
, um ein vorhandenes primäres Back-End in ein Failover-Back-End umzuwandeln:
gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION \ --failover
Verwenden Sie den folgenden Befehl gcloud
, um ein vorhandenes Failover-Back-End in ein primäres Back-End umzuwandeln:
gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION \ --no-failover
Ersetzen Sie dabei Folgendes:
BACKEND_SERVICE_NAME
ist der Name des Back-End-Dienstes des Load-Balancers.INSTANCE_GROUP_NAME
ist der Name der Instanzgruppe, die als primäres Back-End hinzugefügt werden soll.INSTANCE_GROUP_ZONE
ist die Zone, in der die Instanzgruppe definiert ist.REGION
ist die Region des Load-Balancers.
API
Ein primäres Back-End können Sie in ein Failover-Back-End oder umgekehrt umwandeln. Verwenden Sie dazu die Methode regionBackendServices.patch
.
So konvertieren Sie ein primäres Back-End in ein Failover-Back-End:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME { "backends": [ { "failover": true, "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME" } ] }
So konvertieren Sie ein Failover-Back-End in ein primäres Back-End:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME { "backends": [ { "failover": false, "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME" } ], }
Ersetzen Sie dabei Folgendes:
PROJECT_ID
: Ihre Projekt-IDBACKEND_SERVICE_NAME
ist der Name des Back-End-Dienstes des Load-Balancers.INSTANCE_GROUP_NAME
ist der Name der Instanzgruppe, die als primäres Back-End hinzugefügt werden soll.INSTANCE_GROUP_ZONE
ist die Zone, in der die Instanzgruppe definiert ist.REGION
ist die Region des Load-Balancers.
Failover-Richtlinien konfigurieren
In diesem Abschnitt wird beschrieben, wie Sie eine Failover-Richtlinie für den Backend-Dienst eines internen Passthrough-Network Load Balancers verwalten. Eine Failover-Richtlinie enthält die folgenden Parameter:
- Failover-Quote
- Traffic wird gelöscht, wenn alle Back-End-VMs fehlerhaft sind
- Verbindungsausgleich bei Failover
Weitere Informationen zu den Parametern einer Failover-Richtlinie finden Sie unter:
- Failover-Quote festlegen
- Traffic unterbrechen, wenn keine intakte VM vorhanden ist
- Verbindungsausgleich bei Failover und Failback
Failover-Richtlinie definieren
In der folgenden Anleitung wird beschrieben, wie Sie die Failover-Richtlinie für einen vorhandenen internen Passthrough-Network Load Balancer definieren.
Console
Zum Definieren einer Failover-Richtlinie mit der Google Cloud Console benötigen Sie mindestens ein Failover-Backend.
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Klicken Sie auf dem Tab Load Balancer auf den Namen eines vorhandenen Load Balancers vom Typ TCP/UDP (intern).
Klicken Sie auf Bearbeiten
.Es muss mindestens ein Failover-Back-End vorhanden sein. Bei mindestens einem der Load-Balancer-Back-Ends muss die Option Diese Instanzgruppe als Failover-Gruppe für Sicherungen verwenden aktiviert sein.
Klicken Sie auf Erweiterte Konfigurationen.
- Stellen Sie unter Failover-Richtlinie für Failover-Quote einen Wert im Bereich von
0.0
bis1.0
ein. - Aktivieren Sie Traffic unterbrechen. Der Traffic wird dann unterbrochen, wenn alle aktiven VMs und alle Backup-VMs fehlerhaft sind.
- Aktivieren Sie Verbindungsausgleich bei Failover aktivieren, um bestehende Verbindungen während eines Failovers schnell zu beenden.
- Stellen Sie unter Failover-Richtlinie für Failover-Quote einen Wert im Bereich von
Klicken Sie auf Prüfen und abschließen und dann auf Aktualisieren.
gcloud
Aktualisieren Sie den Backend-Dienst des Load-Balancers, um eine Failover-Richtlinie mit der gcloud CLI zu definieren:
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION \ --failover-ratio FAILOVER_RATIO \ --drop-traffic-if-unhealthy \ --no-connection-drain-on-failover
Ersetzen Sie dabei Folgendes:
BACKEND_SERVICE_NAME
ist der Name des Back-End-Dienstes des Load-Balancers. Verwenden Sie für das Beispielbe-ilb
.REGION
ist die Region des Load-Balancers. Verwenden Sie für das Beispielus-west1
.FAILOVER_RATIO
ist die Failover-Quote. Mögliche Werte liegen im Bereich von0.0
bis1.0
. Verwenden Sie für das Beispiel0.75
.--drop-traffic-if-unhealthy
weist den Load-Balancer an, Traffic zu unterbrechen, wenn alle primären und alle Sicherungs-VMs fehlerhaft sind. Ändern Sie diesen Wert in--no-drop-traffic-if-unhealthy
, wenn Sie den Traffic auf alle primären VMs verteilen möchten, wenn alle Back-End-VMs fehlerhaft sind.--no-connection-drain-on-failover
weist den Load-Balancer an, vorhandene TCP-Verbindungen während eines Failovers schnell zu beenden. Verwenden Sie--connection-drain-on-failover
, um den Verbindungsausgleich während eines Failovers zu aktivieren.
API
Verwenden Sie die Methode regionBackendServices.patch
zum Festlegen der Failover-Richtlinie.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME { "failoverPolicy": { "failoverRatio": FAILOVER_RATIO, "dropTrafficIfUnhealthy": [true|false], "disableConnectionDrainOnFailover": [true|false] } }
Ersetzen Sie dabei Folgendes:
PROJECT_ID
: Ihre Projekt-IDREGION
ist die Region des Load-Balancers.BACKEND_SERVICE_NAME
ist der Name des Back-End-Dienstes des Load-Balancers.FAILOVER_RATIO
ist die Failover-Quote. Mögliche Werte liegen im Bereich von0.0
bis1.0
.- Durch Festlegen von
dropTrafficIfUnhealthy
auftrue
wird der Load-Balancer angewiesen, Traffic zu unterbrechen, wenn alle primären und alle Sicherungs-VMs fehlerhaft sind. Setzen Sie diesen Wert auffalse
, wenn Sie Traffic auf alle primären VMs verteilen möchten, wenn alle Back-End-VMs fehlerhaft sind. - Durch Festlegen von
disableConnectionDrainOnFailover
auftrue
wird der Load-Balancer angewiesen, vorhandene TCP-Verbindungen bei einem Failover schnell zu beenden. Legen Sie hierfalse
fest, um den Verbindungsausgleich während eines Failovers zu aktivieren.
Failover-Richtlinie aufrufen
In der folgenden Anleitung wird beschrieben, wie Sie die vorhandene Failover-Richtlinie für einen internen Passthrough-Network Load Balancer aufrufen.
Console
In der Google Cloud Console werden die vorhandenen Einstellungen für Failover-Richtlinien angezeigt, wenn Sie einen internen Passthrough-Network Load Balancer bearbeiten. Eine Anleitung hierzu finden Sie unter Eine Failover-Richtlinie definieren.
gcloud
Verwenden Sie den folgenden Befehl, um die Einstellungen der Failover-Richtlinie mithilfe der gcloud CLI aufzulisten. Für nicht definierte Einstellungen in einer Failover-Richtlinie werden die Standardwerte der Failover-Richtlinie verwendet.
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region REGION \ --format="get(failoverPolicy)"
Ersetzen Sie dabei Folgendes:
BACKEND_SERVICE_NAME
ist der Name des Back-End-Dienstes des Load-Balancers.REGION
ist die Region des Load-Balancers.
API
Verwenden Sie die Methode regionBackendServices.get
zum Aufrufen der Failover-Richtlinie.
Als Antwort auf die API-Anfrage wird die Failover-Richtlinie angezeigt. Hier ein Beispiel:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME
Ersetzen Sie dabei Folgendes:
PROJECT_ID
: Ihre Projekt-IDREGION
ist die Region des Load-Balancers.BACKEND_SERVICE_NAME
ist der Name des Back-End-Dienstes des Load-Balancers.
{ ... "failoverPolicy": { "disableConnectionDrainOnFailover": false, "dropTrafficIfUnhealthy": false, "failoverRatio": 0.75 ... }
Nächste Schritte
- Wichtige Grundlagen finden Sie unter Übersicht über den internen Passthrough-Network Load Balancern.
- Wichtige Informationen zum Failover finden Sie unter Failover-Konzepte für interne Passthrough-Network Load Balancer.
- Unter Internen Passthrough-Network Load Balancer einrichten finden Sie ein Beispiel für eine interne Network Load Balancer-Konfiguration.
- Informationen zum Konfigurieren von Logging und Monitoring für den Network Load Balancer des Netzwerk-Load-Balancers finden Sie unter Logging und Monitoring für Network Load Balancer.
- Informationen zum Zugriff auf interne Passthrough-Network Load Balancer von Peer-Netzwerken, die mit Ihrem VPC-Netzwerk verbunden sind, finden Sie unter Interne Passthrough-Network Load Balancer und verbundene Netzwerke.
- Informationen zur Behebung von Problemen mit dem internen Passthrough-Network Load Balancer finden Sie unter Fehlerbehebung bei internen Passthrough-Network Load Balancern.
- Einrichtung des Load-Balancers bereinigen