Auf dieser Seite wird gezeigt, wie Sie einen regionenübergreifenden internen Application Load Balancer bereitstellen, um Traffic mithilfe von Hybridkonnektivität auf Netzwerk-Endpunkte zu verteilen, die sich lokal oder in anderen öffentlichen Clouds befinden.
In der Übersicht über NEGs mit Hybrid-Konnektivität werden die Netzwerkanforderungen zum Einrichten von Hybrid-Load-Balancing erläutert.
Einrichtung: Übersicht
In diesem Beispiel wird ein regionenübergreifender interner Application Load Balancer für NEG-Back-Ends für gemischte zonale und Hybridkonnektivität eingerichtet, wie in der folgenden Abbildung dargestellt:
Sie müssen Hybridkonnektivität konfigurieren, bevor Sie eine Bereitstellung mit Hybrid-Load-Balancing einrichten. Verwenden Sie je nach ausgewähltem Produkt für Hybridkonnektivität entweder Cloud VPN oder Cloud Interconnect (Dedicated oder Partner).
SSL-Zertifikatsressource einrichten
Erstellen Sie eine Zertifikatmanager-SSL-Zertifikatsressource, wie im Folgenden beschrieben:
- Globales selbstverwaltetes Zertifikat bereitstellen
- Erstellen Sie ein von Google verwaltetes Zertifikat, das von der Certificate Authority Service-Instanz ausgestellt wurde.
- Von Google verwaltetes Zertifikat mit DNS-Autorisierung erstellen
Wir empfehlen die Verwendung eines von Google verwalteten Zertifikats.
Berechtigungen
Zum Einrichten des Hybrid-Load-Balancings benötigen Sie die folgenden Berechtigungen:
Mit Google Cloud
- Berechtigungen zum Herstellen von Hybridkonnektivität zwischen Google Cloud und Ihrer lokalen Umgebung oder anderen Cloud-Umgebungen. Eine Liste der erforderlichen Berechtigungen finden Sie in der jeweiligen Dokumentation zum Netzwerkverbindungsprodukt.
- Berechtigungen zum Erstellen einer Hybridkonnektivitäts-NEG und des Load-Balancers.
Die Rolle „Compute-Load-Balancer-Administrator” (
roles/compute.loadBalancerAdmin
) enthält die zum Ausführen der in dieser Anleitung beschriebenen Aufgaben erforderlichen Berechtigungen.
In Ihrer lokalen Umgebung oder sonstigen Cloud-Umgebung außerhalb von Google Cloud
- Berechtigungen zum Konfigurieren von Netzwerkendpunkten, damit Dienste in Ihrer lokalen Umgebung oder in anderen Cloud-Umgebungen über eine
IP:Port
-Kombination aus Google Cloud erreicht werden können. Für weitere Informationen wenden Sie sich an den Netzwerkadministrator Ihrer Umgebung. - Berechtigungen zum Erstellen von Firewallregeln in Ihrer lokalen Umgebung oder in anderen Cloud-Umgebungen, damit die Systemdiagnoseprüfungen von Google die Endpunkte erreichen können.
- Berechtigungen zum Konfigurieren von Netzwerkendpunkten, damit Dienste in Ihrer lokalen Umgebung oder in anderen Cloud-Umgebungen über eine
Um die Anleitung auf dieser Seite abzuschließen, müssen Sie außerdem eine Hybridkonnektivitäts-NEG, einen Load-Balancer sowie zonale NEGs (und ihre Endpunkte) erstellen, die als Google Cloud-basierte Back-Ends für den Load-Balancer dienen.
Sie sollten entweder Inhaber oder Bearbeiter des Projekts sein oder die folgenden IAM-Rollen für Compute Engine haben:
Task | Erforderliche Rolle |
---|---|
Netzwerke, Subnetze und Load-Balancer-Komponenten erstellen | Compute-Netzwerkadministrator
(roles/compute.networkAdmin ) |
Firewallregeln hinzufügen und löschen | Compute-Sicherheitsadministrator
(roles/compute.securityAdmin ) |
Instanzen erstellen | Compute-Instanzadministrator
(roles/compute.instanceAdmin ) |
Hybridkonnektivität einrichten
Ihre Google Cloud-Umgebung und Ihre lokale Umgebung oder sonstigen Cloud-Umgebungen müssen über Hybridkonnektivität verbunden sein. Dafür werden entweder Cloud Interconnect-VLAN-Anhänge oder Cloud VPN-Tunnel mit Cloud Router verwendet. Wir empfehlen die Verwendung einer Verbindung mit Hochverfügbarkeit.
Ein Cloud Router, der für das globale dynamische Routing aktiviert ist, erkennt den spezifischen Endpunkt über das Border Gateway Protocol (BGP) und programmiert ihn in Ihrem Google Cloud-VPC-Netzwerk. Regionales dynamisches Routing wird nicht unterstützt. Statische Routen werden ebenfalls nicht unterstützt.
Das VPC-Netzwerk, mit dem Sie entweder Cloud Interconnect oder Cloud VPN konfigurieren, ist dasselbe Netzwerk, das Sie auch zum Konfigurieren der Bereitstellung des Hybrid-Load-Balancing verwenden. Achten Sie darauf, dass die Subnetz-CIDR-Bereiche Ihres VPC-Netzwerks nicht mit Ihren Remote-CIDR-Bereichen in Konflikt stehen. Bei Überschneidung von IP-Adressen haben Subnetzrouten Vorrang vor Remote-Verbindungen.
Eine Anleitung finden Sie in der folgenden Dokumentation:
Umgebung außerhalb von Google Cloud einrichten
Führen Sie die folgenden Schritte aus, um Ihre lokale Umgebung oder sonstige Cloud-Umgebung für das Hybrid-Load-Balancing einzurichten:
- Konfigurieren Sie Netzwerkendpunkte, um lokale Dienste in Google Cloud verfügbar zu machen (
IP:Port
). - Konfigurieren Sie Firewallregeln in Ihrer lokalen Umgebung oder sonstigen Cloud-Umgebung.
- Konfigurieren Sie Cloud Router so, dass bestimmte erforderliche Routen in Ihrer privaten Umgebung beworben werden.
Netzwerkendpunkte einrichten
Nachdem Sie die Hybridkonnektivität eingerichtet haben, konfigurieren Sie einen oder mehrere Netzwerkendpunkte innerhalb Ihrer lokalen Umgebung oder anderer Cloud-Umgebungen, die über Cloud Interconnect oder Cloud VPN mit einer IP:port
-Kombination erreichbar ist. Diese IP:port
-Kombination wird als einzelner Endpunkt oder als mehrere Endpunkte für die Hybridkonnektivitäts-NEG konfiguriert, die später in diesem Vorgang in Google Cloud erstellt wird.
Wenn mehrere Pfade zum IP-Endpunkt vorhanden sind, folgt das Routing dem unter Cloud Router – Übersicht beschriebenen Verhalten.
Firewallregeln einrichten
Die folgenden Firewallregeln müssen in Ihrer lokalen Umgebung oder einer anderen Cloud-Umgebung erstellt werden:
- Erstellen Sie eine Firewallregel „eingehenden Traffic zulassen“ in lokalen oder anderen Cloudumgebungen, damit Traffic aus dem Nur-Proxy-Subnetz der Region die Endpunkte erreichen kann.
Die Prüfbereiche der Systemdiagnose von Google müssen bei Hybrid-NEGs nicht auf die Zulassungsliste gesetzt werden. Wenn Sie jedoch eine Kombination aus hybriden und zonalen NEGs in einem einzelnen Backend-Dienst verwenden, müssen Sie die Prüfbereiche der Systemdiagnose von Google für die zonalen NEGs auf die Zulassungsliste setzen.
Routen bewerben
Konfigurieren Sie Cloud Router für die Bewerbung der folgenden benutzerdefinierten IP-Bereiche in Ihrer lokalen Umgebung oder einer anderen Cloud-Umgebung:
- Der Bereich des Nur-Proxy-Subnetzes der Region.
Google Cloud-Umgebung einrichten
Verwenden Sie für die folgenden Schritte dasselbe VPC-Netzwerk (in diesem Verfahren NETWORK
genannt), mit dem die Hybridkonnektivität zwischen den Umgebungen konfiguriert wurde.
Achten Sie außerdem darauf, dass die verwendeten Regionen (in diesem Verfahren REGION_A
und REGION_B
genannt) mit den Regionen übereinstimmen, die zum Erstellen des Cloud VPN-Tunnels oder der Cloud Interconnect-VLAN-Anhänge verwendet werden.
GEO
konfigurieren, um Clienttraffic bei regionalen Ausfällen an die Load-Balancer-VIP in der Region weiterzuleiten, die dem Client am nächsten ist.
Backend-Subnetze konfigurieren
Verwenden Sie dieses Subnetz, um die zonalen NEG-Back-Ends des Load Balancers zu erstellen:
Console
Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
Rufen Sie das Netzwerk auf, das zum Konfigurieren der Hybridkonnektivität zwischen den Umgebungen verwendet wurde.
Im Bereich Subnetze:
- Legen Sie Modus für Subnetzerstellung auf Benutzerdefiniert fest.
- Geben Sie im Bereich Neues Subnetz folgende Informationen ein:
- Geben Sie einen Namen für das Subnetz an.
- Wählen Sie eine Region aus: REGION_A
- Geben Sie einen IP-Adressbereich ein.
- Klicken Sie auf Fertig.
Klicken Sie auf Erstellen.
Klicken Sie auf Subnetz hinzufügen und wiederholen Sie die vorherigen Schritte für REGION_B, um weitere Subnetze in verschiedenen Regionen hinzuzufügen.
gcloud
Erstellen Sie Subnetze in dem Netzwerk, in dem die Hybridkonnektivität zwischen den Umgebungen konfiguriert wurde.
gcloud compute networks subnets create SUBNET_A \ --network=NETWORK \ --range=LB_SUBNET_RANGE1 \ --region=REGION_A
gcloud compute networks subnets create SUBNET_B \ --network=NETWORK \ --range=LB_SUBNET_RANGE2 \ --region=REGION_B
API
Stellen Sie eine POST
-Anfrage an die Methode subnetworks.insert
.
Ersetzen Sie dabei PROJECT_ID
durch Ihre Projekt-ID.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/subnetworks { "name": "SUBNET_A", "network": "projects/PROJECT_ID/global/networks/NETWORK", "ipCidrRange": "LB_SUBNET_RANGE1", "region": "projects/PROJECT_ID/regions/REGION_A", }
Stellen Sie eine POST
-Anfrage an die Methode subnetworks.insert
.
Ersetzen Sie dabei PROJECT_ID
durch Ihre Projekt-ID.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/subnetworks { "name": "SUBNET_B", "network": "projects/PROJECT_ID/global/networks/NETWORK", "ipCidrRange": "LB_SUBNET_RANGE2", "region": "projects/PROJECT_ID/regions/REGION_B", }
Ersetzen Sie Folgendes:
SUBNET_A
undSUBNET_B
: die Namen der SubnetzeLB_SUBNET_RANGE1
undLB_SUBNET_RANGE2
: durch die IP-Adressbereiche für die SubnetzeREGION_A
undREGION_B
: die Regionen, in denen Sie den Load Balancer konfiguriert haben
Nur-Proxy-Subnetz konfigurieren
Ein Nur-Proxy-Subnetz stellt eine Reihe von IP-Adressen bereit, die Google zum Ausführen von Envoy-Proxys in Ihrem Namen verwendet. Die Proxys beenden Verbindungen vom Client und erstellen neue Verbindungen zu den Back-Ends.
Dieses Nur-Proxy-Subnetz wird von allen Envoy-basierten regionalen Load-Balancern in derselben Region des VPC-Netzwerks verwendet. Pro Zweck, Region und Netzwerk kann jeweils nur ein Nur-Proxy-Subnetz aktiv sein.
Console
Wenn Sie die Google Cloud Console verwenden, können Sie das Nur-Proxy-Subnetz später auf der Seite Load Balancing erstellen.
Führen Sie die folgenden Schritte aus, wenn Sie jetzt das Nur-Proxy-Subnetz erstellen möchten:
Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
- Klicken Sie auf den Namen des VPC-Netzwerks.
- Klicken Sie auf dem Tab Subnetze auf Subnetz hinzufügen.
- Geben Sie einen Namen für das Nur-Proxy-Subnetz an.
- Wählen Sie in der Liste Region REGION_A aus.
- Wählen Sie in der Liste Zweck die Option Regionenübergreifender verwalteter Proxy aus.
- Geben Sie im Feld IP-Adressbereich den Wert
10.129.0.0/23
ein. - Klicken Sie auf Hinzufügen.
Erstellen Sie das Nur-Proxy-Subnetz in REGION_B.
- Klicken Sie auf Subnetz hinzufügen.
- Geben Sie einen Namen für das Nur-Proxy-Subnetz an.
- Wählen Sie in der Liste Region REGION_B aus.
- Wählen Sie in der Liste Zweck die Option Regionenübergreifender verwalteter Proxy aus.
- Geben Sie im Feld IP-Adressbereich den Wert
10.130.0.0/23
ein. - Klicken Sie auf Hinzufügen.
gcloud
Erstellen Sie das Nur-Proxy-Subnetz mit dem Befehl gcloud compute networks subnets create
.
gcloud compute networks subnets create PROXY_SN_A \ --purpose=GLOBAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION_A \ --network=NETWORK \ --range=PROXY_ONLY_SUBNET_RANGE1
gcloud compute networks subnets create PROXY_SN_B \ --purpose=GLOBAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION_B \ --network=NETWORK \ --range=PROXY_ONLY_SUBNET_RANGE2
Ersetzen Sie Folgendes:
PROXY_SN_A
undPROXY_SN_B
: die Namen der Nur-Proxy-SubnetzePROXY_ONLY_SUBNET_RANGE1
undPROXY_ONLY_SUBNET_RANGE2
: der IP-Adressbereich für die Nur-Proxy-SubnetzeREGION_A
undREGION_B
: die Regionen, in denen Sie den Load-Balancer konfiguriert haben
API
Erstellen Sie das Nur-Proxy-Subnetz mit der Methode subnetworks.insert
und ersetzen Sie PROJECT_ID
dabei durch Ihre Projekt-ID.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/subnetworks { "name": "PROXY_SN_A", "ipCidrRange": "PROXY_ONLY_SUBNET_RANGE1", "network": "projects/PROJECT_ID/global/networks/NETWORK", "region": "projects/PROJECT_ID/regions/REGION_A", "purpose": "GLOBAL_MANAGED_PROXY", "role": "ACTIVE" }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/subnetworks { "name": " PROXY_SN_B", "ipCidrRange": "PROXY_ONLY_SUBNET_RANGE2", "network": "projects/PROJECT_ID/global/networks/NETWORK", "region": "projects/PROJECT_ID/regions/REGION_B", "purpose": "GLOBAL_MANAGED_PROXY", "role": "ACTIVE" }
Firewallregeln erstellen
In diesem Beispiel erstellen Sie die folgenden Firewallregeln für die zonalen NEG-Back-Ends in Google Cloud:
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 zonalen NEGs zu identifizieren, auf die sie angewendet werden soll.fw-allow-ssh
: Eine Regel für eingehenden Traffic, die 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 VM-Instanzen zu identifizieren, auf die sie angewendet werden soll.fw-allow-proxy-only-subnet
: eine Regel für eingehenden Traffic, die zulässt, dass Verbindungen vom Nur-Proxy-Subnetz die zonalen NEG-Back-Ends erreichen.
Console
Rufen Sie in der Google Cloud Console die Seite der Firewall-Richtlinien auf.
Klicken Sie auf Firewallregel erstellen, um die Regel zu erstellen, die Traffic von Systemdiagnoseprüfungen zulässt:
- Geben Sie als Namen
fw-allow-health-check
ein. - Wählen Sie für Netzwerk die Option NETWORK aus.
- Wählen Sie unter Ziele die Option Angegebene Ziel-Tags aus.
- Tragen Sie im Feld Ziel-Tags
allow-health-check
ein. - Legen Sie unter Quellfilter die Option IPv4-Bereiche fest.
- Legen Sie unter Quell-IPv4-Bereiche die Werte
130.211.0.0/22
und35.191.0.0/16
fest. - Wählen Sie unter Protokolle und Ports die Option Angegebene Protokolle und Ports aus.
- Wählen Sie TCP aus und geben Sie
80
als Portnummer ein. - Klicken Sie auf Erstellen.
- Geben Sie als Namen
Klicken Sie noch einmal auf Firewallregel erstellen, um die Regel zu erstellen, die eingehende SSH-Verbindungen zulässt:
- Name:
fw-allow-ssh
- Netzwerk: 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.
- Wählen Sie TCP aus und geben Sie
22
als Portnummer ein. - Klicken Sie auf Erstellen.
- Name:
Klicken Sie noch einmal auf Firewallregel erstellen, um die Regel zu erstellen, die eingehende Verbindungen vom Nur-Proxy-Subnetz zulässt:
- Name:
fw-allow-proxy-only-subnet
- Netzwerk: NETWORK
- Priorität:
1000
- Trafficrichtung: Eingehend
- Aktion bei Übereinstimmung: Zulassen
- Ziele: Angegebene Ziel-Tags
- Zieltags:
allow-proxy-only-subnet
- Quellfilter: IPv4-Bereiche.
- IPv4-Quellbereiche: PROXY_ONLY_SUBNET_RANGE1 und PROXY_ONLY_SUBNET_RANGE2
- Protokolle und Ports: Wählen Sie Angegebene Protokolle und Ports aus.
- Wählen Sie TCP aus und geben Sie
80
als Portnummer ein. - Klicken Sie auf Erstellen.
- Name:
gcloud
Erstellen Sie die Regel
fw-allow-health-check-and-proxy
, damit die Google Cloud-Systemdiagnosen die Backend-Instanzen auf dem TCP-Port80
erreichen können:gcloud compute firewall-rules create fw-allow-health-check \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp:80
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=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Erstellen Sie eine Firewallregel zum Zulassen von eingehendem Traffic für das Nur-Proxy-Subnetz, damit der Load-Balancer mit Backend-Instanzen auf dem TCP-Port
80
kommunizieren kann:gcloud compute firewall-rules create fw-allow-proxy-only-subnet \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-proxy-only-subnet \ --source-ranges=PROXY_ONLY_SUBNET_RANGE1,PROXY_ONLY_SUBNET_RANGE2 \ --rules=tcp:80
Zonale NEG einrichten
Für Google Cloud-basierte Back-Ends sollten Sie mehrere zonale NEGs in derselben Region konfigurieren, in der Sie Hybridkonnektivität konfiguriert haben.
Richten Sie in diesem Beispiel eine zonale NEG mit Endpunkten des Typs GCE_VM_IP_PORT
in der Region REGION_A
ein. Erstellen Sie zuerst die VMs in der Zone ZONE_A
. Erstellen Sie dann eine zonale NEG in der Zone ZONE_A
und fügen Sie dann der NEG die Netzwerkendpunkte der VMs hinzu.
Richten Sie zur Unterstützung der Hochverfügbarkeit eine ähnliche zonale NEG in der Region REGION_B
ein. Wenn Back-Ends in einer Region ausfallen, wird der Traffic auf die andere Region umgeleitet.
VMs erstellen
Console
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Wiederholen Sie die Schritte 3 bis 8 pro VM mit folgenden Kombinationen aus Name und Zone.
- Name:
vm-a1
- Zone: ZONE_A in der Region REGION_A
- Subnetz: SUBNET_A
- Name:
vm-b1
- Zone: ZONE_B in der Region REGION_B
- Subnetz: SUBNET_B
- Name:
Klicken Sie auf Instanz erstellen.
Legen Sie den Namen wie im vorherigen Schritt angegeben fest.
Wählen Sie unter Region die Option wie im vorherigen Schritt angegeben aus.
Wählen Sie unter Zone die Option wie im vorherigen Schritt angegeben aus.
Achten Sie im Bereich Bootlaufwerk darauf, dass als Bootlaufwerk-Optionen das Betriebssystem Debian und die Version 10 (Buster) ausgewählt sind. Klicken Sie auf Auswählen, um das Image bei Bedarf zu ändern.
Maximieren Sie im Abschnitt Erweiterte Optionen den Bereich Netzwerk und gehen Sie dann so vor:
- Fügen Sie die folgenden Netzwerk-Tags hinzu:
allow-ssh
,allow-health-check
undallow-proxy-only-subnet
. - Klicken Sie im Bereich Netzwerkschnittstellen auf Netzwerkschnittstelle hinzufügen, nehmen Sie die folgenden Änderungen vor und klicken Sie dann auf Fertig:
- Netzwerk: NETWORK
- Subnetzwerk: Wie im vorherigen Schritt angegeben.
- Primäre interne IP: sitzungsspezifisch (automatisch)
- Externe IP: sitzungsspezifisch
Maximieren Sie die Verwaltung. Kopieren Sie den folgenden Scriptinhalt und fügen Sie ihn im Feld Automatisierung ein. Der Scriptinhalt ist für alle VMs identisch.
#! /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
- Fügen Sie die folgenden Netzwerk-Tags hinzu:
Klicken Sie auf Erstellen.
gcloud
Erstellen Sie die VMs. Führen Sie dazu den folgenden Befehl zweimal aus und verwenden Sie diese Kombinationen für den Namen der VM und ihrer Zone. Der Skriptinhalt ist für beide VMs identisch.
gcloud compute instances create VM_NAME \ --zone=GCP_NEG_ZONE \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --subnet=LB_SUBNET_NAME \ --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'
VM_NAME
vonvm-a1
- Die Zone
GCP_NEG_ZONE
alsZONE_A
in der RegionREGION_A
- Das Subnetz
LB_SUBNET_NAME
alsSUBNET_A
- Die Zone
VM_NAME
vonvm-b1
- Zone
GCP_NEG_ZONE
alsZONE_B
in der RegionREGION_B
- Subnetz
LB_SUBNET_NAME
alsSUBNET_B
- Zone
Zonale NEG erstellen
Console
So erstellen Sie eine zonale Netzwerk-Endpunktgruppe:
Rufen Sie in der Google Cloud Console die Seite Netzwerk-Endpunktgruppen auf.
Wiederholen Sie die Schritte 3 bis 8 pro zonaler VM mit folgenden Kombinationen aus Name und Zone.
- Name:
neg-1
- Zone: ZONE_A in der Region REGION_A
- Subnetz: SUBNET_A
- Name:
neg-2
- Zone: ZONE_B in der Region REGION_B
- Subnetz: SUBNET_B
- Name:
Klicken Sie auf Netzwerk-Endpunktgruppe erstellen.
Legen Sie den Namen wie im vorherigen Schritt angegeben fest.
Wählen Sie den Typ der Netzwerk-Endpunktgruppe aus: Netzwerk-Endpunktgruppe (zonal).
Wählen Sie das Netzwerk aus: NETWORK
Wählen Sie das Subnetzwerk wie im vorherigen Schritt angegeben aus.
Wählen Sie die Zone wie im vorherigen Schritt angegeben aus.
Geben Sie den Standardport ein:
80
.Klicken Sie auf Erstellen.
Fügen Sie der zonalen NEG Endpunkte hinzu:
Rufen Sie in der Google Cloud Console die Seite Netzwerk-Endpunktgruppen auf.
Klicken Sie auf den Namen der Netzwerk-Endpunktgruppe, die im vorherigen Schritt erstellt wurde. Die Seite Netzwerk-Endpunktgruppendetails wird angezeigt.
Klicken Sie im Bereich Netzwerkendpunkte in dieser Gruppe auf Netzwerkendpunkt hinzufügen. Die Seite Netzwerk-Endpunkt hinzufügen wird angezeigt.
Wählen Sie eine VM-Instanz aus, um deren interne IP-Adressen als Netzwerkendpunkte hinzuzufügen. Im Abschnitt Netzwerkschnittstelle werden der Name, die Zone und das Subnetz der VM angezeigt.
Geben Sie die IP-Adresse des neuen Netzwerkendpunkts ein.
Wählen Sie den Porttyp aus.
- Wenn Sie Standard auswählen, wird für den Endpunkt der Standardport
80
für alle Endpunkte in der Netzwerk-Endpunktgruppe verwendet. Dies ist für unser Beispiel ausreichend, da der Apache-Server Anfragen an Port80
verarbeitet. - Wenn Sie Benutzerdefiniert auswählen, geben Sie die Portnummer für den zu verwendenden Endpunkt ein.
- Wenn Sie Standard auswählen, wird für den Endpunkt der Standardport
Klicken Sie zum Hinzufügen weiterer Endpunkte auf Netzwerkendpunkt hinzufügen und wiederholen Sie die vorherigen Schritte.
Nachdem Sie alle Endpunkte hinzugefügt haben, klicken Sie auf Erstellen.
gcloud
Erstellen Sie zonale NEGs (mit
GCE_VM_IP_PORT
-Endpunkten) mit den Kombinationen aus Name, Zone und Subnetz. Führen Sie den Befehlgcloud compute network-endpoint-groups create
aus.gcloud compute network-endpoint-groups create GCP_NEG_NAME \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=GCP_NEG_ZONE \ --network=NETWORK \ --subnet=LB_SUBNET_NAME
- Name:
neg-1
- Zone
GCP_NEG_ZONE
:ZONE_A
in der RegionREGION_A
- Subnetz
LB_SUBNET_NAME
:SUBNET_A
- Zone
- Name:
neg-2
- Zone
GCP_NEG_ZONE
:ZONE_B
in der RegionREGION_B
- Subnetz
LB_SUBNET_NAME
:SUBNET_B
- Zone
Sie können entweder mit der Option
--default-port
beim Erstellen der NEG einen Port angeben oder für jeden Endpunkt eine Portnummer angeben, wie im nächsten Schritt gezeigt.- Name:
Fügen Sie Endpunkte zu
neg1
undneg2
hinzu.gcloud compute network-endpoint-groups update neg1 \ --zone=ZONE_A \ --add-endpoint='instance=vm-a1,port=80'
gcloud compute network-endpoint-groups update neg2 \ --zone=ZONE_B \ --add-endpoint='instance=vm-b1,port=80'
Hybridkonnektivitäts-NEG einrichten
Verwenden Sie beim Erstellen der NEG eine Zone, die die geografische Entfernung zwischen Google Cloud und Ihrer lokalen oder sonstigen Cloud-Umgebung minimiert. Wenn Sie beispielsweise einen Dienst in einer lokalen Umgebung in Frankfurt hosten, können Sie beim Erstellen der NEG die Google Cloud-Zone europe-west3-a
angeben.
Wenn Sie Cloud Interconnect verwenden, sollte sich die Zone zum Erstellen der NEG in derselben Region befinden, in der der Cloud Interconnect-Anhang konfiguriert wurde.
Hybrid-NEGs unterstützen nur verteilte Envoy-Systemdiagnosen.
Console
So erstellen Sie eine Endpunktgruppe in einer Hybridkonnektivität:
Rufen Sie in der Google Cloud Console die Seite Netzwerk-Endpunktgruppen auf.
Klicken Sie auf Netzwerk-Endpunktgruppe erstellen.
Wiederholen Sie die Schritte 4 bis 9 pro Hybrid-NEG mit folgenden Kombinationen aus Name und Zone.
- Name ON_PREM_NEG_NAME:
hybrid-1
- Zone: ON_PREM_NEG_ZONE1
- Subnetz: SUBNET_A
- Name ON_PREM_NEG_NAME:
hybrid-2
- Zone: ON_PREM_NEG_ZONE2
- Subnetz: SUBNET_B
- Name ON_PREM_NEG_NAME:
Legen Sie den Namen wie im vorherigen Schritt angegeben fest.
Wählen Sie den Typ der Netzwerk-Endpunktgruppe aus: Hybridkonnektivitätsnetzwerk-Endpunktgruppe (zonal).
Wählen Sie das Netzwerk aus: NETWORK
Wählen Sie das Subnetz wie im vorherigen Schritt angegeben aus.
Wählen Sie die Zone wie im vorherigen Schritt angegeben aus.
Geben Sie den Standardport ein.
Klicken Sie auf Erstellen.
Fügen Sie der Hybridkonnektivitäts-NEG Endpunkte hinzu:
Rufen Sie in der Google Cloud Console die Seite Netzwerk-Endpunktgruppen auf.
Klicken Sie auf den Namen der Netzwerk-Endpunktgruppe, die im vorherigen Schritt erstellt wurde. Die Seite Netzwerk-Endpunktgruppendetails wird angezeigt.
Klicken Sie im Bereich Netzwerkendpunkte in dieser Gruppe auf Netzwerkendpunkt hinzufügen. Die Seite Netzwerk-Endpunkt hinzufügen wird angezeigt.
Geben Sie die IP-Adresse des neuen Netzwerkendpunkts ein.
Wählen Sie den Porttyp aus.
- Wenn Sie Standard auswählen, wird für den Endpunkt der Standardport für alle Endpunkte in der Netzwerk-Endpunktgruppe verwendet.
- Wenn Sie Benutzerdefiniert auswählen, können Sie eine andere Portnummer für den zu verwendenden Endpunkt eingeben.
Klicken Sie zum Hinzufügen weiterer Endpunkte auf Netzwerkendpunkt hinzufügen und wiederholen Sie die vorherigen Schritte.
Nachdem Sie alle Nicht-Google Cloud-Endpunkte hinzugefügt haben, klicken Sie auf Erstellen.
gcloud
Erstellen Sie eine Hybridkonnektivitäts-NEG mit den folgenden Namenskombinationen. Führen Sie den Befehl
gcloud compute network-endpoint-groups create
aus.gcloud compute network-endpoint-groups create ON_PREM_NEG_NAME \ --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \ --zone=ON_PREM_NEG_ZONE \ --network=NETWORK
- Name
ON_PREM_NEG_NAME
:hybrid-1
- Zone
ON_PREM_NEG_ZONE
:ON_PREM_NEG_ZONE1
- Zone
- Name
ON_PREM_NEG_NAME
:hybrid-2
- Zone
GCP_NEG_ZONE
:ON_PREM_NEG_ZONE2
- Zone
- Name
Fügen Sie den lokalen Backend-VM-Endpunkt zu
ON_PREM_NEG_NAME
hinzu:gcloud compute network-endpoint-groups update ON_PREM_NEG_NAME \ --zone=ON_PREM_NEG_ZONE \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_1,port=PORT_1" \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_2,port=PORT_2"
Mit diesem Befehl können Sie die Netzwerkendpunkte hinzufügen, die Sie zuvor lokal oder in Ihrer Cloud-Umgebung konfiguriert haben.
Wiederholen Sie den Vorgang --add-endpoint
so oft wie nötig.
Load-Balancer konfigurieren
Console
gcloud
Definieren Sie die HTTP-Systemdiagnose mit dem Befehl
gcloud compute health-checks create http
.gcloud compute health-checks create http gil7-basic-check \ --use-serving-port \ --global
Erstellen Sie den Backend-Dienst und aktivieren Sie das Logging mit dem Befehl
gcloud compute backend-services create
.gcloud compute backend-services create BACKEND_SERVICE \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --enable-logging \ --logging-sample-rate=1.0 \ --health-checks=gil7-basic-check \ --global-health-checks \ --global
Fügen Sie dem Backend-Dienst mit dem Befehl
gcloud compute backend-services add-backend
Backends hinzu.gcloud compute backend-services add-backend BACKEND_SERVICE \ --global \ --balancing-mode=RATE \ --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \ --network-endpoint-group=neg1 \ --network-endpoint-group-zone=ZONE_A \ --network-endpoint-group=neg2 \ --network-endpoint-group-zone=ZONE_B
Weitere Informationen zum Konfigurieren des Balancing-Modus finden Sie in der Dokumentation zur gcloud CLI für das Flag
--max-rate-per-endpoint
.Fügen Sie dem Backend-Dienst die hybriden NEGs als Backend hinzu.
gcloud compute backend-services add-backend BACKEND_SERVICE \ --global \ --balancing-mode=RATE \ --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \ --network-endpoint-group=hybrid1 \ --network-endpoint-group-zone=ON_PREM_NEG_ZONE1 \ --network-endpoint-group=hybrid2 \ --network-endpoint-group-zone=ON_PREM_NEG_ZONE2 \
Weitere Informationen zum Konfigurieren des Balancing-Modus finden Sie in der Dokumentation zur gcloud CLI für den Parameter
--max-rate-per-endpoint
.Erstellen Sie die URL-Zuordnung mit dem Befehl
gcloud compute url-maps create
.gcloud compute url-maps create gil7-map \ --default-service=BACKEND_SERVICE \ --global
Erstellen Sie den Zielproxy.
Bei HTTP:
Erstellen Sie den Zielproxy mit dem Befehl
gcloud compute target-http-proxies create
.gcloud compute target-http-proxies create gil7-http-proxy \ --url-map=gil7-map \ --global
Bei HTTPS:
Informationen zum Erstellen eines von Google verwalteten Zertifikats finden Sie in der folgenden Dokumentation:
- Erstellen Sie ein von Google verwaltetes Zertifikat, das von der Certificate Authority Service-Instanz ausgestellt wurde.
- Von Google verwaltetes Zertifikat mit DNS-Autorisierung erstellen
Nachdem Sie das von Google verwaltete Zertifikat erstellt haben, hängen Sie das Zertifikat direkt an den Zielproxy an. Zertifikatzuordnungen werden nicht von regionsübergreifenden internen Application Load Balancern unterstützt.
Informationen zum Erstellen eines selbstverwalteten Zertifikats finden Sie in der folgenden Dokumentation:
Weisen Sie Ihre Dateipfade den entsprechenden Variablennamen zu.
export LB_CERT=PATH_TO_PEM_FORMATTED_FILE
export LB_PRIVATE_KEY=PATH_TO_PEM_LB_PRIVATE_FILE
Erstellen Sie mit dem Befehl
gcloud certificate-manager certificates create
ein SSL-Zertifikat für alle Regionen.gcloud certificate-manager certificates create gilb-certificate \ --private-key-file=$LB_CERT \ --certificate-file=$LB_PRIVATE_KEY \ --scope=all-regions
Verwenden Sie das regionale SSL-Zertifikat, um mit dem Befehl
gcloud compute target-https-proxies create
einen Zielproxy zu erstellen.gcloud compute target-https-proxies create gil7-https-proxy \ --url-map=gil7-map \ --certificate-manager-certificates=gilb-certificate \ --global
Erstellen Sie zwei Weiterleitungsregeln, eine mit einer VIP
IP_ADDRESS1
in der RegionREGION_A
und eine andere mit einer VIPIP_ADDRESS2
in der RegionREGION_B
. Verwenden Sie für die IP-Adresse der Weiterleitungsregel den IP-AdressbereichLB_SUBNET_RANGE1
oderLB_SUBNET_RANGE2
. Wenn Sie das Nur-Proxy-Subnetz verwenden, schlägt das Erstellen der Weiterleitungsregel fehl.Bei benutzerdefinierten Netzwerken müssen Sie in der Weiterleitungsregel auf das Subnetz verweisen. Achten Sie darauf, dass dies das VM-Subnetz und nicht das Proxy-Subnetz ist.
Bei HTTP:
Verwenden Sie den Befehl
gcloud compute forwarding-rules create
mit den richtigen Flags.gcloud compute forwarding-rules create FWRULE_A \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_A \ --subnet-region=REGION_A \ --address=IP_ADDRESS1 \ --ports=80 \ --target-http-proxy=gil7-http-proxy \ --global
gcloud compute forwarding-rules create FWRULE_B \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_B \ --subnet-region=REGION_B \ --address=IP_ADDRESS2 \ --ports=80 \ --target-http-proxy=gil7-http-proxy \ --global
Bei HTTPS:
Erstellen Sie die Weiterleitungsregel mit dem Befehl
gcloud compute forwarding-rules create
und den richtigen Flags.gcloud compute forwarding-rules create FWRULE_A \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_A \ --subnet-region=REGION_A \ --address=IP_ADDRESS1 \ --ports=443 \ --target-https-proxy=gil7-https-proxy \ --global
gcloud compute forwarding-rules create FWRULE_B \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_B \ --subnet-region=REGION_B \ --address=IP_ADDRESS2 \ --ports=443 \ --target-https-proxy=gil7-https-proxy \ --global
Domain mit dem Load-Balancer verbinden
Notieren Sie sich nach dem Erstellen des Load Balancers die IP-Adresse, die diesem zugewiesen ist, z. B. IP_ADDRESS1
und IP_ADDRESS2
.
Wenn Sie Ihre Domain auf den Load-Balancer verweisen möchten, erstellen Sie mit Cloud DNS oder dem Domain-Registrierungsdienst einen A
-Eintrag. Wenn Sie Ihrem SSL-Zertifikat mehrere Domains hinzugefügt haben, müssen Sie für jede Domain einen A
-Eintrag hinzufügen, der auf die IP-Adresse des Load-Balancers verweist.
Load-Balancer testen
VM-Instanz zum Testen der Konnektivität erstellen
Erstellen Sie eine Client-VM:
gcloud compute instances create l7-ilb-client-a \ --image-family=debian-10 \ --image-project=debian-cloud \ --network=NETWORK \ --subnet=SUBNET_A \ --zone=ZONE_A \ --tags=allow-ssh
gcloud compute instances create l7-ilb-client-b \ --image-family=debian-10 \ --image-project=debian-cloud \ --network=NETWORK \ --subnet=SUBNET_B \ --zone=ZONE_B \ --tags=allow-ssh
Verwenden Sie SSH, um eine Verbindung zu jeder Clientinstanz herzustellen.
gcloud compute ssh l7-ilb-client-a \ --zone=ZONE_A
gcloud compute ssh l7-ilb-client-b \ --zone=ZONE_B
Prüfen Sie, ob die IP-Adresse ihren Hostnamen bereitstellt.
Prüfen Sie, ob die Client-VM beide IP-Adressen erreichen kann. Der Befehl sollte erfolgreich sein und den Namen der Back-End-VM zurückgeben, von der die Anfrage verarbeitet wurde:
curl IP_ADDRESS1
curl IP_ADDRESS2
Ersetzen Sie für HTTPS-Tests
curl
durch:curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS1:443
curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS2:443
Das Flag
-k
bewirkt, dass curl die Zertifikatsvalidierung überspringt.Optional: Verwenden Sie den konfigurierten DNS-Eintrag, um die IP-Adresse aufzulösen, die der Client-VM am nächsten ist. DNS_ENTRY kann beispielsweise
service.example.com
sein.curl DNS_ENTRY
100 Anfragen ausführen
Führen Sie 100 curl-Anfragen aus und prüfen Sie anhand der Antworten, ob ein Load-Balancing stattfindet.
Bei HTTP:
Prüfen Sie, ob die Client-VM beide IP-Adressen erreichen kann. Der Befehl sollte erfolgreich sein und den Namen der Back-End-VM zurückgeben, von der die Anfrage verarbeitet wurde:
{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl --silent IP_ADDRESS1)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS1: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl --silent IP_ADDRESS2)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS2: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
Bei HTTPS:
Prüfen Sie, ob die Client-VM beide IP-Adressen erreichen kann. Der Befehl sollte erfolgreich sein und den Namen der Backend-VM zurückgeben, von der die Anfrage verarbeitet wurde:
{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS1:443)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS1: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS2:443)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS2: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
Failover testen
Prüfen Sie das Failover auf Back-Ends in der Region
REGION_A
, wenn Back-Ends in derREGION_B
fehlerhaft oder nicht erreichbar sind. Wir simulieren dies, indem wir alle Backends ausREGION_B
entfernen:gcloud compute backend-services remove-backend BACKEND_SERVICE \ --balancing-mode=RATE \ --network-endpoint-group=neg2 \ --network-endpoint-group-zone=ZONE_B
Stellen Sie mit SSH eine Verbindung zur Client-VM in
REGION_B
her.gcloud compute ssh l7-ilb-client-b \ --zone=ZONE_B
Senden Sie Anfragen an die IP-Adresse mit Load-Balancing in der Region
REGION_B
. Die Ausgabe sieht in etwa so aus:{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS2:443)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS2: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
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.
DNS-Routingrichtlinien konfigurieren
Wenn sich Ihre Clients in mehreren Regionen befinden, möchten Sie möglicherweise den regionenübergreifenden internen Application Load Balancer mithilfe von VIPs in diesen Regionen zugänglich machen. In dieser multiregionalen Einrichtung werden die Latenz und die Kosten für den Netzwerktransport minimiert. Darüber hinaus können Sie eine DNS-basierte globale Load-Balancing-Lösung einrichten, die gegen regionale Ausfälle sicher ist. Weitere Informationen finden Sie unter DNS-Routingrichtlinien und Systemdiagnosen verwalten.
gcloud
Zum Erstellen eines DNS-Eintrags mit einer 30-Sekunden-TTL verwenden Sie den Befehl gcloud dns record-sets create
.
gcloud dns record-sets create DNS_ENTRY --ttl="30" \ --type="A" --zone="service-zone" \ --routing-policy-type="GEO" \ --routing-policy-data="REGION_A=gil7-forwarding-rule-a@global;REGION_B=gil7-forwarding-rule-b@global" \ --enable-health-checking
Ersetzen Sie Folgendes:
DNS_ENTRY
: DNS- oder Domainname des DatensatzesBeispiel:
service.example.com
REGION_A
undREGION_B
: die Regionen, in denen Sie den Load-Balancer konfiguriert haben
API
Erstellen Sie den DNS-Eintrag durch eine POST
-Anfrage an die Methode ResourceRecordSets.create
.
Ersetzen Sie dabei PROJECT_ID durch Ihre Projekt-ID.
POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/SERVICE_ZONE/rrsets { "name": "DNS_ENTRY", "type": "A", "ttl": 30, "routingPolicy": { "geo": { "items": [ { "location": "REGION_A", "healthCheckedTargets": { "internalLoadBalancers": [ { "loadBalancerType": "globalL7ilb", "ipAddress": "gil7-forwarding-rule-a", "port": "80", "ipProtocol": "tcp", "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "project": "PROJECT_ID" } ] } }, { "location": "REGION_B", "healthCheckedTargets": { "internalLoadBalancers": [ { "loadBalancerType": "globalL7ilb", "ipAddress": "gil7-forwarding-rule-b", "port": "80", "ipProtocol": "tcp", "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "project": "PROJECT_ID" } ] } } ] } } }
Ausreißererkennung aktivieren
Sie können die Ausreißererkennung für globale Backend-Dienste aktivieren, um fehlerhafte serverlose NEGs zu identifizieren und die Anzahl der Anfragen zu reduzieren, die an die fehlerhaften serverlosen NEGs gesendet werden.
Die Ausreißererkennung wird für den Backend-Dienst mithilfe einer der folgenden Methoden aktiviert:
- Die Methode
consecutiveErrors
(outlierDetection.consecutiveErrors
), bei der ein HTTP-Statuscode der5xx
-Serie als Fehler gilt. - Die Methode
consecutiveGatewayFailure
(outlierDetection.consecutiveGatewayFailure
), bei der nur die HTTP-Statuscodes502
,503
und504
als Fehler gelten.
Führen Sie die folgenden Schritte aus, um die Ausreißererkennung für einen vorhandenen Backend-Dienst zu aktivieren. Beachten Sie, dass auch nach der Aktivierung der Ausreißererkennung einige Anfragen an den fehlerhaften Dienst gesendet werden können und einen 5xx
-Statuscode an die Clients zurückgeben. Zur weiteren Reduzierung der Fehlerrate können Sie aggressivere Werte für die Ausreißererkennungsparameter konfigurieren. Weitere Informationen finden Sie im Feld outlierDetection
.
Console
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Klicken Sie auf den Namen des Load-Balancers, dessen Backend-Dienst Sie bearbeiten möchten.
Klicken Sie auf der Seite Details zum Load-Balancer auf
Bearbeiten.Klicken Sie auf der Seite Regionenübergreifenden internen Application Load Balancer bearbeiten auf Backend-Konfiguration.
Klicken Sie auf der Seite Backend-Konfiguration für den Backend-Dienst, den Sie ändern möchten, auf
Bearbeiten.Scrollen Sie nach unten und maximieren Sie den Abschnitt Erweiterte Konfigurationen.
Wählen Sie im Abschnitt Ausreißererkennung das Kästchen Aktivieren aus.
Klicken Sie auf
Bearbeiten, um die Ausreißererkennung zu konfigurieren.Prüfen Sie, ob die folgenden Optionen mit diesen Werten konfiguriert sind:
Attribut Wert Aufeinanderfolgende Fehler 5 Intervall 1000 Basisausschlusszeit 30.000 Maximale Prozentzahl an Ausschlüssen 50 Aufeinanderfolgende Fehler werden erzwungen 100 In diesem Beispiel wird die Ausreißererkennungsanalyse jede Sekunde ausgeführt. Wenn die Anzahl der aufeinanderfolgenden HTTP-Statuscodes
5xx
, die von einem Envoy-Proxy empfangen werden, mindestens fünf ist, wird der Backend-Endpunkt für 30 Sekunden aus dem Load-Balancing-Pool dieses Envoy-Proxys ausgeschlossen. Wenn der Erzwingungsprozentsatz auf 100 % eingestellt ist, erzwingt der Backend-Dienst den Ausschluss fehlerhafter Endpunkte aus den Load-Balancing-Pools dieser spezifischen Envoy-Proxys jedes Mal, wenn die Ausreißererkennungsanalyse läuft. Wenn die Ausschlussbedingungen erfüllt sind, können bis zu 50 % der Backend-Endpunkte aus dem Load-Balancing-Pool ausgeschlossen werden.Klicken Sie auf Speichern.
Klicken Sie zum Aktualisieren des Backend-Dienstes auf Aktualisieren.
Klicken Sie zum Aktualisieren des Load Balancers auf der Seite Regionenübergreifenden internen Application Load Balancer bearbeiten auf Aktualisieren.
gcloud
Exportieren Sie den Backend-Dienst in eine YAML-Datei.
gcloud compute backend-services export BACKEND_SERVICE_NAME \ --destination=BACKEND_SERVICE_NAME.yaml --global
Ersetzen Sie
BACKEND_SERVICE_NAME
durch den Namen des Backend-Dienstes.Bearbeiten Sie die YAML-Konfiguration des Backend-Dienstes, um die Felder für die Ausreißererkennung hinzuzufügen, wie in der folgenden YAML-Konfiguration hervorgehoben.
In diesem Beispiel wird die Ausreißererkennungsanalyse jede Sekunde ausgeführt. Wenn die Anzahl der aufeinanderfolgenden HTTP-Statuscodes
5xx
, die von einem Envoy-Proxy empfangen werden, mindestens fünf ist, wird der Backend-Endpunkt für 30 Sekunden aus dem Load-Balancing-Pool dieses Envoy-Proxys ausgeschlossen. Wenn der Erzwingungsprozentsatz auf 100 % eingestellt ist, erzwingt der Backend-Dienst den Ausschluss fehlerhafter Endpunkte aus den Load-Balancing-Pools dieser spezifischen Envoy-Proxys jedes Mal, wenn die Ausreißererkennungsanalyse läuft. Wenn die Ausschlussbedingungen erfüllt sind, können bis zu 50 % der Backend-Endpunkte aus dem Load-Balancing-Pool ausgeschlossen werden.name: BACKEND_SERVICE_NAME backends: - balancingMode: UTILIZATION capacityScaler: 1.0 group: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/networkEndpointGroups/SERVERLESS_NEG_NAME - balancingMode: UTILIZATION capacityScaler: 1.0 group: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/networkEndpointGroups/SERVERLESS_NEG_NAME_2 outlierDetection: baseEjectionTime: nanos: 0 seconds: 30 consecutiveErrors: 5 enforcingConsecutiveErrors: 100 interval: nanos: 0 seconds: 1 maxEjectionPercent: 50 port: 80 selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME sessionAffinity: NONE timeoutSec: 30 ...
Ersetzen Sie Folgendes:
BACKEND_SERVICE_NAME
: der Name des Backend-DienstesPROJECT_ID
: die Projekt-IDREGION_A
undREGION_B
: die Regionen, in denen der Load-Balancer konfiguriert wurde.SERVERLESS_NEG_NAME
: der Name der ersten serverlosen NEGSERVERLESS_NEG_NAME_2
: der Name der zweiten serverlosen NEG
Aktualisieren Sie den Backend-Dienst. Importieren Sie dazu die neueste Konfiguration.
gcloud compute backend-services import BACKEND_SERVICE_NAME \ --source=BACKEND_SERVICE_NAME.yaml --global
Die Ausreißererkennung ist jetzt für den Backend-Dienst aktiviert.
Nächste Schritte
- Übersicht über internen Application Load Balancer
- Nur-Proxy-Subnetze für Envoy-basierte Load-Balancer
- Zertifikate verwalten
- Load-Balancing-Einrichtung bereinigen