Externen TCP-Proxy-Load-Balancer mit VM-Instanzgruppen-Back-Ends einrichten

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Mit dem externen Google Cloud TCP-Proxy-Load-Balancing können Sie für alle Nutzer weltweit eine einzige IP-Adresse verwenden. Das externe 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 externen TCP-Proxy-Load-Balancings. Bevor Sie beginnen, lesen Sie die Übersicht über externes TCP-Proxy-Load-Balancing. Dort erhalten Sie Informationen zur Funktionsweise.

Einrichtung: Übersicht

Dieses Beispiel zeigt die Einrichtung des globalen externen 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:

  1. Vier Instanzen, die auf zwei Regionen verteilt sind
  2. Instanzgruppen, die die Instanzen enthalten
  3. Eine Systemdiagnose zur Prüfung der Instanzintegrität
  4. Einen Back-End-Dienst, der die Instanzen überwacht und das Überschreiten des konfigurierten Nutzungsumfangs verhindert
  5. Den Ziel-TCP-Proxy
  6. Eine externe statische IPv4-Adresse und eine Weiterleitungsregel, mit der Nutzertraffic an den Proxy geleitet wird
  7. Eine externe statische IPv6-Adresse und eine Weiterleitungsregel, mit der Nutzertraffic an den Proxy geleitet wird
  8. 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 die 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 externe 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

  1. Rufen Sie in der Google Cloud Console die Seite „VM-Instanzen” auf.
    Zur Seite „VM-Instanzen”
  2. Klicken Sie auf Instanz erstellen.
  3. Legen Sie als Name ig-us-central1-1 fest.
  4. Legen Sie als Region us-central1 fest.
  5. Setzen Sie Zone auf us-central1-b.
  6. Klicken Sie auf Verwaltung, Sicherheit, Laufwerke, Netzwerke, Einzelne Mandanten, um erweiterte Optionen aufzurufen.
  7. Klicken Sie unter Verwaltung auf Netzwerke und geben Sie im Feld Tags das Tag tcp-lb ein.
  8. 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
  9. Übernehmen Sie für die übrigen Felder die Standardwerte.
  10. Klicken Sie auf Erstellen.
  11. 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
  12. Erstellen Sie ig-us-east1-1 mit den gleichen Einstellungen, aber mit us-east1 als Region und us-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
  13. Erstellen Sie ig-us-east1-2 mit den gleichen Einstellungen, aber mit us-east1 als Region und us-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

  1. Erstellen Sie ig-us-central1-1 in der Zone us-central1-b

    gcloud compute instances create ig-us-central1-1 \
        --image-family debian-10 \
        --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"
    
  2. Erstellen Sie ig-us-central1-2 in der Zone us-central1-b

    gcloud compute instances create ig-us-central1-2 \
        --image-family debian-10 \
        --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"
    
  3. Erstellen Sie ig-us-east1-1 in der Zone us-east1-b

    gcloud compute instances create ig-us-east1-1 \
        --image-family debian-10 \
        --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"
    
  4. Erstellen Sie ig-us-east1-2 in der Zone us-east1-b

    gcloud compute instances create ig-us-east1-2 \
        --image-family debian-10 \
        --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"
    

Instanzgruppe für jede Zone erstellen und Instanzen hinzufügen

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.
    Zur Seite "Instanzgruppen"
  2. Klicken Sie auf Instanzgruppe erstellen.
  3. Klicken Sie auf Neue nicht verwaltete Instanzgruppe.
  4. Legen Sie als Name us-ig1 fest.
  5. Setzen Sie Zone auf us-central1-b.
  6. Klicken Sie unter Portzuordnung auf Port hinzufügen. 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.
    1. Legen Sie als Portname tcp110 fest.
    2. Legen Sie für Portnummern den Wert 110 fest.
  7. Wählen Sie unter VM-Instanzen ig-us-central1-1 und ig-us-central1-2 aus.
  8. Übernehmen Sie die anderen Einstellungen.
  9. Klicken Sie auf Erstellen.
  10. 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.

gcloud

  1. Erstellen Sie die Instanzgruppe us-ig1.

    gcloud compute instance-groups unmanaged create us-ig1 \
        --zone us-central1-b
    
  2. 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
    
  3. Fügen Sie zu us-ig1 ig-us-central1-1 und ig-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
    
  4. Erstellen Sie die Instanzgruppe us-ig2.

    gcloud compute instance-groups unmanaged create us-ig2 \
       --zone us-east1-b
    
  5. 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
    
  6. Fügen Sie zu us-ig2 ig-us-east1-1 und ig-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
    

Es ist nun eine Instanzgruppe für jede Region vorhanden. Jede Instanzgruppe hat zwei VM-Instanzen.

Firewallregel für den externen 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

  1. Rufen Sie in der Google Cloud Console die Seite „Firewallregeln“ auf.
    Zur Seite "Firewall"
  2. Klicken Sie auf Firewallregel erstellen.
  3. Geben Sie im Feld Name allow-tcp-lb-and-health ein.
  4. Wählen Sie unter Netzwerk die Option default aus.
  5. Wählen Sie unter Ziele die Option Angegebene Zieltags aus.
  6. Legen Sie tcp-lb als Ziel-Tags fest.
  7. Legen Sie unter Quellfilter die Option IPv4-Bereiche fest.
  8. Legen Sie für Quell-IPv4-Bereiche den Wert 130.211.0.0/22,35.191.0.0/16 fest.
  9. Legen Sie unter Protokolle und Ports die Option Angegebene Protokolle und Ports auf tcp:110 fest.
  10. Klicken Sie auf Erstellen.

gcloud

gcloud compute firewall-rules create allow-tcp-lb-and-health \
   --source-ranges 130.211.0.0/22,35.191.0.0/16 \
   --target-tags tcp-lb \
   --allow tcp:110

Load-Balancer konfigurieren

Console

Load-Balancer erstellen und Back-End-Dienst konfigurieren

  1. Öffnen Sie in der Google Cloud Console die Seite "Load-Balancing".
    Zur Seite "Load-Balancing"
  2. Klicken Sie auf Load-Balancer erstellen.
  3. Starten Sie die Konfiguration des Load-Balancers:
    1. Klicken Sie unter TCP-Load-Balancing auf Konfiguration starten.
    2. Setzen Sie Internet oder nur intern auf Vom Internet zu meinen VMs.
    3. Wählen Sie für Mehrere Regionen oder einzelne Regionen die Option Mehrere Regionen aus.
    4. Klicken Sie auf Weiter.
    5. Legen Sie als Name my-tcp-lb fest.
    6. Klicken Sie auf Back-End-Konfiguration.
    7. Wählen Sie unter Back-End-Typ die Option Instanzgruppen aus.
    8. Wählen Sie unter Protokoll die Option TCP aus.
  4. Konfigurieren Sie das erste Back-End:
    1. Wählen Sie unter Neues Back-End die Instanzgruppe us-ig1 aus.
    2. Behalten Sie die verbleibenden Standardwerte bei.
  5. Konfigurieren Sie das zweite Back-End:
    1. Klicken Sie auf Back-End hinzufügen.
    2. Wählen Sie die Instanzgruppe us-ig2 aus.
    3. Löschen Sie unter Portnummern 80 und fügen Sie 110 hinzu.
  6. Systemdiagnose konfigurieren:
    1. Wählen Sie unter Systemdiagnose die Option Systemdiagnose erstellen aus.
    2. Geben Sie als Name für die Systemdiagnose my-tcp-health-check an.
    3. Wählen Sie unter Protokoll die Option TCP aus.
    4. Legen Sie für Port den Wert 110 fest.
  7. Optional: Konfigurieren Sie eine Standard-Back-End-Sicherheitsrichtlinie. Die Standardsicherheitsrichtlinie drosselt den Traffic über einen vom Nutzer konfigurierten Schwellenwert. Weitere Informationen zu Standardsicherheitsrichtlinien finden Sie in der Übersicht zur Ratenbegrenzung.

    1. Wenn Sie die standardmäßige Google Cloud Armor-Sicherheitsrichtlinie deaktivieren möchten, wählen Sie im Menü der Back-End-Sicherheitsrichtlinie None aus.
    2. Wählen Sie im Abschnitt Sicherheit die Option Standardsicherheitsrichtlinie aus.
    3. Akzeptieren Sie im Feld Richtlinienname den automatisch generierten Namen oder geben Sie einen Namen für Ihre Sicherheitsrichtlinie ein.
    4. Akzeptieren Sie im Feld Anzahl der Anfragen die Standardanzahl der Anfragen oder geben Sie eine Ganzzahl zwischen 1 und 10,000 ein.
    5. Wählen Sie im Feld Intervall ein Intervall aus.
    6. Wählen Sie im Feld Für Schlüssel erzwingen einen der folgenden Werte aus: Alle, IP-Adresse oder X-Forwarded-For IP-Adresse. Weitere Informationen zu diesen Optionen finden Sie unter Clients für die Ratenbegrenzung identifizieren.
  8. Behalten Sie die verbleibenden Standardwerte bei.
  9. Klicken Sie auf Speichern und fortfahren.
  10. 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

  1. Klicken Sie auf Front-End-Konfiguration.
  2. Fügen Sie die erste Weiterleitungsregel hinzu:
    1. Geben Sie als Name my-tcp-lb-forwarding-rule ein.
    2. Wählen Sie unter Protokoll die Option TCP aus.
    3. Wählen Sie unter IP-Adresse die Option IP-Adresse erstellen aus.
      1. Geben Sie als Name tcp-lb-static-ip ein.
      2. Klicken Sie auf Reservieren.
    4. Legen Sie für Port den Wert 110 fest.
    5. Aktivieren Sie in diesem Beispiel das Proxyprotokoll nicht, da es mit der Apache HTTP Server-Software nicht funktioniert. Weitere Informationen finden Sie unter Proxyprotokoll.
    6. Klicken Sie auf Fertig.
  3. Fügen Sie die zweite Weiterleitungsregel hinzu:
    1. Klicken Sie auf Front-End-IP und Port hinzufügen.
    2. Geben Sie als Name my-tcp-lb-ipv6-forwarding-rule ein.
    3. Wählen Sie unter Protokoll die Option TCP aus.
    4. Legen Sie IPv6 als IP-Version fest.
    5. Klicken Sie unter IP-Adresse auf IP-Adresse erstellen.
      1. Geben Sie als Name tcp-lb-ipv6-static-ip ein.
      2. Klicken Sie auf Reservieren.
    6. Legen Sie für Port den Wert 110 fest.
    7. Aktivieren Sie in diesem Beispiel das Proxyprotokoll nicht, da es mit der Apache HTTP Server-Software nicht funktioniert. Weitere Informationen finden Sie unter Proxyprotokoll.
    8. Klicken Sie auf Fertig.
  4. 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

  1. Klicken Sie auf Überprüfen und abschließen.
  2. Kontrollieren Sie die Einstellungen.
  3. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie eine Systemdiagnose.

    gcloud compute health-checks create tcp my-tcp-health-check --port 110
    
  2. Erstellen Sie einen Back-End-Dienst.

    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
    

    Alternativ können Sie mit --protocol SSL eine verschlüsselte Kommunikation vom Load-Balancer zu den Instanzen konfigurieren.

  3. Fügen Sie Instanzgruppen zu Ihrem Back-End-Dienst hinzu.

    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
     
    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
    
  4. Konfigurieren Sie einen Ziel-TCP-Proxy. Wenn Sie den Proxyheader aktivieren möchten, legen Sie PROXY_V1 anstelle von NONE fest.

    gcloud compute target-tcp-proxies create my-tcp-lb-target-proxy \
        --backend-service my-tcp-lb \
        --proxy-header NONE
    
  5. Reservieren Sie globale statische IPv4- und IPv6-Adressen.

    Ü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
    
    gcloud compute addresses create tcp-lb-static-ipv6 \
        --ip-version=IPV6 \
        --global
    
  6. Konfigurieren Sie globale Weiterleitungsregeln für die beiden Adressen.

    gcloud compute forwarding-rules create my-tcp-lb-ipv4-forwarding-rule \
        --global \
        --target-tcp-proxy my-tcp-lb-target-proxy \
        --address tcp-lb-static-ipv4 \
        --ports 110
    
    gcloud compute forwarding-rules create my-tcp-lb-ipv6-forwarding-rule \
        --global \
        --target-tcp-proxy my-tcp-lb-target-proxy \
        --address tcp-lb-static-ipv6 \
        --ports 110
    

Load-Balancer testen

  1. Rufen Sie die IP-Adresse des Load-Balancers ab.

    Führen Sie den folgenden Befehl aus, um die IPv4-Adresse abzurufen:

    gcloud compute addresses describe tcp-lb-static-ipv4
    

    Führen Sie den folgenden Befehl aus, um die IPv6-Adresse abzurufen:

    gcloud compute addresses describe tcp-lb-static-ipv6
    
  2. Senden Sie den Traffic mit folgendem Befehl an Ihren Load-Balancer. Ersetzen Sie LB_IP_ADDRESS durch die IPv4- oder IPv6-Adresse Ihres Load-Balancers.

    curl -m1 LB_IP_ADDRESS:110
    

    Wenn die zugewiesene IPv6-Adresse beispielsweise [2001:db8:1:1:1:1:1:1/96]:110 lautet, sollte der Befehl so aussehen:

    curl -m1 http://[2001:db8:1:1:1:1:1:1]:110
    

Wenn Sie den Load-Balancer nicht erreichen können, führen Sie die unter Fehlerbehebung bei der Einrichtung beschriebenen Schritte aus.

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 die Verbindungsinformationen des Clients beibehalten lassen

Durch das externe 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.

Achten Sie darauf, dass die Back-End-Instanzen des externen TCP-Proxy-Load-Balancers HTTP(S)-Server ausführen, die PROXY-Protokoll-Header unterstützen. Wenn die HTTP(S)-Server nicht für die Unterstützung von PROXY-Protokoll-Headern konfiguriert sind, geben die Back-End-Instanzen leere Antworten zurück. Das PROXY-Protokoll funktioniert beispielsweise nicht mit der Apache HTTP Server-Software. Sie können verschiedene Webserver-Software wie Nginx verwenden.

Wenn Sie das PROXY-Protokoll für Nutzer-Traffic festlegen, müssen Sie es auch für die Systemdiagnosen festlegen. Wenn Sie Systemdiagnosen und Inhaltsbereitstellung über denselben Port durchführen, legen Sie den --proxy-header der Systemdiagnose so fest, dass er mit der Einstellung des Load-Balancers übereinstimmt.

Der PROXY-Protokoll-Header ist 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

PROXY-Protokoll-Header für den Ziel-TCP-Proxy aktualisieren

In der Beispielkonfiguration für Load-Balancer auf dieser Seite erfahren Sie, wie Sie den PROXY-Protokoll-Header beim Erstellen des externen TCP-Proxy-Load-Balancers aktivieren. Führen Sie die folgenden Schritte aus, um den PROXY-Protokoll-Header eines bestehenden Ziel-TCP-Proxys zu ändern.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Load-Balancing.

    Zur Seite „Load-Balancing“

  2. Klicken Sie neben dem Load-Balancer auf Bearbeiten .

  3. Klicken Sie auf Front-End-Konfiguration.

  4. Ändern Sie den Wert des Felds Proxyprotokoll zu Ein.

  5. Klicken Sie auf Update (Aktualisieren), um die Änderungen zu speichern.

gcloud

Bearbeiten Sie im folgenden Befehl das Feld --proxy-header und legen Sie es je nach Anforderung auf NONE oder PROXY fest.

gcloud compute target-ssl-proxies update my-ssl-lb-target-proxy \
    --proxy-header=[NONE | PROXY_V1]

Sitzungsaffinität konfigurieren

Die Beispielkonfiguration erstellt einen Back-End-Dienst ohne Sitzungsaffinität.

Diese Verfahren zeigen, wie Sie einen Back-End-Dienst für den externe 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:

  1. Öffnen Sie in der Google Cloud Console die Seite "Load-Balancing".
    Zur Seite „Load-Balancing“
  2. Klicken Sie auf Back-Ends.
  3. Klicken Sie auf my-tcp-lb (Name des Back-End-Dienstes, den Sie für dieses Beispiel erstellt haben) und dann auf Bearbeiten.
  4. Klicken Sie auf der Seite Back-End-Dienstdetails auf Erweiterte Konfiguration.
  5. Wählen Sie im Menü unter Sitzungsaffinität die Option Client-IP aus.
  6. 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 aktivieren

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.

Fehler bei der Einrichtung beheben

Wenn Seiten nicht geladen werden, wenn Sie versuchen, auf die IP-Adresse des Load-Balancers zuzugreifen, führen Sie die folgenden Schritte zur Fehlerbehebung der Einrichtung aus.

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, die an den Back-End-Dienst my-tcp-lb angehängt sind, HEALTHY sind.

gcloud compute backend-services get-health my-tcp-lb

Prüfen Sie, ob die Firewallregel Traffic zulässt

  • Sowohl für die Systemdiagnose als auch für den Load-Balancer müssen 130.211.0.0/22 und 35.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-tcp-lb-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.

  1. 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 Tag tcp-lb auf 0.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
    
  2. 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
  3. Greifen Sie direkt über den Browser auf eine oder mehrere Instanzen zu.

    curl EXTERNAL_IP:110
    
  4. 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
  5. 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
    

Nächste Schritte