Regionenübergreifenden Proxy-Network Load Balancer mit Hybridkonnektivität einrichten

Auf dieser Seite wird gezeigt, wie Sie einen regionenübergreifenden internen Proxy-Netzwerk-Load-Balancer bereitstellen, um Traffic mithilfe von Hybridkonnektivität auf Netzwerk-Endpunkte zu verteilen, die sich lokal oder in anderen öffentlichen Clouds befinden.

In der Übersicht über NEGs mit Hybrid-Konnektivität werden die Netzwerkanforderungen zum Einrichten von Hybrid-Load-Balancing erläutert.

Einrichtung: Übersicht

In diesem Beispiel wird ein regionenübergreifender interner Proxy-Netzwerk-Load-Balancer für NEG-Back-Ends für gemischte zonale und Hybridkonnektivität eingerichtet, wie in der folgenden Abbildung dargestellt:

Beispiel für einen regionsübergreifenden internen Proxy-Network Load Balancer für NEG-Back-Ends für gemischte zonale und Hybridkonnektivität.
Beispiel für einen regionsübergreifenden internen Proxy-Network Load Balancer für NEG-Back-Ends für gemischte zonale und Hybridkonnektivität (zum Vergrößern klicken)

Sie müssen Hybridkonnektivität konfigurieren, bevor Sie eine Bereitstellung mit Hybrid-Load-Balancing einrichten. Verwenden Sie je nach ausgewähltem Produkt für Hybridkonnektivität entweder Cloud VPN oder Cloud Interconnect (Dedicated oder Partner).

Berechtigungen

Zum Einrichten des Hybrid-Load-Balancings benötigen Sie die folgenden Berechtigungen:

  • Mit Google Cloud

    • Berechtigungen zum Herstellen von Hybridkonnektivität zwischen Google Cloud und Ihrer lokalen Umgebung oder anderen Cloud-Umgebungen. Eine Liste der erforderlichen Berechtigungen finden Sie in der jeweiligen Dokumentation zum Netzwerkverbindungsprodukt.
    • Berechtigungen zum Erstellen einer Hybridkonnektivitäts-NEG und des Load-Balancers. Die Rolle „Compute-Load-Balancer-Administrator” (roles/compute.loadBalancerAdmin) enthält die zum Ausführen der in dieser Anleitung beschriebenen Aufgaben erforderlichen Berechtigungen.
  • In Ihrer lokalen Umgebung oder sonstigen Cloud-Umgebung außerhalb von Google Cloud

    • Berechtigungen zum Konfigurieren von Netzwerkendpunkten, damit Dienste in Ihrer lokalen Umgebung oder in anderen Cloud-Umgebungen über eine IP:Port-Kombination aus Google Cloud erreicht werden können. Für weitere Informationen wenden Sie sich an den Netzwerkadministrator Ihrer Umgebung.
    • Berechtigungen zum Erstellen von Firewallregeln in Ihrer lokalen Umgebung oder in anderen Cloud-Umgebungen, damit die Systemdiagnoseprüfungen von Google die Endpunkte erreichen können.

Um die Anleitung auf dieser Seite abzuschließen, müssen Sie außerdem eine Hybridkonnektivitäts-NEG, einen Load-Balancer sowie zonale NEGs (und ihre Endpunkte) erstellen, die als Google Cloud-basierte Back-Ends für den Load-Balancer dienen.

Sie sollten entweder Inhaber oder Bearbeiter des Projekts sein oder die folgenden IAM-Rollen für Compute Engine haben:

Task Erforderliche Rolle
Netzwerke, Subnetze und Load-Balancer-Komponenten erstellen Compute-Netzwerkadministrator (roles/compute.networkAdmin)
Firewallregeln hinzufügen und löschen Compute-Sicherheitsadministrator (roles/compute.securityAdmin)
Instanzen erstellen Compute-Instanzadministrator (roles/compute.instanceAdmin)

Hybridkonnektivität einrichten

Ihre Google Cloud-Umgebung und Ihre lokale Umgebung oder sonstigen Cloud-Umgebungen müssen über Hybridkonnektivität verbunden sein. Dafür werden entweder Cloud Interconnect-VLAN-Anhänge oder Cloud VPN-Tunnel mit Cloud Router verwendet. Wir empfehlen die Verwendung einer Verbindung mit Hochverfügbarkeit.

Ein Cloud Router, der für das globale dynamische Routing aktiviert ist, erkennt den spezifischen Endpunkt über das Border Gateway Protocol (BGP) und programmiert ihn in Ihrem Google Cloud-VPC-Netzwerk. Regionales dynamisches Routing wird nicht unterstützt. Statische Routen werden ebenfalls nicht unterstützt.

Das VPC-Netzwerk, mit dem Sie entweder Cloud Interconnect oder Cloud VPN konfigurieren, ist dasselbe Netzwerk, das Sie auch zum Konfigurieren der Bereitstellung des Hybrid-Load-Balancing verwenden. Achten Sie darauf, dass die Subnetz-CIDR-Bereiche Ihres VPC-Netzwerks nicht mit Ihren Remote-CIDR-Bereichen in Konflikt stehen. Bei Überschneidung von IP-Adressen haben Subnetzrouten Vorrang vor Remote-Verbindungen.

Eine Anleitung finden Sie in der folgenden Dokumentation:

Umgebung außerhalb von Google Cloud einrichten

Führen Sie die folgenden Schritte aus, um Ihre lokale Umgebung oder sonstige Cloud-Umgebung für das Hybrid-Load-Balancing einzurichten:

  • Konfigurieren Sie Netzwerkendpunkte, um lokale Dienste in Google Cloud verfügbar zu machen (IP:Port).
  • Konfigurieren Sie Firewallregeln in Ihrer lokalen Umgebung oder sonstigen Cloud-Umgebung.
  • Konfigurieren Sie Cloud Router so, dass bestimmte erforderliche Routen in Ihrer privaten Umgebung beworben werden.

Netzwerkendpunkte einrichten

Nachdem Sie die Hybridkonnektivität eingerichtet haben, konfigurieren Sie einen oder mehrere Netzwerkendpunkte innerhalb Ihrer lokalen Umgebung oder anderer Cloud-Umgebungen, die über Cloud Interconnect oder Cloud VPN mit einer IP:port-Kombination erreichbar ist. Diese IP:port-Kombination wird als einzelner Endpunkt oder als mehrere Endpunkte für die Hybridkonnektivitäts-NEG konfiguriert, die später in diesem Vorgang in Google Cloud erstellt wird.

Wenn mehrere Pfade zum IP-Endpunkt vorhanden sind, folgt das Routing dem unter Cloud Router – Übersicht beschriebenen Verhalten.

Firewallregeln einrichten

Die folgenden Firewallregeln müssen in Ihrer lokalen Umgebung oder einer anderen Cloud-Umgebung erstellt werden:

  • Erstellen Sie eine Firewallregel „eingehenden Traffic zulassen“ in lokalen oder anderen Cloudumgebungen, damit Traffic aus dem Nur-Proxy-Subnetz der Region die Endpunkte erreichen kann.
  • Die Prüfbereiche der Systemdiagnose von Google müssen bei Hybrid-NEGs nicht auf die Zulassungsliste gesetzt werden. Wenn Sie jedoch eine Kombination aus hybriden und zonalen NEGs in einem einzelnen Backend-Dienst verwenden, müssen Sie die Prüfbereiche der Systemdiagnose von Google für die zonalen NEGs auf die Zulassungsliste setzen.

Konfigurieren Sie Cloud Router für die Bewerbung der folgenden benutzerdefinierten IP-Bereiche in Ihrer lokalen Umgebung oder einer anderen Cloud-Umgebung:

  • Der Bereich des Nur-Proxy-Subnetzes der Region.

Google Cloud-Umgebung einrichten

Verwenden Sie für die folgenden Schritte dasselbe VPC-Netzwerk (in diesem Verfahren NETWORK genannt), mit dem die Hybridkonnektivität zwischen den Umgebungen konfiguriert wurde.

Achten Sie außerdem darauf, dass die verwendeten Regionen (in diesem Verfahren REGION_A und REGION_B genannt) mit den Regionen übereinstimmen, die zum Erstellen des Cloud VPN-Tunnels oder der Cloud Interconnect-VLAN-Anhänge verwendet werden.

Backend-Subnetze konfigurieren

Verwenden Sie dieses Subnetz, um die zonalen NEG-Back-Ends des Load Balancers zu erstellen:

Console

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

    Zur Seite VPC-Netzwerke

  2. Rufen Sie das Netzwerk auf, das zum Konfigurieren der Hybridkonnektivität zwischen den Umgebungen verwendet wurde.

  3. Im Bereich Subnetze:

    • Legen Sie Modus für Subnetzerstellung auf Benutzerdefiniert fest.
    • Geben Sie im Bereich Neues Subnetz folgende Informationen ein:
      • Geben Sie einen Namen für das Subnetz an.
      • Wählen Sie eine Region aus: REGION_A
      • Geben Sie einen IP-Adressbereich ein.
    • Klicken Sie auf Fertig.
  4. Klicken Sie auf Erstellen.

  5. Klicken Sie auf Subnetz hinzufügen und wiederholen Sie die vorherigen Schritte für REGION_B, um weitere Subnetze in verschiedenen Regionen hinzuzufügen.

gcloud

  1. Erstellen Sie Subnetze in dem Netzwerk, in dem die Hybridkonnektivität zwischen den Umgebungen konfiguriert wurde.

    gcloud compute networks subnets create SUBNET_A \
        --network=NETWORK \
        --range=LB_SUBNET_RANGE1 \
        --region=REGION_A
    
    gcloud compute networks subnets create SUBNET_B \
        --network=NETWORK \
        --range=LB_SUBNET_RANGE2 \
        --region=REGION_B
    

API

Stellen Sie eine POST-Anfrage an die Methode subnetworks.insert. Ersetzen Sie dabei PROJECT_ID durch Ihre Projekt-ID.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/subnetworks

{
 "name": "SUBNET_A",
 "network": "projects/PROJECT_ID/global/networks/NETWORK",
 "ipCidrRange": "LB_SUBNET_RANGE1",
 "region": "projects/PROJECT_ID/regions/REGION_A",
}

Stellen Sie eine POST-Anfrage an die Methode subnetworks.insert. Ersetzen Sie dabei PROJECT_ID durch Ihre Projekt-ID.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/subnetworks

{
 "name": "SUBNET_B",
 "network": "projects/PROJECT_ID/global/networks/NETWORK",
 "ipCidrRange": "LB_SUBNET_RANGE2",
 "region": "projects/PROJECT_ID/regions/REGION_B",
}

Ersetzen Sie Folgendes:

  • SUBNET_A und SUBNET_B: die Namen der Subnetze
  • LB_SUBNET_RANGE1 und LB_SUBNET_RANGE2: durch die IP-Adressbereiche für die Subnetze
  • REGION_A und REGION_B: die Regionen, in denen Sie den Load Balancer konfiguriert haben

Nur-Proxy-Subnetz konfigurieren

Ein Nur-Proxy-Subnetz stellt eine Reihe von IP-Adressen bereit, die Google zum Ausführen von Envoy-Proxys in Ihrem Namen verwendet. Die Proxys beenden Verbindungen vom Client und erstellen neue Verbindungen zu den Back-Ends.

Dieses Nur-Proxy-Subnetz wird von allen Envoy-basierten regionalen Load-Balancern in derselben Region des VPC-Netzwerks verwendet. Pro Zweck, Region und Netzwerk kann jeweils nur ein Nur-Proxy-Subnetz aktiv sein.

Console

Wenn Sie die Google Cloud Console verwenden, können Sie das Nur-Proxy-Subnetz später auf der Seite Load Balancing erstellen.

Führen Sie die folgenden Schritte aus, wenn Sie jetzt das Nur-Proxy-Subnetz erstellen möchten:

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

    Zur Seite VPC-Netzwerke

  2. Klicken Sie auf den Namen des VPC-Netzwerks.
  3. Klicken Sie auf dem Tab Subnetze auf Subnetz hinzufügen.
  4. Geben Sie einen Namen für das Nur-Proxy-Subnetz an.
  5. Wählen Sie in der Liste Region REGION_A aus.
  6. Wählen Sie in der Liste Zweck die Option Regionenübergreifender verwalteter Proxy aus.
  7. Geben Sie im Feld IP-Adressbereich den Wert 10.129.0.0/23 ein.
  8. Klicken Sie auf Hinzufügen.

Erstellen Sie das Nur-Proxy-Subnetz in REGION_B.

  1. Klicken Sie auf Subnetz hinzufügen.
  2. Geben Sie einen Namen für das Nur-Proxy-Subnetz an.
  3. Wählen Sie in der Liste Region REGION_B aus.
  4. Wählen Sie in der Liste Zweck die Option Regionenübergreifender verwalteter Proxy aus.
  5. Geben Sie im Feld IP-Adressbereich den Wert 10.130.0.0/23 ein.
  6. Klicken Sie auf Hinzufügen.

gcloud

Erstellen Sie das Nur-Proxy-Subnetz mit dem Befehl gcloud compute networks subnets create.

    gcloud compute networks subnets create PROXY_SN_A \
        --purpose=GLOBAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=REGION_A \
        --network=NETWORK \
        --range=PROXY_ONLY_SUBNET_RANGE1
    
    gcloud compute networks subnets create PROXY_SN_B \
        --purpose=GLOBAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=REGION_B \
        --network=NETWORK \
        --range=PROXY_ONLY_SUBNET_RANGE2
    

Ersetzen Sie Folgendes:

  • PROXY_SN_A und PROXY_SN_B: die Namen der Nur-Proxy-Subnetze
  • PROXY_ONLY_SUBNET_RANGE1 und PROXY_ONLY_SUBNET_RANGE2: der IP-Adressbereich für die Nur-Proxy-Subnetze
  • REGION_A und REGION_B: die Regionen, in denen Sie den Load-Balancer konfiguriert haben

API

Erstellen Sie das Nur-Proxy-Subnetz mit der Methode subnetworks.insert und ersetzen Sie PROJECT_ID dabei durch Ihre Projekt-ID.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/subnetworks

    {
      "name": "PROXY_SN_A",
      "ipCidrRange": "PROXY_ONLY_SUBNET_RANGE1",
      "network": "projects/PROJECT_ID/global/networks/NETWORK",
      "region": "projects/PROJECT_ID/regions/REGION_A",
      "purpose": "GLOBAL_MANAGED_PROXY",
      "role": "ACTIVE"
    }
  
    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/subnetworks

    {
      "name": " PROXY_SN_B",
      "ipCidrRange": "PROXY_ONLY_SUBNET_RANGE2",
      "network": "projects/PROJECT_ID/global/networks/NETWORK",
      "region": "projects/PROJECT_ID/regions/REGION_B",
      "purpose": "GLOBAL_MANAGED_PROXY",
      "role": "ACTIVE"
    }
  

Firewallregeln erstellen

In diesem Beispiel erstellen Sie die folgenden Firewallregeln für die zonalen NEG-Back-Ends in Google Cloud:

  • fw-allow-health-check: Eine Regel für eingehenden Traffic, die für die Instanzen mit Load-Balancing gilt und Traffic von den Google Cloud-Systemen für Systemdiagnosen zulässt (130.211.0.0/22 und 35.191.0.0/16). In diesem Beispiel wird das Ziel-Tag allow-health-check verwendet, um die zonalen NEGs zu identifizieren, auf die sie angewendet werden soll.
  • fw-allow-ssh: Eine Regel für eingehenden Traffic, die eingehende SSH-Verbindungen an TCP-Port 22 von jeder Adresse aus ermöglicht. Sie können einen restriktiveren IP-Quellbereich für diese Regel auswählen. Geben Sie dazu beispielsweise nur die IP-Bereiche des Systems an, von dem aus Sie SSH-Sitzungen initiieren. In diesem Beispiel wird das Ziel-Tag allow-ssh verwendet, um die VMs zu identifizieren, auf die sie angewendet werden soll.
  • fw-allow-proxy-only-subnet: eine Regel für eingehenden Traffic, die zulässt, dass Verbindungen vom Nur-Proxy-Subnetz die zonalen NEG-Back-Ends erreichen.

Console

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

    Zu den Firewall-Richtlinien

  2. Klicken Sie auf Firewallregel erstellen, um die Regel zu erstellen, die Traffic von Systemdiagnoseprüfungen zulässt:

    1. Geben Sie als Namen fw-allow-health-check ein.
    2. Wählen Sie für Netzwerk die Option NETWORK aus.
    3. Wählen Sie unter Ziele die Option Angegebene Ziel-Tags aus.
    4. Tragen Sie im Feld Ziel-Tags allow-health-check ein.
    5. Legen Sie unter Quellfilter die Option IPv4-Bereiche fest.
    6. Legen Sie unter Quell-IPv4-Bereiche die Werte 130.211.0.0/22 und 35.191.0.0/16 fest.
    7. Wählen Sie unter Protokolle und Ports die Option Angegebene Protokolle und Ports aus.
    8. Wählen Sie TCP aus und geben Sie 80 als Portnummer ein.
    9. Klicken Sie auf Erstellen.
  3. Klicken Sie noch einmal auf Firewallregel erstellen, um die Regel zu erstellen, die eingehende SSH-Verbindungen zulässt:

    1. Name: fw-allow-ssh
    2. Netzwerk: NETWORK
    3. Priorität: 1000
    4. Trafficrichtung: Eingehend
    5. Aktion bei Übereinstimmung: Zulassen
    6. Ziele: Angegebene Ziel-Tags
    7. Zieltags: allow-ssh
    8. Quellfilter: IPv4-Bereiche.
    9. IPv4-Quellbereiche: 0.0.0.0/0
    10. Protokolle und Ports: Wählen Sie Angegebene Protokolle und Ports aus.
    11. Wählen Sie TCP aus und geben Sie 22 als Portnummer ein.
    12. Klicken Sie auf Erstellen.
  4. Klicken Sie noch einmal auf Firewallregel erstellen, um die Regel zu erstellen, die eingehende Verbindungen vom Nur-Proxy-Subnetz zulässt:

    1. Name: fw-allow-proxy-only-subnet
    2. Netzwerk: NETWORK
    3. Priorität: 1000
    4. Trafficrichtung: Eingehend
    5. Aktion bei Übereinstimmung: Zulassen
    6. Ziele: Angegebene Ziel-Tags
    7. Zieltags: allow-proxy-only-subnet
    8. Quellfilter: IPv4-Bereiche.
    9. IPv4-Quellbereiche: PROXY_ONLY_SUBNET_RANGE1 und PROXY_ONLY_SUBNET_RANGE2
    10. Protokolle und Ports: Wählen Sie Angegebene Protokolle und Ports aus.
    11. Wählen Sie TCP aus und geben Sie 80 als Portnummer ein.
    12. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie die Regel fw-allow-health-check-and-proxy, damit die Google Cloud-Systemdiagnosen die Backend-Instanzen auf dem TCP-Port 80 erreichen können:

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=NETWORK \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp:80
    
  2. 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=NETWORK \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  3. Erstellen Sie eine Firewallregel zum Zulassen von eingehendem Traffic für das Nur-Proxy-Subnetz, damit der Load-Balancer mit Backend-Instanzen auf dem TCP-Port 80 kommunizieren kann:

    gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
        --network=NETWORK \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-proxy-only-subnet \
        --source-ranges=PROXY_ONLY_SUBNET_RANGE1,PROXY_ONLY_SUBNET_RANGE2 \
        --rules=tcp:80
    

Zonale NEG einrichten

Für Google Cloud-basierte Back-Ends sollten Sie mehrere zonale NEGs in derselben Region konfigurieren, in der Sie Hybridkonnektivität konfiguriert haben.

In diesem Beispiel wird eine zonale NEG mit Endpunkten des Typs GCE_VM_IP_PORT in der REGION1 eingerichtet. Erstellen Sie zuerst die VMs in der Zone NEG_ZONE1. Erstellen Sie dann eine zonale NEG in der NEG_ZONE2 und fügen Sie der NEG die Netzwerkendpunkte der VMs hinzu. Um Hochverfügbarkeit zu unterstützen, richten wir eine ähnliche zonale NEG in der Region REGION2 ein. Wenn Backends in einer Region zufällig ausfallen, wird der Traffic auf die andere Region umgeleitet.

VMs erstellen

Console

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Zur Seite „VM-Instanzen“

  2. Wiederholen Sie die Schritte 3 bis 8 pro VM mit folgenden Kombinationen aus Name und Zone.

    • Name: vm-a1
      • Zone: NEG_ZONE1 in der Region REGION_A
      • Subnetz: SUBNET_A
    • Name: vm-b1
      • Zone: NEG_ZONE2 in der Region REGION_B
      • Subnetz: SUBNET_B
  3. Klicken Sie auf Instanz erstellen.

  4. Legen Sie den Namen wie im vorherigen Schritt angegeben fest.

  5. Wählen Sie unter Region die Option wie im vorherigen Schritt angegeben aus.

  6. Wählen Sie unter Zone die Option wie im vorherigen Schritt angegeben aus.

  7. Achten Sie im Bereich Bootlaufwerk darauf, dass als Bootlaufwerk-Optionen das Betriebssystem Debian und die Version 10 (Buster) ausgewählt sind. Klicken Sie auf Auswählen, um das Image bei Bedarf zu ändern.

  8. Maximieren Sie im Abschnitt Erweiterte Optionen den Bereich Netzwerk und gehen Sie dann so vor:

    • Fügen Sie die folgenden Netzwerk-Tags hinzu: allow-ssh, allow-health-check und allow-proxy-only-subnet.
    • Klicken Sie im Bereich Netzwerkschnittstellen auf Netzwerkschnittstelle hinzufügen, nehmen Sie die folgenden Änderungen vor und klicken Sie dann auf Fertig:
      • Netzwerk: NETWORK
      • Subnetzwerk: Wie im vorherigen Schritt angegeben.
      • Primäre interne IP: sitzungsspezifisch (automatisch)
      • Externe IP: sitzungsspezifisch
    • Maximieren Sie die Verwaltung. Kopieren Sie den folgenden Scriptinhalt und fügen Sie ihn im Feld Automatisierung ein. Der Scriptinhalt ist für alle VMs identisch.

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
  9. Klicken Sie auf Erstellen.

gcloud

Erstellen Sie die VMs. Führen Sie dazu den folgenden Befehl zweimal aus und verwenden Sie diese Kombinationen für den Namen der VM und ihrer Zone. Der Skriptinhalt ist für beide VMs identisch.

  • VM_NAME von vm-a1
    • Die Zone GCP_NEG_ZONE als NEG_ZONE1 in der Region REGION_A
    • Das Subnetz LB_SUBNET_NAME als SUBNET_A
  • VM_NAME von vm-b1

    • Zone GCP_NEG_ZONE als NEG_ZONE2 in der Region REGION_B
    • Subnetz LB_SUBNET_NAME als SUBNET_B
    gcloud compute instances create VM_NAME \
        --zone=GCP_NEG_ZONE \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \
        --subnet=LB_SUBNET_NAME \
        --metadata=startup-script='#! /bin/bash
          apt-get update
          apt-get install apache2 -y
          a2ensite default-ssl
          a2enmod ssl
          vm_hostname="$(curl -H "Metadata-Flavor:Google" \
          http://metadata.google.internal/computeMetadata/v1/instance/name)"
          echo "Page served from: $vm_hostname" | \
          tee /var/www/html/index.html
          systemctl restart apache2'
    

Zonale NEG erstellen

Console

So erstellen Sie eine zonale Netzwerk-Endpunktgruppe:

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerk-Endpunktgruppen auf.

    Zu den Netzwerk-Endpunktgruppen

  2. Wiederholen Sie die Schritte 3 bis 8 pro zonaler VM mit folgenden Kombinationen aus Name und Zone.

    • Name: neg-1
      • Zone: NEG_ZONE1 in der Region REGION_A
      • Subnetz: SUBNET_A
    • Name: neg-2
      • Zone: NEG_ZONE2 in der Region REGION_B
      • Subnetz: SUBNET_B
  3. Klicken Sie auf Netzwerk-Endpunktgruppe erstellen.

  4. Legen Sie den Namen wie im vorherigen Schritt angegeben fest.

  5. Wählen Sie den Typ der Netzwerk-Endpunktgruppe aus: Netzwerk-Endpunktgruppe (zonal).

  6. Wählen Sie das Netzwerk aus: NETWORK

  7. Wählen Sie das Subnetzwerk wie im vorherigen Schritt angegeben aus.

  8. Wählen Sie die Zone wie im vorherigen Schritt angegeben aus.

  9. Geben Sie den Standardport ein: 80.

  10. Klicken Sie auf Erstellen.

Fügen Sie der zonalen NEG Endpunkte hinzu:

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerk-Endpunktgruppen auf.

    Zur Netzwerk-Endpunktgruppe

  2. Klicken Sie auf den Namen der Netzwerk-Endpunktgruppe, die im vorherigen Schritt erstellt wurde. Die Seite Netzwerk-Endpunktgruppendetails wird angezeigt.

  3. Klicken Sie im Bereich Netzwerkendpunkte in dieser Gruppe auf Netzwerkendpunkt hinzufügen. Die Seite Netzwerk-Endpunkt hinzufügen wird angezeigt.

  4. Wählen Sie eine VM-Instanz aus, um deren interne IP-Adressen als Netzwerkendpunkte hinzuzufügen. Im Abschnitt Netzwerkschnittstelle werden der Name, die Zone und das Subnetz der VM angezeigt.

  5. Geben Sie die IP-Adresse des neuen Netzwerkendpunkts ein.

  6. Wählen Sie den Porttyp aus.

    1. Wenn Sie Standard auswählen, wird für den Endpunkt der Standardport 80 für alle Endpunkte in der Netzwerk-Endpunktgruppe verwendet. Dies ist für unser Beispiel ausreichend, da der Apache-Server Anfragen an Port 80 verarbeitet.
    2. Wenn Sie Benutzerdefiniert auswählen, geben Sie die Portnummer für den zu verwendenden Endpunkt ein.
  7. Klicken Sie zum Hinzufügen weiterer Endpunkte auf Netzwerkendpunkt hinzufügen und wiederholen Sie die vorherigen Schritte.

  8. Nachdem Sie alle Endpunkte hinzugefügt haben, klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie zonale NEGs (mit GCE_VM_IP_PORT-Endpunkten) mit den Kombinationen aus Name, Zone und Subnetz. Führen Sie den Befehl gcloud compute network-endpoint-groups create aus.

    • Name: neg-1
      • Zone GCP_NEG_ZONE: NEG_ZONE1 in der Region REGION_A
      • Subnetz LB_SUBNET_NAME: SUBNET_A
    • Name: neg-2
      • Zone GCP_NEG_ZONE: NEG_ZONE2 in der Region REGION_B
      • Subnetz LB_SUBNET_NAME: SUBNET_B
    gcloud compute network-endpoint-groups create GCP_NEG_NAME \
        --network-endpoint-type=GCE_VM_IP_PORT \
        --zone=GCP_NEG_ZONE \
        --network=NETWORK \
        --subnet=LB_SUBNET_NAME
    

    Sie können entweder mit der Option --default-port beim Erstellen der NEG einen Port angeben oder für jeden Endpunkt eine Portnummer angeben, wie im nächsten Schritt gezeigt.

  2. Fügen Sie Endpunkte zu neg1 und neg2 hinzu.

    gcloud compute network-endpoint-groups update neg1 \
        --zone=NEG_ZONE1 \
        --add-endpoint='instance=vm-a1,port=80'
    
    gcloud compute network-endpoint-groups update neg2 \
        --zone=NEG_ZONE2 \
        --add-endpoint='instance=vm-b1,port=80'
    

Hybridkonnektivitäts-NEG einrichten

Verwenden Sie beim Erstellen der NEG eine Zone, die die geografische Entfernung zwischen Google Cloud und Ihrer lokalen oder sonstigen Cloud-Umgebung minimiert.

Wenn Sie Cloud Interconnect verwenden, sollte sich die Zone zum Erstellen der NEG in derselben Region befinden, in der der Cloud Interconnect-Anhang konfiguriert wurde.

Hybrid-NEGs unterstützen nur verteilte Envoy-Systemdiagnosen.

Console

So erstellen Sie eine Endpunktgruppe in einer Hybridkonnektivität:

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerk-Endpunktgruppen auf.

    Zu den Netzwerk-Endpunktgruppen

  2. Klicken Sie auf Netzwerk-Endpunktgruppe erstellen.

  3. Wiederholen Sie die Schritte 4 bis 9 pro Hybrid-NEG mit folgenden Kombinationen aus Name und Zone.

    • Name ON_PREM_NEG_NAME: hybrid-1
      • Zone: ON_PREM_NEG_ZONE1
      • Subnetz: SUBNET_A
    • Name ON_PREM_NEG_NAME: hybrid-2
      • Zone: ON_PREM_NEG_ZONE2
      • Subnetz: SUBNET_B
  4. Legen Sie den Namen wie im vorherigen Schritt angegeben fest.

  5. Wählen Sie den Typ der Netzwerk-Endpunktgruppe aus: Hybridkonnektivitätsnetzwerk-Endpunktgruppe (zonal).

  6. Wählen Sie das Netzwerk aus: NETWORK

  7. Wählen Sie das Subnetz wie im vorherigen Schritt angegeben aus.

  8. Wählen Sie die Zone wie im vorherigen Schritt angegeben aus.

  9. Geben Sie den Standardport ein.

  10. Klicken Sie auf Erstellen.

Fügen Sie der Hybridkonnektivitäts-NEG Endpunkte hinzu:

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerk-Endpunktgruppen auf.

    Zu den Netzwerk-Endpunktgruppen

  2. Klicken Sie auf den Namen der Netzwerk-Endpunktgruppe, die im vorherigen Schritt erstellt wurde. Die Seite Netzwerk-Endpunktgruppendetails wird angezeigt.

  3. Klicken Sie im Bereich Netzwerkendpunkte in dieser Gruppe auf Netzwerkendpunkt hinzufügen. Die Seite Netzwerk-Endpunkt hinzufügen wird angezeigt.

  4. Geben Sie die IP-Adresse des neuen Netzwerkendpunkts ein.

  5. Wählen Sie den Porttyp aus.

    1. Wenn Sie Standard auswählen, wird für den Endpunkt der Standardport für alle Endpunkte in der Netzwerk-Endpunktgruppe verwendet.
    2. Wenn Sie Benutzerdefiniert auswählen, können Sie eine andere Portnummer für den zu verwendenden Endpunkt eingeben.
  6. Klicken Sie zum Hinzufügen weiterer Endpunkte auf Netzwerkendpunkt hinzufügen und wiederholen Sie die vorherigen Schritte.

  7. Nachdem Sie alle Nicht-Google Cloud-Endpunkte hinzugefügt haben, klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie eine Hybridkonnektivitäts-NEG mit den folgenden Namenskombinationen. Führen Sie den Befehl gcloud compute network-endpoint-groups create aus.

    • Name ON_PREM_NEG_NAME: hybrid-1
      • Zone ON_PREM_NEG_ZONE: ON_PREM_NEG_ZONE1
    • Name ON_PREM_NEG_NAME: hybrid-2
      • Zone GCP_NEG_ZONE: ON_PREM_NEG_ZONE2
    gcloud compute network-endpoint-groups create ON_PREM_NEG_NAME \
        --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
        --zone=ON_PREM_NEG_ZONE \
        --network=NETWORK
    
  2. Fügen Sie den lokalen Backend-VM-Endpunkt zu ON_PREM_NEG_NAME hinzu:

    gcloud compute network-endpoint-groups update ON_PREM_NEG_NAME \
        --zone=ON_PREM_NEG_ZONE \
        --add-endpoint="ip=ON_PREM_IP_ADDRESS_1,port=PORT_1" \
        --add-endpoint="ip=ON_PREM_IP_ADDRESS_2,port=PORT_2"
    

Mit diesem Befehl können Sie die Netzwerkendpunkte hinzufügen, die Sie zuvor lokal oder in Ihrer Cloud-Umgebung konfiguriert haben. Wiederholen Sie den Vorgang --add-endpoint so oft wie nötig.

Load-Balancer konfigurieren

Console

gcloud

  1. Definieren Sie die HTTP-Systemdiagnose mit dem Befehl gcloud compute health-checks create tcp.

    gcloud compute health-checks create tcp gil4-basic-check \
       --use-serving-port \
       --global
    
  2. Erstellen Sie den Backend-Dienst und aktivieren Sie das Logging mit dem Befehl gcloud compute backend-services create.

    gcloud compute backend-services create BACKEND_SERVICE \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --protocol=TCP \
      --enable-logging \
      --logging-sample-rate=1.0 \
      --health-checks=gil4-basic-check \
      --global-health-checks \
      --global
    
  3. Fügen Sie dem Backend-Dienst mit dem Befehl gcloud compute backend-services add-backend Backends hinzu.

    gcloud compute backend-services add-backend BACKEND_SERVICE \
      --global \
      --balancing-mode=CONNECTION \
      --max-connections-per-endpoint=MAX_CONNECTIONS \
      --network-endpoint-group=neg1 \
      --network-endpoint-group-zone=NEG_ZONE1 \
      --network-endpoint-group=neg2 \
      --network-endpoint-group-zone=NEG_ZONE2
    

    Weitere Informationen zum Konfigurieren des Balancing-Modus finden Sie in der Dokumentation zur gcloud CLI für das Flag --max-connections-per-endpoint. Geben Sie unter MAX_CONNECTIONS die maximale Anzahl gleichzeitiger Verbindungen ein, die vom Backend verarbeitet werden sollen.

  4. Fügen Sie dem Backend-Dienst die hybriden NEGs als Backend hinzu.

    gcloud compute backend-services add-backend BACKEND_SERVICE \
      --global \
      --balancing-mode=CONNECTION \
      --max-connections-per-endpoint=MAX_CONNECTIONS \
      --network-endpoint-group=hybrid1 \
      --network-endpoint-group-zone=ON_PREM_NEG_ZONE1 \
      --network-endpoint-group=hybrid2 \
      --network-endpoint-group-zone=ON_PREM_NEG_ZONE2 \
    

    Weitere Informationen zum Konfigurieren des Balancing-Modus finden Sie in der Dokumentation zur gcloud CLI für den Parameter --max-connections-per-endpoint. Geben Sie unter MAX_CONNECTIONS die maximale Anzahl gleichzeitiger Verbindungen ein, die vom Backend verarbeitet werden sollen.

  5. Erstellen Sie den Zielproxy.

    Erstellen Sie den Zielproxy mit dem Befehl gcloud compute target-tcp-proxies create.

    gcloud compute target-tcp-proxies create gil4-tcp-proxy \
      --url-map=gil4-map \
      --global
    
  6. Erstellen Sie zwei Weiterleitungsregeln, eine mit einer VIP IP_ADDRESS1 in REGION_A und eine andere mit einer VIP IP_ADDRESS2 in REGION_B. Verwenden Sie für die IP-Adresse der Weiterleitungsregel den IP-Adressbereich LB_SUBNET_RANGE1 oder LB_SUBNET_RANGE2. Wenn Sie das Nur-Proxy-Subnetz verwenden, schlägt das Erstellen der Weiterleitungsregel fehl.

    Bei benutzerdefinierten Netzwerken müssen Sie in der Weiterleitungsregel auf das Subnetz verweisen. Achten Sie darauf, dass dies das VM-Subnetz und nicht das Proxy-Subnetz ist.

    Verwenden Sie den Befehl gcloud compute forwarding-rules create mit den richtigen Flags.

    gcloud compute forwarding-rules create gil4-forwarding-rule-a \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=NETWORK \
      --subnet=SUBNET_A \
      --subnet-region=REGION_A \
      --address=IP_ADDRESS1 \
      --ports=80 \
      --target-tcp-proxy=gil4-tcp-proxy \
      --global
    
    gcloud compute forwarding-rules create gil4-forwarding-rule-b \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=NETWORK \
      --subnet=SUBNET_B \
      --subnet-region=REGION_B \
      --address=IP_ADDRESS2 \
      --ports=80 \
      --target-tcp-proxy=gil4-tcp-proxy \
      --global
    

Load-Balancer testen

VM-Instanz zum Testen der Konnektivität erstellen

  1. Erstellen Sie Client-VMs in REGION_A und REGION_B und Regionen:

    gcloud compute instances create l4-ilb-client-a \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --network=NETWORK \
        --subnet=SUBNET_A \
        --zone=NEG_ZONE1 \
        --tags=allow-ssh
    
    gcloud compute instances create l4-ilb-client-b \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --network=NETWORK \
        --subnet=SUBNET_B \
        --zone=NEG_ZONE2 \
        --tags=allow-ssh
    
  2. Verwenden Sie SSH, um eine Verbindung zu jeder Clientinstanz herzustellen.

    gcloud compute ssh l4-ilb-client-a \
       --zone=NEG_ZONE1
    
    gcloud compute ssh l4-ilb-client-b \
       --zone=NEG_ZONE2
    
  3. Prüfen Sie, ob die IP-Adresse ihren Hostnamen bereitstellt.

    • Prüfen Sie, ob die Client-VM beide IP-Adressen erreichen kann. Der Befehl sollte erfolgreich sein und den Namen der Backend-VM zurückgeben, von der die Anfrage verarbeitet wurde:

      curl IP_ADDRESS1
      
      curl IP_ADDRESS2
      

100 Anfragen ausführen

Führen Sie 100 curl-Anfragen aus und prüfen Sie anhand der Antworten, ob ein Load-Balancing stattfindet.

  • Prüfen Sie, ob die Client-VM beide IP-Adressen erreichen kann. Der Befehl sollte erfolgreich sein und den Namen der Backend-VM zurückgeben, von der die Anfrage verarbeitet wurde:

    {
      RESULTS=
      for i in {1..100}
      do
        RESULTS="$RESULTS:$(curl --silent IP_ADDRESS1)"
      done
      echo "***"
      echo "*** Results of load-balancing to IP_ADDRESS1: "
      echo "***"
      echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
      echo
    }
    
    {
      RESULTS=
      for i in {1..100}
      do
        RESULTS="$RESULTS:$(curl --silent IP_ADDRESS2)"
      done
      echo "***"
      echo "*** Results of load-balancing to IP_ADDRESS2: "
      echo "***"
      echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
      echo
    }
    

Failover testen

  1. Prüfen Sie das Failover auf Back-Ends in der Region REGION_A, wenn Back-Ends in der REGION_B fehlerhaft oder nicht erreichbar sind. Wir simulieren dies, indem wir alle Backends aus REGION_B entfernen:

    gcloud compute backend-services remove-backend BACKEND_SERVICE \
       --balancing-mode=CONNECTION \
       --network-endpoint-group=neg2 \
       --network-endpoint-group-zone=NEG_ZONE2
    
  2. Stellen Sie mit SSH eine Verbindung zur Client-VM in REGION_B her.

    gcloud compute ssh l4-ilb-client-b \
       --zone=NEG_ZONE2
    
  3. Senden Sie Anfragen an die IP-Adresse mit Load-Balancing in der Region REGION_B. Die Befehlsausgabe sollte Antworten von Backend-VMs in REGION_A anzeigen:

    {
    RESULTS=
    for i in {1..100}
    do
      RESULTS="$RESULTS:$(curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS2:443)"
    done
    echo "***"
    echo "*** Results of load-balancing to IP_ADDRESS2: "
    echo "***"
    echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
    echo
    }
    

Nächste Schritte