Mit Google Cloud TCP-Proxy-Load-Balancing können Sie eine einzelne IP-Adresse für alle Nutzer auf der ganzen Welt verwenden. Das TCP-Proxy-Load-Balancing leitet den Traffic automatisch an die Instanzen weiter, die dem Nutzer am nächsten sind.
Diese Anleitung erläutert die Einrichtung des TCP-Proxy-Load-Balancings. Bevor Sie beginnen, lesen Sie die Übersicht über TCP-Proxy-Load-Balancing. Dort erhalten Sie Informationen zur Funktionsweise.
Übersicht
Dieses Beispiel zeigt die Einrichtung des globalen TCP-Proxy-Load-Balancings für einen einfachen Dienst in zwei Regionen: us-central1
und us-east1
.
Der Dienst besteht dabei aus einer Reihe von Apache-Servern, die für die Kommunikation über Port 110
konfiguriert sind. Für viele Browser ist Port 110
aber nicht zulässig. Daher wird im Testabschnitt curl
verwendet.
In diesem Beispiel konfigurieren Sie Folgendes:
- Vier Instanzen, die auf zwei Regionen verteilt sind
- Instanzgruppen, die die Instanzen enthalten
- Eine Systemdiagnose zur Prüfung der Instanzintegrität
- Einen Back-End-Dienst, der die Instanzen überwacht und das Überschreiten des konfigurierten Nutzungsumfangs verhindert
- Den Ziel-TCP-Proxy
- Eine externe statische IPv4-Adresse und eine Weiterleitungsregel, mit der Nutzertraffic an den Proxy geleitet wird
- Eine externe statische IPv6-Adresse und eine Weiterleitungsregel, mit der Nutzertraffic an den Proxy geleitet wird
- Eine Firewallregel, die Traffic vom Load-Balancer und der Systemdiagnose an die Instanzen zulässt
Nach der Konfiguration des Load-Balancers testen Sie diese.
Berechtigungen
Damit Sie dieser Anleitung folgen können, müssen Sie in der Lage sein, Instanzen zu erstellen und ein Netzwerk in einem Projekt zu ändern. Sie müssen entweder ein Inhaber oder Bearbeiter des Projekts sein oder alle folgenden Compute Engine-IAM-Rollen haben:
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:
Instanzen und Instanzgruppen konfigurieren
In diesem Abschnitt erfahren Sie, wie Sie einfache Instanzgruppen erstellen, den Gruppen Instanzen hinzufügen und diese Instanzen einem Back-End-Dienst mit Systemdiagnose zuordnen. In Produktionssystemen werden in der Regel verwaltete Instanzgruppen auf der Basis von Instanzvorlagen verwendet. Die hier beschriebene Konfiguration ist jedoch schneller und für erste Tests geeignet.
Instanzen konfigurieren
Zu Testzwecken installieren Sie Apache auf vier Instanzen, jeweils zwei in zwei Instanzgruppen. Normalerweise wird das TCP-Proxy-Load-Balancing nicht für den HTTP-Traffic verwendet. Apache ist jedoch eine häufig verwendete Software und lässt sich zum Testen leicht einrichten.
In diesem Beispiel werden die Instanzen mit dem Tag tcp-lb
erstellt. Dieses Tag wird später von der Firewallregel verwendet.
Console
Instanzen erstellen
- Rufen Sie in der Google Cloud Console die Seite „VM-Instanzen” auf.
Zur Seite „VM-Instanzen” - Klicken Sie auf Instanz erstellen.
- Legen Sie als Name
ig-us-central1-1
fest. - Legen Sie als Region
us-central1
fest. - Legen Sie als Zone
us-central1-b
fest. - Klicken Sie auf Verwaltung, Sicherheit, Laufwerke, Netzwerke, Einzelne Mandanten, um erweiterte Optionen aufzurufen.
- Klicken Sie unter Verwaltung auf Netzwerke und geben Sie im Feld Tags das Tag
tcp-lb
ein. - Klicken Sie auf Verwaltung und geben Sie das folgende Skript in das Feld Startskript ein:
sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-central1-1</h1></body></html>' | sudo tee /var/www/html/index.html
- Übernehmen Sie für die übrigen Felder die Standardwerte.
- Klicken Sie auf Erstellen.
- Erstellen Sie
ig-us-central1-2
mit den gleichen Einstellungen, aber mit dem folgenden Skript im Feld Startskript:sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-central1-2</h1></body></html>' | sudo tee /var/www/html/index.html
- Erstellen Sie
ig-us-east1-1
mit den gleichen Einstellungen, aber mitus-east1
als Region undus-east1-b
als Zone. Geben Sie das folgende Skript in das Feld Startskript ein:sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-east1-1</h1></body></html>' | sudo tee /var/www/html/index.html
- Erstellen Sie
ig-us-east1-2
mit den gleichen Einstellungen, aber mitus-east1
als Region undus-east1-b
als Zone. Geben Sie das folgende Skript in das Feld Startskript ein:sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-east1-2</h1></body></html>' | sudo tee /var/www/html/index.html
gcloud
Erstellen Sie
ig-us-central1-1
in der Zoneus-central1-b
gcloud compute instances create ig-us-central1-1 \ --image-family debian-9 \ --image-project debian-cloud \ --tags tcp-lb \ --zone us-central1-b \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-central1-1</h1></body></html>' | tee /var/www/html/index.html EOF"
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-b/instances/ig-us-central1-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS ig-us-central1-1 us-central1-b n1-standard-1 10.240.0.8 23.251.150.133 RUNNING
Erstellen Sie
ig-us-central1-2
in der Zoneus-central1-b
gcloud compute instances create ig-us-central1-2 \ --image-family debian-9 \ --image-project debian-cloud \ --tags tcp-lb \ --zone us-central1-b \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-central1-2</h1></body></html>' | tee /var/www/html/index.html EOF"
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-b/instances/ig-us-central1-2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS ig-us-central1-2 us-central1-b n1-standard-1 10.240.0.11 23.251.148.160 RUNNING
Erstellen Sie
ig-us-east1-1
in der Zoneus-east1-b
gcloud compute instances create ig-us-east1-1 \ --image-family debian-9 \ --image-project debian-cloud \ --tags tcp-lb \ --zone us-east1-b \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-east1-1</h1></body></html>' | tee /var/www/html/index.html EOF"
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-east1-b/instances/ig-us-east1-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS ig-us-east1-1 us-east1-b n1-standard-1 10.240.0.12 104.196.31.214 RUNNING
Erstellen Sie
ig-us-east1-2
in der Zoneus-east1-b
.gcloud compute instances create ig-us-east1-2 \ --image-family debian-9 \ --image-project debian-cloud \ --tags tcp-lb \ --zone us-east1-b \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-east1-2</h1></body></html>' | tee /var/www/html/index.html EOF"
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-east1-b/instances/ig-us-east1-2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS ig-us-east1-2 us-east1-b n1-standard-1 10.240.0.13 104.196.25.101 RUNNING
Instanzgruppe für jede Zone erstellen und Instanzen hinzufügen
Console
- Öffnen Sie in der Cloud Console die Seite Instanzgruppen.
Zur Seite "Instanzgruppen" - Klicken Sie auf Instanzgruppe erstellen.
- Klicken Sie auf Neue nicht verwaltete Instanzgruppe.
- Legen Sie als Name
us-ig1
fest. - Setzen Sie Zone auf
us-central1-b
. - Klicken Sie auf Portnamenzuordnung festlegen.
Ein Load-Balancer sendet Traffic über einen benannten Port an eine Instanzgruppe.
Erstellen Sie einen benannten Port, um den eingehenden Traffic einer bestimmten Portnummer zuzuordnen.
- Legen Sie als Portname
tcp110
fest. - Legen Sie für Portnummern den Wert
110
fest.
- Legen Sie als Portname
- Wählen Sie unter VM-Instanzen
ig-us-central1-1
undig-us-central1-2
aus. - Übernehmen Sie die anderen Einstellungen.
- Klicken Sie auf Erstellen.
- Wiederholen Sie die Schritte mit den folgenden Werten:
- Name:
us-ig2
- Region:
us-east1
- Zone:
us-east1-b
- Portname:
tcp110
- Portnummern:
110
- Instanzen: ig-us-east1-1 und ig-us-east1-2.
- Name:
gcloud
Erstellen Sie die Instanzgruppe
us-ig1
.gcloud compute instance-groups unmanaged create us-ig1 \ --zone us-central1-b
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-b/instanceGroups/us-ig1]. NAME LOCATION SCOPE NETWORK MANAGED INSTANCES us-ig1 us-central1-b zone 0
Erstellen Sie einen benannten Port für die Instanzgruppe.
gcloud compute instance-groups set-named-ports us-ig1 \ --named-ports tcp110:110 \ --zone us-central1-b
Updated [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-east1-b/instanceGroups/us-ig2].
Fügen Sie zu
us-ig1
ig-us-central1-1
undig-us-central1-2
hinzu.gcloud compute instance-groups unmanaged add-instances us-ig1 \ --instances ig-us-central1-1,ig-us-central1-2 \ --zone us-central1-b
Updated [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-b/instanceGroups/us-ig1].
Erstellen Sie die Instanzgruppe
us-ig2
.gcloud compute instance-groups unmanaged create us-ig2 \ --zone us-east1-b
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-east1-b/instanceGroups/us-ig2]. NAME LOCATION SCOPE NETWORK MANAGED INSTANCES us-ig2 us-east1-b zone 0
Erstellen Sie einen benannten Port für die Instanzgruppe.
gcloud compute instance-groups set-named-ports us-ig2 \ --named-ports tcp110:110 \ --zone us-east1-b
Updated [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-east1-b/instanceGroups/us-ig2].
Fügen Sie zu
us-ig2
ig-us-east1-1
undig-us-east1-2
hinzu.gcloud compute instance-groups unmanaged add-instances us-ig2 \ --instances ig-us-east1-1,ig-us-east1-2 \ --zone us-east1-b
Updated [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-east1-b/instanceGroups/us-ig2].
Es ist nun eine Instanzgruppe für jede Region vorhanden. Jede Instanzgruppe hat zwei VM-Instanzen.
Load-Balancer konfigurieren
Konsole
Load-Balancer erstellen und Back-End-Dienst konfigurieren
- Öffnen Sie in der Google Cloud Console die Seite "Load-Balancing".
Zur Seite "Load-Balancing" - Klicken Sie auf Load-Balancer erstellen.
- Starten Sie die Konfiguration des Load-Balancers:
- Klicken Sie unter TCP-Load-Balancing auf Konfiguration starten.
- Setzen Sie Internet oder nur intern auf Vom Internet zu meinen VMs.
- Wählen Sie für Mehrere Regionen oder einzelne Regionen die Option Mehrere Regionen aus.
- Klicken Sie auf Weiter.
- Legen Sie als Name
my-tcp-lb
fest. - Klicken Sie auf Back-End-Konfiguration.
- Wählen Sie unter Back-End-Typ die Option Instanzgruppen aus.
- Wählen Sie unter Protokoll die Option TCP aus.
- Konfigurieren Sie das erste Back-End:
- Wählen Sie unter Neues Back-End die Instanzgruppe
us-ig1
aus. - Behalten Sie die verbleibenden Standardwerte bei.
- Wählen Sie unter Neues Back-End die Instanzgruppe
- Konfigurieren Sie das zweite Back-End:
- Klicken Sie auf Back-End hinzufügen.
- Wählen Sie die Instanzgruppe
us-ig2
aus. - Löschen Sie unter Portnummern
80
und fügen Sie110
hinzu.
- Systemdiagnose konfigurieren:
- Wählen Sie unter Systemdiagnose die Option Systemdiagnose erstellen aus.
- Geben Sie als Name für die Systemdiagnose
my-tcp-health-check
an. - Wählen Sie unter Protokoll die Option TCP aus.
- Legen Sie für Port den Wert
110
fest.
- Behalten Sie die verbleibenden Standardwerte bei.
- Klicken Sie auf Speichern und fortfahren.
- Prüfen Sie in der Google Cloud Console, ob neben Back-End-Konfiguration ein Häkchen angezeigt wird. Ist dies nicht der Fall, prüfen Sie, ob Sie alle Schritte ausgeführt haben.
Front-End-Dienste konfigurieren
- Klicken Sie auf Front-End-Konfiguration.
- Fügen Sie die erste Weiterleitungsregel hinzu:
- Geben Sie als Name
my-tcp-lb-forwarding-rule
ein. - Wählen Sie unter Protokoll die Option TCP aus.
- Wählen Sie unter IP-Adresse die Option IP-Adresse erstellen aus.
- Geben Sie als Name
tcp-lb-static-ip
ein. - Klicken Sie auf Reservieren.
- Geben Sie als Name
- Legen Sie für Port den Wert
110
fest. - Aktivieren Sie in diesem Beispiel das Proxyprotokoll nicht, da es mit der Apache HTTP Server-Software nicht funktioniert. Weitere Informationen finden Sie unter Proxyprotokoll.
- Klicken Sie auf Fertig.
- Geben Sie als Name
- Fügen Sie die zweite Weiterleitungsregel hinzu:
- Klicken Sie auf Front-End-IP und Port hinzufügen.
- Geben Sie als Name
my-tcp-lb-ipv6-forwarding-rule
ein. - Wählen Sie unter Protokoll die Option TCP aus.
- Legen Sie
IPv6
als IP-Version fest. - Klicken Sie unter IP-Adresse auf IP-Adresse erstellen.
- Geben Sie als Name
tcp-lb-ipv6-static-ip
ein. - Klicken Sie auf Reservieren.
- Geben Sie als Name
- Legen Sie für Port den Wert
110
fest. - Aktivieren Sie in diesem Beispiel das Proxyprotokoll nicht, da es mit der Apache HTTP Server-Software nicht funktioniert. Weitere Informationen finden Sie unter Proxyprotokoll.
- Klicken Sie auf Fertig.
- Prüfen Sie in der Google Cloud Console, ob neben Front-End-Konfiguration ein Häkchen angezeigt wird. Ist dies nicht der Fall, prüfen Sie, ob Sie alle vorherigen Schritte ausgeführt haben.
Überprüfen und abschließen
- Klicken Sie auf Überprüfen und abschließen.
- Kontrollieren Sie die Einstellungen.
- Klicken Sie auf Erstellen.
gcloud
Systemdiagnose erstellen
gcloud compute health-checks create tcp my-tcp-health-check --port 110
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/healthChecks/my-tcp-health-check]. NAME PROTOCOL my-tcp-health-check TCP
Back-End-Dienst erstellen
gcloud compute backend-services create my-tcp-lb \
--global-health-checks \
--global \
--protocol TCP \
--health-checks my-tcp-health-check \
--timeout 5m \
--port-name tcp110
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/backendServices/my-tcp-lb]. NAME BACKENDS PROTOCOL my-tcp-lb TCP
Alternativ können Sie mit --protocol SSL
eine verschlüsselte Kommunikation vom Load-Balancer zu den Instanzen konfigurieren.
Instanzgruppen Ihrem Back-End-Dienst hinzufügen
gcloud compute backend-services add-backend my-tcp-lb \
--global \
--instance-group us-ig1 \
--instance-group-zone us-central1-b \
--balancing-mode UTILIZATION \
--max-utilization 0.8
Updated [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/backendServices/my-tcp-lb].
gcloud compute backend-services add-backend my-tcp-lb \
--global \
--instance-group us-ig2 \
--instance-group-zone us-east1-b \
--balancing-mode UTILIZATION \
--max-utilization 0.8
Updated [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/backendServices/my-tcp-lb].
Ziel-TCP-Proxy konfigurieren
gcloud compute target-tcp-proxies create my-tcp-lb-target-proxy \
--backend-service my-tcp-lb \
--proxy-header NONE
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/targetTcpProxies/my-tcp-lb-target-proxy]. NAME PROXY_HEADER SERVICE my-tcp-lb-target-proxy NONE my-tcp-lb
Globale statische IPv4- und IPv6-Adressen reservieren
Über diese IP-Adressen können Kunden auf Ihren Dienst mit Load-Balancing zugreifen.
gcloud compute addresses create tcp-lb-static-ipv4 \
--ip-version=IPV4 \
--global
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/addresses/tcp-lb-static-ipv4]. NAME REGION ADDRESS STATUS tcp-lb-static-ip [LB_STATIC_IPV4] RESERVED
gcloud compute addresses create tcp-lb-static-ipv6 \
--ip-version=IPV6 \
--global
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/addresses/tcp-lb-static-ipv6]. NAME REGION ADDRESS STATUS tcp-lb-static-ip-ipv6 [LB_STATIC_IPV6] RESERVED
Globale Weiterleitungsregeln für die beiden Adressen konfigurieren
Geben Sie anstelle von [LB_STATIC_IPV4] und [LB_STATIC_IPV6] die entsprechenden IP-Adressen ein. Sie können sie mit gcloud compute addresses list
finden.
gcloud beta compute forwarding-rules create my-tcp-lb-ipv4-forwarding-rule \
--global \
--target-tcp-proxy my-tcp-lb-target-proxy \
--address [LB_STATIC_IPV4] \
--ports 110
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/forwardingRules/my-tcp-lb-ipv4-forwarding-rule]. NAME REGION IP_ADDRESS IP_PROTOCOL TARGET my-tcp-lb-ipv4-forwarding-rule [LB_STATIC_IPV4] TCP my-tcp-lb-target-proxy
gcloud beta compute forwarding-rules create my-tcp-lb-ipv6-forwarding-rule \
--global \
--target-tcp-proxy my-tcp-lb-target-proxy \
--address [LB_STATIC_IPV6] \
--ports 110
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/forwardingRules/my-tcp-lb-ipv6-forwarding-rule]. NAME REGION IP_ADDRESS IP_PROTOCOL TARGET my-tcp-lb-ipv6-forwarding-rule [LB_STATIC_IPV6] TCP my-tcp-lb-target-proxy
Firewallregel für den TCP-Proxy-Load-Balancer erstellen
Konfigurieren Sie die Firewall so, dass sie Traffic vom Load-Balancer und der Systemdiagnose zu den Instanzen erlaubt. In diesem Fall öffnen wir den TCP-Port 110. Für die Systemdiagnose wird der gleiche Port verwendet. Da für den Traffic zwischen dem Load-Balancer und Ihren Instanzen IPv4 verwendet wird, müssen nur IPv4-Bereiche geöffnet sein.
Console
- Rufen Sie in der Google Cloud Console die Seite „Firewallregeln“ auf.
Zur Seite "Firewall" - Klicken Sie auf Firewallregel erstellen.
- Geben Sie als Name
allow-tcp-lb-and-health
ein. - Wählen Sie unter Netzwerk die Option
default
aus. - Wählen Sie unter Ziele Angegebene Zieltags aus.
- Legen Sie
tcp-lb
als Ziel-Tags fest. - Legen Sie für Quellfilter
IP ranges
fest. - Legen Sie für Quell-IP-Bereiche die Werte
130.211.0.0/22
und35.191.0.0/16
fest. - Legen Sie für Zulässige Protokolle und Ports
tcp:110
fest. - Klicken Sie auf Erstellen.
gcloud
gcloud compute firewall-rules create allow-tcplb-and-health \
--source-ranges 130.211.0.0/22,35.191.0.0/16 \
--target-tags tcp-lb \
--allow tcp:110
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/firewalls/allow-tcp110-130-211-0-0-22]. NAME NETWORK SRC_RANGES RULES SRC_TAGS TARGET_TAGS allow-tcplb-and-health default 130.211.0.0/22,35.191.0.0/16 tcp:110 tcp-lb
Load-Balancer testen
Nachdem Sie LB_IP
durch die IPv4- oder IPv6-Adresse Ihres Load-Balancers aus dem Feld IP:Port ersetzt haben, können Sie mit folgendem Befehl auf Ihren Load-Balancer zugreifen:
curl LB_IP:110
Systemdiagnosen erstellen
Systemdiagnosen ermitteln, zu welchen Instanzen sich neue Verbindungen aufbauen lassen. Sie können eine TCP-, SSL-, HTTP- oder HTTPS-Systemdiagnose konfigurieren, um den Status Ihrer Instanzen festzustellen.
- Wenn der Dienst, der auf Ihren Back-End-Instanzen ausgeführt wird, auf HTTP basiert, verwenden Sie eine HTTP-Systemdiagnose.
- Wenn der Dienst, der auf Ihren Back-End-Instanzen ausgeführt wird, auf HTTPS basiert, verwenden Sie eine HTTPS-Systemdiagnose.
- Wenn der Dienst, der auf Ihren Back-End-Instanzen ausgeführt wird, auf HTTP/2 basiert, verwenden Sie eine HTTP/2-Systemdiagnose.
- Wenn der Dienst, der auf Ihren Back-End-Instanzen ausgeführt wird, auf SSL basiert, verwenden Sie eine SSL-Systemdiagnose.
- Wenn nicht ausdrücklich eine andere Art der Systemdiagnose verwendet werden soll, nutzen Sie eine TCP-Systemdiagnose.
Firewallregeln für Systemdiagnosen
Die Systemdiagnosetests der Instanzen mit Load-Balancing werden von Adressen in den Bereichen 130.211.0.0/22
und 35.191.0.0/16
ausgeführt. Das sind die IP-Adressbereiche, mit denen sich der Load-Balancer mit den Back-End-Instanzen verbindet. Die Firewallregeln müssen so konfiguriert sein, dass sie diese Verbindungen am entsprechenden Port zulassen.
Auf der Seite Systemdiagnosen finden Sie Details zu Systemdiagnosen.
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.
PROXY-Protokoll für den Erhalt der Verbindungsinformationen des Clients
Durch das TCP-Proxy-Load-Balancing werden TCP-Verbindungen des Clients beendet und neue Verbindungen zu den Instanzen aufgebaut. Standardmäßig bleiben die ursprüngliche IP-Adresse des Clients und die Portinformationen nicht automatisch erhalten.
Aktivieren Sie deshalb das PROXY-Protokoll (Version 1). Damit bleiben die ursprünglichen Verbindungsinformationen erhalten und werden an Ihre Instanzen gesendet. Mit diesem Protokoll wird mit der Anfrage zusätzlich ein Header mit Quell-IP-Adresse, Ziel-IP-Adresse und Portnummern an die Instanz gesendet.
Wenn Sie das PROXY-Protokoll für den Nutzertraffic festlegen, müssen Sie es auch für die Systemdiagnose angeben, falls Sie auf dem gleichen Port Traffic bereitstellen und Systemdiagnosen durchführen.
Der PROXY-Protokoll-Header enthält in der Regel eine einzelne, für Nutzer lesbare Textzeile in folgendem Format:
PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n
Im Folgenden ist ein Beispiel für das PROXY-Protokoll dargestellt:
PROXY TCP4 192.0.2.1 198.51.100.1 15221 110\r\n
Die IP-Adresse des Clients ist dabei 192.0.2.1
, die IP-Adresse des Load-Balancings 198.51.100.1
, der Client-Port ist 15221
und der Ziel-Port 110
.
Ist die IP-Adresse des Clients nicht bekannt, erstellt der Load-Balancer einen Proxy-Protokoll-Header in folgendem Format:
PROXY UNKNOWN\r\n
Wenn Ihre Systemdiagnose und die Bereitstellung von Inhalten über denselben Port ausgeführt werden, können Sie für die Systemdiagnose --proxy-header
festlegen, damit die Einstellung dem Load-Balancing entspricht. In dieser Anleitung wird für die Systemdiagnose und die Bereitstellung von Inhalten Port 110 genutzt.
Verwenden Sie hingegen unterschiedliche Ports, können Sie diese Einstellung optional für Ihre Systemdiagnosen nutzen.
Sitzungsaffinität aktivieren
Die Beispielkonfiguration erstellt einen Back-End-Dienst ohne Sitzungsaffinität.
Diese Verfahren zeigen, wie Sie einen Back-End-Dienst für den Beispiel-TCP-Proxy-Load-Balancer aktualisieren, damit der Back-End-Dienst die Client-IP-Affinität oder Cookie-Affinität verwendet.
Wenn die Client-IP-Affinität aktiviert ist, leitet der Load-Balancer die Anfragen eines bestimmten Clients anhand eines Hashs, der aus der IP-Adresse des Clients und der IP-Adresse des Load-Balancers (der externen IP-Adresse einer externen Weiterleitungsregel) erstellt wurde, an dieselbe Back-End-VM weiter.
Console
So aktivieren Sie die Client-IP-Sitzungsaffinität:
- Öffnen Sie in der Google Cloud Console die Seite "Load-Balancing".
Zur Seite "Load-Balancing" - Klicken Sie auf Back-Ends.
- Klicken Sie auf my-tcp-lb (Name des Back-End-Dienstes, den Sie für dieses Beispiel erstellt haben) und dann auf Bearbeiten.
- Klicken Sie auf der Seite Back-End-Dienstdetails auf Erweiterte Konfiguration.
- Wählen Sie im Menü unter Sitzungsaffinität die Option Client-IP aus.
- Klicken Sie auf Aktualisieren.
gcloud
Aktualisieren Sie den Back-End-Dienst my-tcp-lb
mit dem folgenden gcloud-Befehl. Geben Sie dabei die Sitzungsaffinität der Client-IP an:
gcloud compute backend-services update my-tcp-lb \ --global \ --session-affinity=CLIENT_IP
API
Zum Festlegen der Client-IP-Sitzungsaffinität senden Sie eine PATCH
-Anfrage an die Methode backendServices/patch
.
PATCH https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/us-west1/backendServices/my-tcp-lb
{
"sessionAffinity": "CLIENT_IP"
}
Verbindungsausgleich
Sie können für Back-End-Dienste den Verbindungsausgleich aktivieren, um Dienstausfälle für Nutzer zu minimieren, wenn eine Instanz, die Traffic bereitstellt, beendet bzw. manuell oder durch Autoscaling entfernt wird. Weitere Informationen zum Verbindungsausgleich finden Sie unter Verbindungsausgleich aktivieren.
TCP-Proxy-Load-Balancing und Google Cloud-Firewalls
Im Gegensatz zum Netzwerk-Load-Balancing kann der Zugriff auf das TCP-Proxy-Load-Balancing nicht über Firewallregeln gesteuert werden. Dies liegt daran, dass das TCP-Proxy-Load-Balancing am Netzwerkrand von Google Cloud implementiert wird, während Firewallregeln auf Instanzen in Rechenzentren bereitgestellt werden.
Monitoring
Wie Sie ein Monitoring für Ihren TCP-Proxy-Load-Balancer einrichten, erfahren Sie unter Monitoring verwenden.
Fehlerbehebung
Seiten werden über die IP-Adresse des Load-Balancers nicht geladen
Da der Zugriff auf Port 110 in vielen Browsern nicht zulässig ist, müssen Sie Ihren Load-Balancer mit einem Tool wie curl
testen. Wenn Sie Ihre Seiten auch über curl
nicht erreichen, finden Sie nachstehend in diesem Abschnitt einige Lösungsvorschläge.
Status von Instanzen prüfen
Prüfen Sie, ob die Instanzen ordnungsgemäß arbeiten.
gcloud compute backend-services get-health [BACKEND-SERVICE]
Korrekte Konfiguration der Firewallregel prüfen
- Sowohl für die Systemdiagnose als auch für den Load-Balancer müssen
130.211.0.0/22
und35.191.0.0/16
geöffnet sein. - Wenn Sie Instanz-Tags verwenden, müssen Sie dafür sorgen, dass das jeweilige Tag in der Firewall unter TARGET_TAGS aufgeführt ist und dass alle Ihre Instanzen dieses Tag enthalten. In diesem Beispiel haben Instanzen das Tag
tcp-lb
.
gcloud compute firewall-rules list
NAME NETWORK SRC_RANGES RULES SRC_TAGS TARGET_TAGS allow-tcplb-and-health default 130.211.0.0/22,35.191.0.0/16 tcp:110 tcp-lb
Versuchen, einzelne Instanzen zu erreichen
Legen Sie vorübergehend eine Firewallregel fest, die es Ihnen erlaubt, einzeln auf Ihre Instanzen zuzugreifen, und versuchen Sie dann, eine Seite über eine bestimmte Instanz zu laden.
Geben Sie in der Firewall Traffic von beliebigen Quellen zu den markierten Instanzen frei. Erstellen Sie dazu einen Quellfilter, der den Quell-IP-Bereich für TCP-Traffic an Port
110
zu Instanzen mit dem Tagtcp-lb
auf0.0.0.0/0
festlegt.gcloud compute firewall-rules create allow-tcp110-0-0-0-0 \ --source-ranges 0.0.0.0/0 \ --target-tags tcp-lb \ --allow tcp:110
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/firewalls/allow-tcp110-0-0-0-0]. NAME NETWORK SRC_RANGES RULES SRC_TAGS TARGET_TAGS allow-tcp110-0-0-0-0 default 0.0.0.0/0 tcp:110 tcp-lb
Prüfen Sie die externe IP-Adresse (EXTERNAL_IP) einer der Instanzen.
gcloud compute instances list
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS ig-us-central1-1 us-central1-b n1-standard-1 10.240.0.8 EXTERNAL_IP RUNNING ig-us-central1-2 us-central1-b n1-standard-1 10.240.0.11 EXTERNAL_IP RUNNING ig-us-east1-1 us-east1-b n1-standard-1 10.240.0.12 EXTERNAL_IP RUNNING ig-us-east1-2 us-east1-b n1-standard-1 10.240.0.13 EXTERNAL_IP RUNNING
Greifen Sie direkt über den Browser auf eine oder mehrere Instanzen zu.
curl [EXTERNAL_IP]:110
Prüfen Sie, wenn Ihre Instanzen auf diese Weise nicht erreichbar sind, ob die Software ordnungsgemäß ausgeführt wird. Wenn auf Ihre Instanzen einzeln zugegriffen werden kann, ermitteln Sie, ob die Firewallregel Ihres Load-Balancers korrekt ist.
gcloud compute firewall-rules describe allow-tcp-lb-and-health
allowed: IPProtocol: tcp ports: '110' creationTimestamp: '2017-03-16T15:21:34.119-07:00' description: '' id: '8144207668574597377' kind: compute#firewall name: allow-tcp-lb-and-health network: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/default selfLink: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/firewalls/allow-tcp-lb-and-health sourceRanges: 130.211.0.0/22 35.191.0.0/16 targetTags: tcp-lb
Löschen Sie, wenn Sie sicher sind, dass die Instanzen ordnungsgemäß arbeiten, die Firewallregel zur Freigabe aller Quellen wieder.
gcloud compute firewall-rules delete allow-tcp110-0-0-0-0
The following firewalls will be deleted: [allow-tcp110-0-0-0-0] Do you want to continue (Y/n)? y Deleted [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/firewalls/allow-tcp110-0-0-0-0].
Nächste Schritte
- Informationen zur Funktionsweise des TCP-Proxy-Load-Balancings finden Sie in der Übersicht zum TCP-Proxy-Load-Balancing.
- Einrichtung des Load-Balancers bereinigen