Regionalen internen Proxy-Network-Load-Balancer mit VM-Instanzgruppen-Backends einrichten

Der regionale interne Proxy-Network-Load-Balancer ist ein Proxy-basierter regionaler Layer-4-Load-Balancer, mit dem Sie Ihren TCP-Diensttraffic hinter einer internen IP-Adresse ausführen und skalieren können, auf die nur Clients im selben VPC-Netzwerk oder Clients, die mit Ihrem VPC-Netzwerk verbunden sind, Zugriff haben.

Diese Anleitung erläutert die Einrichtung eines regionalen internen Proxy-Netzwerk-Load-Balancers mit einem verwalteten Instanzgruppen-Backend (MIG-Backend).

Bevor Sie beginnen, lesen Sie die Übersicht über den regionalen internen Proxy-Network Load Balancer.

Überblick

In diesem Beispiel verwenden wir den Load-Balancer, um TCP-Traffic auf Backend-VMs in zwei zonalen verwalteten Instanzgruppen in der Region REGION_A zu verteilen. 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 die folgende Bereitstellung:

Beispielkonfiguration für regionalen internen Proxy-Network Load Balancer mit Instanzgruppen-Backends.
Beispielkonfiguration für regionalen internen Proxy-Network Load Balancer mit Instanzgruppen-Backends

Der regionale interne Proxy-Network-Load-Balancer ist ein regionaler Load-Balancer. Alle Load-Balancer-Komponenten (Backend-Instanzgruppen, Backend-Dienst, Ziel-Proxy und Weiterleitungsregel) müssen sich in derselben Region befinden.

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

Sie benötigen ein VPC-Netzwerk mit zwei Subnetzen: eines für die Back-Ends des Load-Balancers und eines für die Proxys des Load-Balancers. Regionale interne Proxy-Network-Load-Balancer sind regional. Traffic innerhalb des VPC-Netzwerks wird an den Load-Balancer weitergeleitet, wenn sich die Quelle des Traffics in einem Subnetz in derselben Region wie der Load-Balancer befindet.

In diesem Beispiel werden das folgende VPC-Netzwerk, die folgende Region und die folgenden Subnetze verwendet:

  • Netzwerk. Das Netzwerk ist ein VPC-Netzwerk im benutzerdefinierten Modus mit dem Namen lb-network.

  • Subnetz für Back-Ends. Ein Subnetz mit dem Namen backend-subnet in der Region REGION_A verwendet 10.1.2.0/24 für seinen primären IP-Bereich.

  • Subnetz für Proxys. Ein Subnetz mit dem Namen proxy-only-subnet in der Region REGION_A verwendet 10.129.0.0/23 für seinen primären IP-Bereich.

Zur Veranschaulichung des globalen Zugriffs wird in diesem Beispiel auch eine zweite Testclient-VM in einer anderen Region (REGION_B ) und ein Subnetz mit primärem IP-Adressbereich10.3.4.0/24 erstellt.

Netzwerk und Subnetze erstellen

Console

  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 für Name lb-network ein.

  4. Wählen Sie im Abschnitt Subnetze als Modus für die Subnetzerstellung Benutzerdefiniert aus.

  5. Erstellen Sie ein Subnetz für die Back-Ends des Load-Balancers. Geben Sie im Bereich Neues Subnetz folgende Informationen ein:

    • Name: backend-subnet
    • Region: REGION_A
    • IP-Adressbereich: 10.1.2.0/24
  6. Klicken Sie auf Fertig.

  7. Klicken Sie auf Subnetz hinzufügen.

  8. Erstellen Sie ein Subnetz, um den globalen Zugriff zu demonstrieren. Geben Sie im Bereich Neues Subnetz folgende Informationen ein:

    • Name: test-global-access-subnet
    • Region: REGION_B
    • IP-Adressbereich: 10.3.4.0/24
  9. Klicken Sie auf Fertig.

  10. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie mit dem Befehl gcloud compute networks create das benutzerdefinierte VPC-Netzwerk:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Erstellen Sie mit dem Befehl gcloud compute networks subnets create ein Subnetz im Netzwerk lb-network in der Region REGION_A:

    gcloud compute networks subnets create backend-subnet \
       --network=lb-network \
       --range=10.1.2.0/24 \
       --region=REGION_A
    

    Ersetzen Sie REGION_A durch den Namen der Google Cloud-Zielregion.

  3. Erstellen Sie mit dem Befehl gcloud compute networks subnets create ein Subnetz im Netzwerk lb-network in der Region REGION_B:

    gcloud compute networks subnets create test-global-access-subnet \
       --network=lb-network \
       --range=10.3.4.0/24 \
       --region=REGION_B
    

    Ersetzen Sie REGION_B durch den Namen der Google Cloud-Region, in der Sie das zweite Subnetz zum Testen des globalen Zugriffs erstellen möchten.

Nur-Proxy-Subnetz erstellen

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 Load-Balancern in der Region REGION_A des VPC-Netzwerks lb-network verwendet.

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:

  1. Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
    Zur Seite „VPC-Netzwerke“
  2. Klicken Sie auf den Namen des freigegebenen VPC-Netzwerks: lb-network.
  3. Klicken Sie auf Subnetz hinzufügen.
  4. Geben Sie für Name proxy-only-subnet ein.
  5. Wählen Sie bei Region die Option REGION_A aus.
  6. Setzen Sie Zweck auf Regional verwalteter Proxy.
  7. Geben Sie 10.129.0.0/23 als IP-Adressbereich ein.
  8. 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-only-subnet \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE \
    --region=REGION_A \
    --network=lb-network \
    --range=10.129.0.0/23

Firewallregeln erstellen

Für dieses Beispiel sind die folgenden Firewallregeln erforderlich:

  • fw-allow-ssh: Eine Regel für eingehenden Traffic, die für die Instanzen mit Load-Balancing gilt und eingehende SSH-Verbindungen über TCP-Port 22 von 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-Tag allow-ssh verwendet.

  • 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 und 35.191.0.0/16). In diesem Beispiel wird das Ziel-Tag allow-health-check verwendet.

  • fw-allow-proxy-only-subnet. Eine Regel für eingehenden Traffic, die zulässt, dass Verbindungen vom Nur-Proxy-Subnetz die Back-Ends erreichen.

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

Die Back-End-Instanzen werden von den Ziel-Tags definiert. Ohne die Ziel-Tags gelten die Firewallregeln für alle Ihre Backend-Instanzen im VPC-Netzwerk. Achten Sie beim Erstellen der Back-End-VMs darauf, die angegebenen Ziel-Tags wie in Verwaltete Instanzgruppe erstellen beschrieben zu verwenden.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Firewall auf.
    Zu den Firewall-Richtlinien
  2. Klicken Sie auf Firewallregel erstellen, um die Regel zu erstellen, die eingehende SSH-Verbindungen zulässt:
    • Name: fw-allow-ssh
    • Netzwerk: lb-network
    • 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.
      • Klicken Sie das Kästchen TCP an und geben Sie 22 als Portnummer ein.
  3. Klicken Sie auf Erstellen.
  4. Klicken Sie ein zweites Mal auf Firewallregel erstellen, um die Regel zum Zulassen von Google Cloud-Systemdiagnosen zu erstellen:
    • Name: fw-allow-health-check
    • Netzwerk: lb-network
    • Trafficrichtung: Eingehend
    • Aktion bei Übereinstimmung: Zulassen
    • Ziele: Angegebene Ziel-Tags
    • Zieltags: allow-health-check
    • Quellfilter: IPv4-Bereiche.
    • IPv4-Quellbereiche: 130.211.0.0/22 und 35.191.0.0/16
    • Protokolle und Ports:
      • Wählen Sie Angegebene Protokolle und Ports aus.
      • Klicken Sie das Kästchen TCP an und geben Sie 80 als Portnummer ein.
        Sie sollten diese Regeln nur auf Protokolle und Ports beschränken, die mit den von Ihren Systemdiagnosen verwendeten übereinstimmen. Wenn Sie tcp:80 für das Protokoll und den Port verwenden, kann Google Cloud HTTP auf Port 80 verwenden, um Ihre VMs zu kontaktieren. Es kann HTTPS jedoch nicht auf Port 443 verwenden, um den Kontakt herzustellen.
  5. Klicken Sie auf Erstellen.
  6. Klicken Sie ein drittes Mal auf Firewallregel erstellen, um die Regel zu erstellen, die Verbindungen von den Proxyservern des Load-Balancers zu den Back-Ends zulässt:
    • Name: fw-allow-proxy-only-subnet
    • Netzwerk: lb-network
    • Trafficrichtung: Eingehend
    • Aktion bei Übereinstimmung: Zulassen
    • Ziele: Angegebene Ziel-Tags
    • Zieltags: allow-proxy-only-subnet
    • Quellfilter: IPv4-Bereiche.
    • IPv4-Quellbereiche: 10.129.0.0/23
    • Protokolle und Ports:
      • Wählen Sie Angegebene Protokolle und Ports aus.
      • Klicken Sie das Kästchen TCP an und geben Sie 80 als Portnummer ein.
  7. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie die Firewallregel fw-allow-ssh, um SSH-Verbindungen zu VMs mit dem Netzwerk-Tag allow-ssh zu ermöglichen. Wenn Sie source-ranges weglassen, bezieht Google Cloud die Regel auf jede Quelle.

    gcloud compute firewall-rules create fw-allow-ssh \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --target-tags=allow-ssh \
       --rules=tcp:22
    
  2. Erstellen Sie die Regel fw-allow-health-check, um Google Cloud-Systemdiagnosen zuzulassen. In diesem Beispiel wird der gesamte TCP-Traffic von Systemdiagnosetests zugelassen. Sie können jedoch Ihren Anforderungen entsprechend eine kleinere Gruppe von Ports konfigurieren:

    gcloud compute firewall-rules create fw-allow-health-check \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=130.211.0.0/22,35.191.0.0/16 \
       --target-tags=allow-health-check \
       --rules=tcp:80
    
  3. Erstellen Sie die Regel fw-allow-proxy-only-subnet, um Verbindungen von den Envoy-Proxys der Region zu Ihren Back-Ends zuzulassen. Legen Sie für --source-ranges die zugewiesenen Bereiche des Nur-Proxy-Subnetzes fest, in diesem Beispiel 10.129.0.0/23.

    gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=10.129.0.0/23 \
       --target-tags=allow-proxy-only-subnet \
       --rules=tcp:80
    

IP-Adresse des Load-Balancers reservieren

Informationen zum Reservieren einer statischen internen IP-Adresse für Ihren Load-Balancer finden Sie unter Neue statische interne IPv4- oder IPv6-Adresse reservieren.

Erstellen Sie eine verwaltete Instanzgruppe.

In diesem Abschnitt erfahren Sie, wie Sie zwei Back-Ends der verwalteten Instanzgruppe (MIG) in der Region REGION_A für den Load-Balancer erstellen. Die MIG stellt VM-Instanzen bereit, auf denen die Backend-Apache-Server für diesen regionalen internen Beispiel-Proxy-Netzwerk-Load-Balancer ausgeführt werden. In der Regel wird ein regionaler interner Proxy-Netzwerk-Load-Balancer nicht für HTTP-Traffic verwendet. Apache ist jedoch eine häufig verwendete Software und lässt sich zum Testen leicht einrichten.

Console

  1. eine Instanzvorlage erstellen Rufen Sie in der Google Cloud Console die Seite Instanzvorlagen auf.

    Zu Instanzvorlagen

    1. Klicken Sie auf Instanzvorlage erstellen.
    2. Geben Sie für Name int-tcp-proxy-backend-template ein.
    3. Das Bootlaufwerk sollte auf ein Debian-Image wie Debian GNU/Linux 10 (Stretch) eingestellt sein. Diese Anleitungen verwenden Befehle, die nur für Debian verfügbar sind, z. B. apt-get.
    4. Klicken Sie auf Erweiterte Optionen.
    5. Klicken Sie auf Netzwerk und konfigurieren Sie die folgenden Felder:
      1. Geben Sie bei Netzwerk-Tags allow-ssh, allow-health-check und allow-proxy-only-subnet ein.
      2. Wählen Sie für Netzwerkschnittstellen Folgendes aus:
        • Netzwerk: lb-network
        • Subnetz: backend-subnet
    6. Klicken Sie auf Verwaltung. Fügen Sie im Feld Startskript das nachfolgende Skript ein.

      #! /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
      
    7. Klicken Sie auf Erstellen.

  2. Erstellen Sie eine verwaltete Instanzgruppe. Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.

    Zu den Instanzgruppen

    1. Klicken Sie auf Instanzgruppe erstellen.
    2. Wählen Sie Neue verwaltete Instanzgruppe (zustandslos) aus. Weitere Informationen finden Sie unter Zustandslose oder zustandsorientierte MIGs.
    3. Geben Sie für Name mig-a ein.
    4. Wählen Sie unter Ort die Option Einzelne Zone aus.
    5. Wählen Sie bei Region die Option REGION_A aus.
    6. Wählen Sie bei Zone die Option ZONE_A1 aus.
    7. Wählen Sie unter Instanzvorlage int-tcp-proxy-backend-template aus.
    8. Geben Sie an, wie viele Instanzen die Gruppe umfassen soll.

      Geben Sie für dieses Beispiel unter Autoscaling die folgenden Optionen an:

      • Wählen Sie für Autoscaling-Modus Off:do not autoscale aus.
      • Geben Sie für Maximale Anzahl von Instanzen den Wert 2 ein.
    9. Klicken Sie im Abschnitt Portzuordnung auf Port hinzufügen.

      • Geben Sie als Portname tcp80 ein.
      • Geben Sie für Portnummer 80 ein.
    10. Klicken Sie auf Erstellen.

  3. Wiederholen Sie Schritt 2, um eine zweite verwaltete Instanzgruppe mit den folgenden Einstellungen zu erstellen:

    1. Name: mig-c
    2. Zone: ZONE_A2 Behalten Sie alle anderen Einstellungen bei.

gcloud

Bei den gcloud-Anleitungen in diesem Handbuch wird davon ausgegangen, dass Sie Cloud Shell oder eine andere Umgebung verwenden, in der Bash installiert ist.

  1. Erstellen Sie mit dem Befehl gcloud compute instance-templates create eine VM-Instanzvorlage mit HTTP-Server.

    gcloud compute instance-templates create int-tcp-proxy-backend-template \
       --region=REGION_A \
       --network=lb-network \
       --subnet=backend-subnet \
       --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \
       --image-family=debian-10 \
       --image-project=debian-cloud \
       --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'
    
  2. Erstellen Sie eine verwaltete Instanzgruppe in der Zone ZONE_A1.

    gcloud compute instance-groups managed create mig-a \
       --zone=ZONE_A1 \
       --size=2 \
       --template=int-tcp-proxy-backend-template
    

    Ersetzen Sie ZONE_A1 durch den Namen der Zone in der Google Cloud-Zielregion.

  3. Erstellen Sie eine verwaltete Instanzgruppe in der Zone ZONE_A2.

    gcloud compute instance-groups managed create mig-c \
       --zone=ZONE_A2 \
       --size=2 \
       --template=int-tcp-proxy-backend-template
    

    Ersetzen Sie ZONE_A2 durch den Namen einer anderen Zone in der Google Cloud-Zielregion.

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 Intern aus und klicken Sie auf Weiter.
  6. Wählen Sie für Regionenübergreifende oder Einzelregion-Bereitstellung die Option Am besten für regionale Arbeitslasten aus und klicken Sie auf Weiter.
  7. Klicken Sie auf Konfigurieren.

Grundlegende Konfiguration

  1. Geben Sie für Name my-int-tcp-lb ein.
  2. Wählen Sie bei Region die Option REGION_A aus.
  3. Wählen Sie für Netzwerk die Option lb-network aus.

Nur-Proxy-Subnetz reservieren

So reservieren Sie ein Nur-Proxy-Subnetz:

  1. Klicken Sie auf Subnetz reservieren.
  2. Geben Sie für Name proxy-only-subnet ein.
  3. Geben Sie 10.129.0.0/23 als IP-Adressbereich ein.
  4. Klicken Sie auf Add (Hinzufügen).

Back-end-Konfiguration

  1. Klicken Sie auf Backend-Konfiguration.
  2. Wählen Sie für den Backend-Typ die Option Instanzgruppe aus.
  3. Wählen Sie für Protokoll die Option TCP aus.
  4. Geben Sie als Benannter Port tcp80 ein.
  5. Configure the first backend:
    1. Wählen Sie unter Neues Backend die Instanzgruppe mig-a aus.
    2. Geben Sie unter Portnummern 80 ein.
    3. Behalten Sie die verbleibenden Standardwerte bei und klicken Sie auf Fertig.
  6. Configure the second backend:
    1. Klicken Sie auf Backend hinzufügen.
    2. Wählen Sie unter Neues Backend die Instanzgruppe mig-c aus.
    3. Geben Sie unter Portnummern 80 ein.
    4. Behalten Sie die verbleibenden Standardwerte bei und klicken Sie auf Fertig.
  7. Systemdiagnose konfigurieren:
    1. Klicken Sie bei Systemdiagnose auf Systemdiagnose erstellen.
    2. Geben Sie als Name für die Systemdiagnose tcp-health-check an.
    3. Wählen Sie für Protocol die Option TCP aus.
    4. Legen Sie für Port den Wert 80 fest.
  8. Behalten Sie die verbleibenden Standardwerte bei und klicken Sie auf Speichern.
  9. 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.

Front-End-Konfiguration

  1. Klicken Sie auf Frontend-Konfiguration.
  2. Geben Sie für Name int-tcp-forwarding-rule ein.
  3. Wählen Sie als Subnetzwerk backend-subnet aus.
  4. Wählen Sie unter IP-Adresse die zuvor reservierte IP-Adresse aus: LB_IP_ADDRESS
  5. Geben Sie für Portnummer 110 ein. Die Weiterleitungsregel leitet nur Pakete mit einem übereinstimmenden Zielport weiter.
  6. Aktivieren Sie in diesem Beispiel das Proxyprotokoll nicht, da es mit der Apache HTTP Server-Software nicht funktioniert. Weitere Informationen finden Sie unter Proxyprotokoll.
  7. Klicken Sie auf Fertig.
  8. 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. Regionale Systemdiagnose erstellen.

    gcloud compute health-checks create tcp tcp-health-check \
       --region=REGION_A \
       --use-serving-port
    
  2. Erstellen Sie einen Backend-Dienst.

    gcloud compute backend-services create internal-tcp-proxy-bs \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --protocol=TCP \
       --region=REGION_A \
       --health-checks=tcp-health-check \
       --health-checks-region=REGION_A
    
  3. Fügen Sie Instanzgruppen zu Ihrem Backend-Dienst hinzu.

    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --region=REGION_A \
       --instance-group=mig-a \
       --instance-group-zone=ZONE_A1 \
       --balancing-mode=UTILIZATION \
       --max-utilization=0.8
    
    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --region=REGION_A \
       --instance-group=mig-c \
       --instance-group-zone=ZONE_A2 \
       --balancing-mode=UTILIZATION \
       --max-utilization=0.8
    
  4. Erstellen Sie einen internen TCP-Proxy.

    gcloud compute target-tcp-proxies create int-tcp-target-proxy \
       --backend-service=internal-tcp-proxy-bs \
       --proxy-header=NONE \
       --region=REGION_A
    

    Wenn Sie den Proxyheader aktivieren möchten, legen Sie PROXY_V1 anstelle von NONE 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.

  5. Erstellen Sie die Weiterleitungsregel. Geben Sie für --ports eine einzelne Portnummer zwischen 1 und 65535 an. In diesem Beispiel wird Port 110 verwendet. Die Weiterleitungsregel leitet nur Pakete mit einem übereinstimmenden Zielport weiter.

    gcloud compute forwarding-rules create int-tcp-forwarding-rule \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --network=lb-network \
       --subnet=backend-subnet \
       --region=REGION_A \
       --target-tcp-proxy=int-tcp-target-proxy \
       --target-tcp-proxy-region=REGION_A \
       --address=int-tcp-ip-address \
       --ports=110
    

Load-Balancer testen

Um den Load-Balancer zu testen, erstellen Sie eine Client-VM in der Region des Load-Balancers. Senden Sie dann Traffic vom Client an den Load-Balancer.

Client-VM erstellen

Erstellen Sie eine Client-VM (client-vm) in derselben Region wie der Load-Balancer.

Console

  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 client-vm fest.

  4. Legen Sie für Zone den Wert ZONE_A1 fest.

  5. Klicken Sie auf Erweiterte Optionen.

  6. Klicken Sie auf Netzwerk und konfigurieren Sie die folgenden Felder:

    1. Geben Sie bei Netzwerk-Tags den Wert allow-ssh ein.
    2. Wählen Sie für Netzwerkschnittstellen Folgendes aus:
      • Netzwerk: lb-network
      • Subnetz: backend-subnet
  7. Klicken Sie auf Erstellen.

gcloud

Die Client-VM muss sich im selben VPC-Netzwerk und in derselben Region wie der Load-Balancer befinden. Sie muss sich nicht im selben Subnetz oder in derselben Zone befinden. Der Client verwendet dasselbe Subnetz wie die Backend-VMs.

gcloud compute instances create client-vm \
    --zone=ZONE_A1 \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=backend-subnet

Traffic an den Load-Balancer senden

Nachdem Sie den Load-Balancer konfiguriert haben, können Sie Traffic zum Testen an die IP-Adresse des Load-Balancers senden.

  1. Verwenden Sie SSH, um eine Verbindung zur Clientinstanz herzustellen.

    gcloud compute ssh client-vm \
       --zone=ZONE_A1
    
  2. Prüfen Sie, ob der Load-Balancer die Backend-Hostnamen wie erwartet bereitstellt.

    1. Verwenden Sie den Befehl compute addresses describe, um die IP-Adresse des Load-Balancers aufzurufen:

      gcloud compute addresses describe int-tcp-ip-address \
       --region=REGION_A
      

      Notieren Sie sich die IP-Adresse.

    2. Traffic an den Load-Balancer senden Ersetzen Sie IP_ADDRESS durch die IP-Adresse des Load-Balancers.

      curl IP_ADDRESS:110
      

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.

Globalen Zugriff aktivieren

Sie können den globalen Zugriff für Ihren Load-Balancer aktivieren, damit Clients in beliebigen Regionen darauf zugreifen können. Die Back-Ends Ihres Beispiel-Load-Balancers müssen sich weiterhin in einer einzigen Region (REGION_A) befinden.

Regionaler interner Proxy-Network Load Balancer mit globalem Zugriff
Regionaler interner Proxy-Netzwerk-Load-Balancer mit globalem Zugriff (zum Vergrößern klicken)

Sie können eine vorhandene regionale Weiterleitungsregel nicht ändern, um den globalen Zugriff zu aktivieren. Zu diesem Zweck müssen Sie eine neue Weiterleitungsregel erstellen. Außerdem kann eine erstellte Weiterleitungsregel mit aktiviertem globalem Zugriff nicht mehr geändert werden. Zum Deaktivieren des globalen Zugriffs müssen Sie eine neue regionale Weiterleitungsregel erstellen und die vorherige globale Weiterleitungsregel löschen.

Wenn Sie den globalen Zugriff konfigurieren möchten, nehmen Sie die folgenden Änderungen an der Konfiguration vor:

Console

Erstellen Sie eine neue Weiterleitungsregel für den Load-Balancer:

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

    Load-Balancing aufrufen

  2. Klicken Sie in der Spalte Name auf den Load-Balancer.

  3. Klicken Sie auf Frontend-Konfiguration.

  4. Klicken Sie auf Frontend-IP und Port hinzufügen.

  5. Geben Sie den Namen und die Subnetzdetails für die neue Weiterleitungsregel ein.

  6. Wählen Sie als Subnetzwerk backend-subnet aus.

  7. Für die IP-Adresse können Sie entweder dieselbe IP-Adresse wie eine vorhandene Weiterleitungsregel auswählen, eine neue IP-Adresse reservieren oder eine sitzungsspezifische IP-Adresse verwenden. Die Freigabe derselben IP-Adresse für mehrere Weiterleitungsregeln ist nur möglich, wenn Sie das Flag --purpose der IP-Adresse beim Erstellen der IP-Adresse auf SHARED_LOADBALANCER_VIP setzen.

  8. Geben Sie als Portnummer 110 ein.

  9. Wählen Sie für Globaler Zugriff die Option Aktivieren aus.

  10. Klicken Sie auf Fertig.

  11. Klicken Sie auf Aktualisieren.

gcloud

  1. Erstellen Sie eine neue Weiterleitungsregel für den Load-Balancer mit dem --allow-global-access-Flag.

    gcloud compute forwarding-rules create int-tcp-forwarding-rule-global-access \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --network=lb-network \
       --subnet=backend-subnet \
       --region=REGION_A \
       --target-tcp-proxy=int-tcp-target-proxy \
       --target-tcp-proxy-region=REGION_A \
       --address=int-tcp-ip-address \
       --ports=110 \
       --allow-global-access
    
  2. Mit dem Befehl gcloud compute forwarding-rules describe können Sie feststellen, ob für eine Weiterleitungsregel der globale Zugriff aktiviert ist. Beispiel:

    gcloud compute forwarding-rules describe int-tcp-forwarding-rule-global-access \
       --region=REGION_A \
       --format="get(name,region,allowGlobalAccess)"
    

    Wenn der globale Zugriff aktiviert ist, wird das Wort True in der Ausgabe nach Namen und Region der Weiterleitungsregel angezeigt.

Client-VM erstellen, um den globalen Zugriff zu testen

Console

  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 test-global-access-vm fest.

  4. Legen Sie für Zone den Wert ZONE_B1 fest.

  5. Klicken Sie auf Erweiterte Optionen.

  6. Klicken Sie auf Netzwerk und konfigurieren Sie die folgenden Felder:

    1. Geben Sie bei Netzwerk-Tags den Wert allow-ssh ein.
    2. Wählen Sie für Netzwerkschnittstellen Folgendes aus:
      • Netzwerk: lb-network
      • Subnetz: test-global-access-subnet
  7. Klicken Sie auf Erstellen.

gcloud

Erstellen Sie eine Client-VM in der ZONE_B1-Zone.

gcloud compute instances create test-global-access-vm \
    --zone=ZONE_B1 \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=test-global-access-subnet

Ersetzen Sie ZONE_B1 durch den Namen der Zone in der Region REGION_B.

Eine Verbindung zur Client-VM herstellen und die Verbindung testen

  1. Stellen Sie über ssh eine Verbindung zum Client her.

    gcloud compute ssh test-global-access-vm \
        --zone=ZONE_B1
    
  2. Verwenden Sie den Befehl gcloud compute addresses describe, um die IP-Adresse des Load-Balancers abzurufen:

    gcloud compute addresses describe int-tcp-ip-address \
        --region=REGION_A
    

    Notieren Sie sich die IP-Adresse.

  3. Traffic an den Load-Balancer senden Ersetzen Sie IP_ADDRESS durch die IP-Adresse des Load-Balancers:

    curl IP_ADDRESS:110
    

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

Der PROXY-Protokoll-Header des bestehenden Ziel-Proxys kann nicht aktualisiert werden. Sie müssen dann einen neuen Zielproxy mit der erforderlichen Einstellung für den PROXY-Protokoll-Header erstellen. Führen Sie die folgenden Schritte aus, um ein neues Frontend mit den erforderlichen Einstellungen zu erstellen:

Console

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

    Load-Balancing aufrufen

  2. Klicken Sie auf den Namen des Load-Balancers, den Sie bearbeiten möchten.
  3. Klicken Sie neben dem Load Balancer auf Bearbeiten.
  4. Klicken Sie auf Front-End-Konfiguration.
  5. Löschen Sie die alte Frontend-IP-Adresse und den alten Frontend-Port.
  6. Klicken Sie auf Front-End-IP und Port hinzufügen.
    1. Geben Sie für Name int-tcp-forwarding-rule ein.
    2. Wählen Sie als Subnetzwerk backend-subnet aus.
    3. Wählen Sie unter IP-Adresse die zuvor reservierte IP-Adresse aus: LB_IP_ADDRESS
    4. Geben Sie als Portnummer 110 ein. Die Weiterleitungsregel leitet nur Pakete mit einem übereinstimmenden Zielport weiter.
    5. Ändern Sie den Wert des Felds Proxyprotokoll zu Ein.
    6. Klicken Sie auf Fertig.
  7. Klicken Sie auf Update (Aktualisieren), um die Änderungen zu speichern.

gcloud

  1. 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 create TARGET_PROXY_NAME \
           --backend-service=BACKEND_SERVICE \
           --proxy-header=[NONE | PROXY_V1] \
           --region=REGION
       
  2. Löschen Sie die vorhandene Weiterleitungsregel.

       gcloud compute forwarding-rules delete int-tcp-forwarding-rule \
           --region=REGION
       
  3. Erstellen Sie eine neue Weiterleitungsregel und verknüpfen Sie sie mit dem Zielproxy.

       gcloud compute forwarding-rules create int-tcp-forwarding-rule \
           --load-balancing-scheme=INTERNAL_MANAGED \
           --network=lb-network \
           --subnet=backend-subnet \
           --region=REGION \
           --target-tcp-proxy=TARGET_PROXY_NAME \
           --target-tcp-proxy-region=REGION \
           --address=LB_IP_ADDRESS \
           --ports=110
       

Sitzungsaffinität aktivieren

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

Diese Verfahren zeigen, wie Sie einen Backend-Dienst für den regionalen internen Beispiel-Proxy-Netzwerk-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 internen IP-Adresse einer internen 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.
    Gehen Sie zu „Load-Balancing“
  2. Klicken Sie auf Back-Ends.
  3. Klicken Sie auf internal-tcp-proxy-bs (den Namen des Backend-Dienstes, den Sie für dieses Beispiel erstellt haben) und dann auf Bearbeiten.
  4. Klicken Sie auf der Seite Backend-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 internal-tcp-proxy-bs mit dem folgenden gcloud-Befehl. Geben Sie dabei die Sitzungsaffinität der Client-IP an:

gcloud compute backend-services update internal-tcp-proxy-bs \
    --region=REGION_A \
    --session-affinity=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