Globale externe Proxy-Network Load Balancer (TCP-Proxy) mit VM-Instanzgruppen-Back-Ends einrichten

Mit globalen Network Load Balancern von Google Cloud können Sie eine einzelne IP-Adresse für alle Nutzer auf der ganzen Welt verwenden. Externe Proxy-Network Load Balancer leiten Traffic automatisch an Backend-Instanzen weiter, die dem Nutzer am nächsten sind.

Diese Seite enthält eine Anleitung zum Einrichten eines globalen externen Proxy-Network Load Balancers mit einem Ziel-TCP-Proxy und VM-Instanzgruppen-Backends. Bevor Sie beginnen, lesen Sie die Übersicht über externen Proxy-Network-Load Balancer. Dort erhalten Sie detaillierte Informationen zur Funktionsweise dieser Load Balancer.

Einrichtung: Übersicht

Dieses Beispiel zeigt, wie ein externer Proxy-Network Load Balancer für einen Dienst eingerichtet wird, der in zwei Regionen vorhanden ist: Region A und Region B. 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 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:

Netzwerk und Subnetze konfigurieren

Gehen Sie so vor, um das Netzwerk und das Subnetz zu erstellen:

Console

Führen Sie die folgenden Schritte aus, um IPv4- und IPv6-Traffic zu unterstützen:

  1. Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.

    Zur Seite VPC-Netzwerke

  2. Klicken Sie auf VPC-Netzwerk erstellen.

  3. Geben Sie einen Namen für das Netzwerk ein.

  4. Optional: Führen Sie die folgenden Schritte aus, um interne IPv6-Adressbereiche in Subnetzen in diesem Netzwerk zu konfigurieren:

    1. Wählen Sie für Interner VPC-Netzwerk-IPv6-ULA-Bereich den Wert Aktiviert aus.
    2. Wählen Sie unter Internen IPv6-Bereich zuweisen die Option Automatisch oder Manuell aus.

      Geben Sie einen /48-Bereich aus dem Bereich fd20::/20 ein, wenn Sie Manuell auswählen. Wenn der Bereich verwendet wird, werden Sie aufgefordert, einen anderen Bereich anzugeben.

  5. Wählen Sie unter Modus für Subnetzerstellung die Option Benutzerdefiniert aus.

  6. Konfigurieren Sie im Abschnitt Neues Subnetz die folgenden Felder:

    1. Geben Sie im Feld Name einen Namen für das Subnetz ein.
    2. Wählen Sie im Feld Region eine Region aus.
    3. Wählen Sie für IP-Stack-Typ IPv4 und IPv6 (Dual-Stack) aus.
    4. Geben Sie im Feld IP-Adressbereich einen IP-Adressbereich ein. Dies ist der primäre IPv4-Bereich für das Subnetz.

      Sie können zwar einen IPv4-Adressbereich für das Subnetz konfigurieren, Sie können aber nicht den Bereich der IPv6-Adressen für das Subnetz auswählen. Google bietet einen (/64) IPv6-CIDR-Block mit fester Größe.

    5. Wählen Sie unter Zugriffstyp IPv6 die Option Extern aus.

  7. Klicken Sie auf Fertig.

  8. Wenn Sie ein Subnetz in einer anderen Region hinzufügen möchten, klicken Sie auf Subnetz hinzufügen und wiederholen Sie die vorherigen Schritte.

  9. Klicken Sie auf Erstellen.

Führen Sie die folgenden Schritte aus, um nur IPv4-Traffic zu unterstützen:

  1. Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.

    Zur Seite VPC-Netzwerke

  2. Klicken Sie auf VPC-Netzwerk erstellen.

  3. Geben Sie im Feld Name einen Namen für das VPC-Netzwerk ein.

  4. Wählen Sie unter Modus für Subnetzerstellung die Option Benutzerdefiniert aus.

  5. Konfigurieren Sie im Abschnitt Neues Subnetz die folgenden Felder:

    1. Geben Sie im Feld Name einen Namen für das Subnetz ein.
    2. Wählen Sie im Feld Region eine Region aus.
    3. Wählen Sie für IP-Stack-Typ die Option IPv4 (Single-Stack) aus.
    4. Geben Sie im Feld IP-Adressbereich den primären IPv4-Bereich für das Subnetz ein.
  6. Klicken Sie auf Fertig.

  7. Wenn Sie ein Subnetz in einer anderen Region hinzufügen möchten, klicken Sie auf Subnetz hinzufügen und wiederholen Sie die vorherigen Schritte.

  8. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie das VPC-Netzwerk im benutzerdefinierten Modus:

    gcloud compute networks create NETWORK \
        [ --enable-ula-internal-ipv6 [ --internal-ipv6-range=ULA_IPV6_RANGE ]] \
        --switch-to-custom-subnet-mode
    
  2. Erstellen Sie im Netzwerk ein Subnetz für Back-Ends.

    Verwenden Sie für IPv4- und IPv6-Traffic den folgenden Befehl, um ein Subnetz zu aktualisieren:

    gcloud compute networks subnets create SUBNET \
       --stack-type=IPV4_IPv6 \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --region=REGION_A
    
    gcloud compute networks subnets create SUBNET_B \
       --stack-type=IPV4_IPv6 \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --region=REGION_B
    

    Verwenden Sie für nur IPv4-Traffic den folgenden Befehl:

    gcloud compute networks subnets create SUBNET \
       --network=NETWORK \
       --stack-type=IPV4_ONLY \
       --range=10.1.2.0/24 \
       --region=REGION_A
    
    gcloud compute networks subnets create SUBNET_B \
       --stack-type=IPV4_ONLY \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --region=REGION_B
    

Ersetzen Sie Folgendes:

  • NETWORK: der Name des VPC-Netzwerks

  • ULA_IPV6_RANGE: ein /48-Präfix aus dem Bereich fd20::/20, das von Google für interne IPv6-Subnetzbereiche verwendet wird Wenn Sie das Flag --internal-ipv6-range nicht verwenden, wählt Google das Präfix /48 für das Netzwerk aus.

  • SUBNET: ein Name für das Subnetz

  • REGION_A oder REGION_B: der Name der Region

Instanzgruppen-Back-Ends konfigurieren

In diesem Abschnitt erfahren Sie, wie Sie einfache Instanzgruppen erstellen, den Gruppen Instanzen hinzufügen und die Instanzen einem Backend-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 werden externe Proxy-Network-Load-Balancer nicht für den HTTP-Traffic verwendet. Apache-Software wird jedoch häufig für Tests verwendet.

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.

    Zu Seite „VM-Instanzen“

  2. Klicken Sie auf Instanz erstellen.

  3. Legen Sie als Name vm-a1 fest.

  4. Legen Sie als Region REGION_A fest.

  5. Setzen Sie Zone auf ZONE_A.

  6. Klicken Sie auf Erweiterte Optionen.

  7. Klicken Sie auf Netzwerk und konfigurieren Sie das folgende Feld:

    • Geben Sie bei Netzwerk-Tags den Wert tcp-lb, allow-health-check-ipv6 ein.

    Führen Sie die folgenden Schritte aus, um IPv4- und IPv6-Traffic zu unterstützen:

    1. Klicken Sie im Bereich Netzwerkschnittstellen auf Bearbeiten und nehmen Sie folgende Änderungen vor:
      • Netzwerk: NETWORK
      • Subnetz: SUBNET
      • IP-Stack-Typ: IPv4 und IPv6 (Dual-Stack)
    2. Klicken Sie auf Fertig.
  8. Klicken Sie auf Verwaltung. Fügen Sie im Feld Startskript das nachfolgende Skript 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>vm-a1</h1></body></html>' | sudo tee /var/www/html/index.html
  9. Klicken Sie auf Erstellen.

  10. Erstellen Sie vm-a2 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>vm-a2</h1></body></html>' | sudo tee /var/www/html/index.html

  11. Erstellen Sie vm-b1 mit den gleichen Einstellungen, aber mit REGION_B als Region und ZONE_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>vm-b1</h1></body></html>' | sudo tee /var/www/html/index.html

  12. Erstellen Sie vm-b2 mit den gleichen Einstellungen, aber mit REGION_B als Region und ZONE_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>vm-b2</h1></body></html>' | sudo tee /var/www/html/index.html

gcloud

  1. Erstellen Sie vm-a1 in der Zone ZONE_A

    gcloud compute instances create vm-a1 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_A \
       --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>vm-a1</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    
  2. Erstellen Sie vm-a2 in der Zone ZONE_A

    gcloud compute instances create vm-a2 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_A \
       --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>vm-a2</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    
  3. Erstellen Sie vm-b1 in der Zone ZONE_B

    gcloud compute instances create vm-b1 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_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>vm-b1</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    
  4. Erstellen Sie vm-b2 in der Zone ZONE_B

    gcloud compute instances create vm-b2 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_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>vm-b2</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    

Instanzgruppen erstellen

In diesem Abschnitt erstellen Sie in jeder Zone eine Instanzgruppe und fügen die Instanzen hinzu.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.

    Zu den Instanzgruppen

  2. Klicken Sie auf Instanzgruppe erstellen.

  3. Klicken Sie auf Neue nicht verwaltete Instanzgruppe.

  4. Legen Sie als Name instance-group-a fest.

  5. Setzen Sie Zone auf ZONE_A.

  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 vm-a1 und vm-a2 aus.

  8. Übernehmen Sie die anderen Einstellungen.

  9. Klicken Sie auf Erstellen.

  10. Wiederholen Sie die Schritte mit den folgenden Werten:

    • Name: instance-group-b
    • Region: REGION_B
    • Zone: ZONE_B
    • Portname: tcp110
    • Portnummern: 110
    • Instanzen: vm-b1 und vm-b2.

gcloud

  1. Erstellen Sie die Instanzgruppe instance-group-a.

    gcloud compute instance-groups unmanaged create instance-group-a \
       --zone ZONE_A
    
  2. Erstellen Sie einen benannten Port für die Instanzgruppe.

    gcloud compute instance-groups set-named-ports instance-group-a \
       --named-ports tcp110:110 \
       --zone ZONE_A
    
  3. Fügen Sie vm-a1 und vm-a2 zu instance-group-a hinzu.

    gcloud compute instance-groups unmanaged add-instances instance-group-a \
       --instances vm-a1,vm-a2 \
       --zone ZONE_A
    
  4. Erstellen Sie die Instanzgruppe us-ig2.

    gcloud compute instance-groups unmanaged create instance-group-b \
       --zone ZONE_B
    
  5. Erstellen Sie einen benannten Port für die Instanzgruppe.

    gcloud compute instance-groups set-named-ports instance-group-b \
       --named-ports tcp110:110 \
       --zone ZONE_B
    
  6. vm-b1 und vm-b2 zu „instance-group-b“ hinzufügen

    gcloud compute instance-groups unmanaged add-instances instance-group-b \
       --instances vm-b1,vm-b2 \
       --zone ZONE_B
    

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

Firewallregel für den externen Proxy-Network-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 der Firewall-Richtlinien auf.

    Zu den Firewall-Richtlinien

  2. Klicken Sie auf Firewallregel erstellen.

  3. Geben Sie im Feld Name allow-tcp-lb-and-health ein.

  4. Wählen Sie ein Netzwerk 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

Firewallregel für die IPv6-Systemdiagnose erstellen

Sie benötigen eine Regel für eingehenden Traffic, die für die Instanzen mit Load-Balancing gilt und Traffic von den Systemdiagnosen von Google Cloud zulässt (2600:2d00:1:b029::/64). In diesem Beispiel wird das Ziel-Tag allow-health-check-ipv6 verwendet, um die VM-Instanzen zu identifizieren, auf die sie angewendet wird.

Ohne diese Firewallregeln blockiert die Standardregel zum Ablehnen von eingehendem Traffic den eingehenden Traffic zu den Back-End-Instanzen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite der Firewall-Richtlinien auf.

    Zu den Firewall-Richtlinien

  2. Klicken Sie noch einmal auf Firewallregel erstellen und geben Sie die folgenden Informationen ein, um IPv6-Subnetz-Traffic zuzulassen:

    • Name: fw-allow-lb-access-ipv6
    • Wählen Sie das Netzwerk aus.
    • Priorität: 1000
    • Trafficrichtung: Eingehend
    • Ziele: Specified target tags
    • Zieltags: allow-health-check-ipv6
    • Quellfilter: IPv6-Bereiche
    • Quell-IPv6-Bereiche: 2600:2d00:1:b029::/64,2600:2d00:1:1::/64
    • Protokolle und Ports: Alle zulassen
  3. Klicken Sie auf Erstellen.

gcloud

Erstellen Sie die Firewallregel fw-allow-lb-access-ipv6, um die Kommunikation mit dem Subnetz zuzulassen:

gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \
  --network=NETWORK \
  --action=allow \
  --direction=ingress \
  --target-tags=allow-health-check-ipv6 \
  --source-ranges=2600:2d00:1:b029::/64,2600:2d00:1:1::/64 \
  --rules=all

Load-Balancer konfigurieren

Console

Konfiguration starten

  1. Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.

    Load-Balancing aufrufen

  2. Klicken Sie auf Load-Balancer erstellen.
  3. Wählen Sie unter Typ des Load Balancers die Option Network Load Balancer (TCP/UDP/SSL) aus und klicken Sie auf Weiter.
  4. Wählen Sie unter Proxy oder Passthrough die Option Proxy-Load Balancer aus und klicken Sie auf Weiter.
  5. Wählen Sie für Öffentlich oder intern die Option Öffentlich (extern) aus und klicken Sie auf Weiter.
  6. Wählen Sie unter Globale oder Einzelregion-Bereitstellung die Option Am besten für globale Arbeitslasten aus und klicken Sie auf Weiter.
  7. Wählen Sie unter Generation des Load Balancers die Option Globaler externer Proxy-Network Load Balancer aus und klicken Sie auf Weiter.
  8. Klicken Sie auf Konfigurieren.

Grundlegende Konfiguration

Legen Sie als Name my-tcp-lb fest.

Backend-Konfiguration

  1. Klicken Sie auf Backend-Konfiguration.
  2. Wählen Sie unter Back-End-Typ die Option Instanzgruppen aus.
  3. Wählen Sie unter Protokoll die Option TCP aus.
  4. Wählen Sie in der Liste Richtlinie zur IP-Adressauswahl die Option IPv6 bevorzugen aus.
  5. Configure the first backend:
    1. Wählen Sie unter Neues Backend die Instanzgruppe instance-group-a aus.
    2. Behalten Sie die verbleibenden Standardwerte bei.
  6. Configure the second backend:

      So unterstützen Sie IPv4- und IPv6-Traffic:

      • Wählen Sie für IP-Stack-Typ die Option IPv4 and IPv6 (dual-stack) aus.
    1. Klicken Sie auf Back-End hinzufügen.
    2. Wählen Sie die Instanzgruppe instance-group-b aus.
    3. Löschen Sie unter Portnummern 80 und fügen Sie 110 hinzu.
  7. Konfigurieren Sie die Systemdiagnose:
    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.
    5. Behalten Sie die verbleibenden Standardwerte bei.
    6. Klicken Sie auf Speichern und fortfahren.
  8. Prüfen Sie in der Google Cloud Console, ob neben Backend-Konfiguration ein Häkchen angezeigt wird. Ist dies nicht der Fall, prüfen Sie, ob Sie alle Schritte ausgeführt haben.

Frontend-Konfiguration

  1. Klicken Sie auf Front-End-Konfiguration.
  2. Fügen Sie die erste Weiterleitungsregel hinzu:
    1. Geben Sie als Namen 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 Namen 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 nicht das Proxyprotokoll, da es mit der Apache HTTP Server-Software nicht funktioniert. Weitere Informationen finden Sie unter Proxyprotokoll.
    6. Klicken Sie auf Fertig.
  3. Prüfen Sie in der Google Cloud Console, ob neben Frontend-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 Prüfen und abschließen.
  2. Prüfen Sie die Konfigurationseinstellungen des Load-Balancers.
  3. Optional: Klicken Sie auf Entsprechender Code, um die REST API-Anfrage aufzurufen, die zum Erstellen des Load-Balancers verwendet wird.
  4. 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 Backend-Dienst.
        gcloud beta compute backend-services create my-tcp-lb \
            --load-balancing-scheme EXTERNAL_MANAGED \
            --global-health-checks \
            --global \
            --protocol TCP \
            --ip-address-selection-policy=PREFER_IPV6 \
            --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 Backend-Dienst hinzu.

        gcloud beta compute backend-services add-backend my-tcp-lb \
            --global \
            --instance-group instance-group-a \
            --instance-group-zone ZONE_A \
            --balancing-mode UTILIZATION \
            --max-utilization 0.8
        
        gcloud beta compute backend-services add-backend my-tcp-lb \
            --global \
            --instance-group instance-group-b \
            --instance-group-zone ZONE_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 beta 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 Load-Balancing-Dienst 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 beta compute forwarding-rules create my-tcp-lb-ipv4-forwarding-rule \
            --load-balancing-scheme EXTERNAL_MANAGED \
            --global \
            --target-tcp-proxy my-tcp-lb-target-proxy \
            --address tcp-lb-static-ipv4 \
            --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 für den Erhalt der Verbindungsinformationen des Clients

Der Proxy-Network Load Balancer beendet TCP-Verbindungen vom Client und erstellt neue Verbindungen zu den Instanzen. 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 Backend-Instanzen des Proxy-Network Load Balancers Server ausführen, die PROXY-Protokoll-Header unterstützen. Wenn die Server nicht für die Unterstützung von PROXY-Protokoll-Headern konfiguriert sind, geben die Backend-Instanzen leere Antworten zurück.

Wenn Sie das PROXY-Protokoll für Nutzer-Traffic festlegen, können 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 enthält in der Regel eine einzelne, für Nutzer lesbare Textzeile im folgenden Format:

PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n

Das folgende Beispiel zeigt ein PROXY-Protokoll:

PROXY TCP4 192.0.2.1 198.51.100.1 15221 110\r\n

Im vorherigen Beispiel lautet die Client-IP-Adresse 192.0.2.1, die Load Balancing-IP-Adresse 198.51.100.1, der Clientport 15221 und der Zielport 110.

Wenn die Client-IP-Adresse nicht bekannt ist, generiert der Load Balancer einen PROXY-Protokoll-Header im folgenden Format:

PROXY UNKNOWN\r\n

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

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

Console

  1. Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.

    Load-Balancing aufrufen

  2. Klicken Sie neben dem Load Balancer auf Bearbeiten.
  3. Klicken Sie auf Frontend-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_V1 fest.

gcloud compute target-tcp-proxies update TARGET_PROXY_NAME \
    --proxy-header=[NONE | PROXY_V1]

Sitzungsaffinität konfigurieren

Die Beispielkonfiguration erstellt einen Backend-Dienst ohne Sitzungsaffinität.

Diese Verfahren zeigen, wie Sie einen Backend-Dienst für den Beispiel-Load-Balancer aktualisieren, damit der Backend-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 Backend-VM weiter.

Console

So aktivieren Sie die Client-IP-Sitzungsaffinität:

  1. Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.

    Load-Balancing aufrufen

  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 Backend-Dienst my-tcp-lb mit dem folgenden Google Cloud CLI-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 Backend-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.

Nächste Schritte