Internen Passthrough-Network Load Balancer mit internen IPv6-only-Back-Ends einrichten

In diesem Dokument erfahren Sie, wie Sie einen internen Passthrough-Network Load Balancer konfigurieren und testen, der nur internen IPv6-Traffic unterstützt. In dieser Beispielkonfiguration installieren Sie einen Apache-Webserver auf den internen reinen IPv6-Backend-VM-Instanzen, um Inhalte als Reaktion auf Traffic bereitzustellen, der über die virtuelle IP-Adresse (VIP) des Load Balancers empfangen wird.

Wie im folgenden Architekturdiagramm dargestellt, sind die Backend-VMs des Load Balancers mit internen IPv6-Adressen konfiguriert. Für diese Beispielkonfiguration müssen diese Back-End-VMs Apache herunterladen, um einen Webserver zu installieren. Dazu ist Zugriff auf das öffentliche Internet erforderlich. Da diese Back-End-VMs jedoch keine externen IP-Adressen haben, können sie nicht direkt auf das Internet zugreifen.

Für den Internetzugriff wird in diesem Beispiel eine separate VM-Instanz verwendet, die mit einer externen IPv6-Adresse konfiguriert ist und als NAT-Gateway dient. Auf dieser VM wird die Adressübersetzung auf Linux-Kernel-Ebene durchgeführt. Insbesondere wird die Kette POSTROUTING in der NAT-Tabelle verwendet, um die Quelladresse ausgehender Pakete zu maskieren. Dabei wird die interne IPv6-Adresse jeder Backend-VM durch die externe IPv6-Adresse der NAT-Gateway-VM auf der angegebenen Netzwerkschnittstelle ersetzt.

Beispielkonfiguration für internen Passthrough-Network Load Balancer mit reinen internen IPv6-Back-Ends.
Beispielkonfiguration für einen internen Passthrough-Network Load Balancer mit reinen internen IPv6-Back-Ends (zum Vergrößern klicken).

Im Folgenden wird die Konfiguration der verschiedenen Komponenten beschrieben, die zum Einrichten eines internen Passthrough-Network Load Balancers mit reinen internen IPv6-Backends verwendet werden.

Berechtigungen

Damit Sie dieser Anleitung folgen können, müssen Sie Instanzen erstellen und ein Netzwerk in einem Projekt ändern. Sie müssen entweder Inhaber oder Bearbeiter des Projekts sein oder alle folgenden IAM-Rollen in Compute Engine haben:

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

Weitere Informationen finden Sie in folgenden Leitfäden:

Netzwerk und reines IPv6-Subnetz mit internen IPv6-Adressen konfigurieren

Der auf dieser Seite beschriebene interne Passthrough-Network Load Balancer wird in einem VPC-Netzwerk im benutzerdefinierten Modus mit dem Namen lb-network-ipv6-only erstellt.

Aktivieren Sie einen internen IPv6-Bereich des VPC-Netzwerks, wenn Sie Subnetze mit internen IPv6-Bereichen konfigurieren möchten. Interne IPv6-Subnetzbereiche werden aus diesem Bereich zugewiesen.

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-ipv6-only ein.

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

    1. Wählen Sie unter Einstellungen für private IPv6-Adressen die Option Internen ULA-IPv6-Bereich für dieses VPC-Netzwerk konfigurieren 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 bereits verwendet wird, werden Sie aufgefordert, einen anderen Bereich anzugeben.
  5. Wählen Sie unter Modus für Subnetzerstellung die Option Benutzerdefiniert aus.

  6. Legen Sie im Abschnitt Neues Subnetz folgende Konfigurationsparameter für das Subnetz fest:

    • Name: lb-subnet-ipv6-only
    • Region: us-west1
    • IP-Stack-Typ: IPv6 (Einzel-Stack)
    • IPv6-Zugriffstyp: Intern
  7. Klicken Sie auf Fertig.

  8. Klicken Sie auf Erstellen.

gcloud

  1. Führen Sie den gcloud compute networks create-Befehl aus, um ein neues VPC-Netzwerk im benutzerdefinierten Modus zu erstellen.

    Verwenden Sie das Flag --enable-ula-internal-ipv6, um interne IPv6-Bereiche in allen Subnetzen dieses Netzwerks zu konfigurieren.

    gcloud compute networks create lb-network-ipv6-only \
        --subnet-mode=custom \
        --enable-ula-internal-ipv6 \
        --bgp-routing-mode=regional
    
  2. Konfigurieren Sie ein Subnetz, in dem ipv6-access-type auf INTERNAL gesetzt ist. Dies bedeutet, dass die VMs in diesem Subnetz nur interne IPv6-Adressen haben können. In diesem Beispiel hat das Subnetz den Namen lb-subnet-ipv6-only-internal.

    Führen Sie den gcloud compute networks subnets create-Befehl aus, um das Subnetz zu erstellen.

    gcloud compute networks subnets create lb-subnet-ipv6-only-internal \
        --network=lb-network-ipv6-only \
        --region=us-west1 \
        --stack-type=IPV6_ONLY \
        --ipv6-access-type=INTERNAL
    

Nur-IPv6-Subnetz mit externen IPv6-Adressen konfigurieren

Ein reines IPv6-Subnetz mit externen IPv6-Adressen wird verwendet, um eine VM-Instanz zu erstellen, die als NAT-Gateway dient.

Console

  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-Netzwerk, das Sie erstellt haben, um die Seite VPC-Netzwerkdetails aufzurufen.

  3. Klicken Sie auf dem Tab Subnetze auf Subnetz hinzufügen. Geben Sie im angezeigten Bereich die folgenden Konfigurationsparameter für das Subnetz an:

    • Name: lb-subnet-ipv6-only-external
    • Region: us-west1
    • IP-Stack-Typ: IPv6 (Einzel-Stack)
    • IPv6-Zugriffstyp: Extern
  4. Klicken Sie auf Hinzufügen.

gcloud

Konfigurieren Sie ein Subnetz, in dem ipv6-access-type auf EXTERNAL gesetzt ist. Dies bedeutet, dass die VMs in diesem Subnetz externe IPv6-Adressen haben können. In diesem Beispiel heißt das Subnetz lb-subnet-ipv6-only-external.

Führen Sie den gcloud compute networks subnets create-Befehl aus, um das Subnetz zu erstellen.

gcloud compute networks subnets create  lb-subnet-ipv6-only-external \
    --network=lb-network-ipv6-only \
    --region=us-west1 \
    --stack-type=IPV6_ONLY \
    --ipv6-access-type=EXTERNAL

Firewallregeln im VPC-Netzwerk konfigurieren

In diesem Beispiel werden die folgenden Firewallregeln verwendet:

  • fw-allow-lb-access-ipv6-only: Eine Regel für eingehenden Traffic, die für alle Ziele im VPC-Netzwerk gilt und Traffic von allen IPv6-Quellen zulässt.

  • fw-allow-ssh: Eine Regel für eingehenden Traffic, die 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, um die VMs zu identifizieren, auf die es angewendet werden muss.

  • fw-allow-health-check-ipv6-only: Eine Regel für eingehenden Traffic, die für die Instanzen mit Load-Balancing gilt und Traffic von den Google Cloud -Systemdiagnosesystemen (2600:2d00:1:b029::/64) zulässt. In diesem Beispiel wird das Ziel-Tag allow-health-check-ipv6 verwendet, um die Instanzen zu identifizieren, auf die sie angewendet werden muss.

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 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-only
    • Netzwerk: lb-network-ipv6-only
    • Priorität: 1000
    • Trafficrichtung: Eingehend
    • Aktion bei Übereinstimmung: Zulassen
    • Ziele: All instances in the network.
    • Quellfilter: IPv6-Bereiche
    • Quell-IPv6-Bereiche: ::/0
    • Protokolle und Ports: Alle zulassen
  3. Klicken Sie auf Erstellen.

  4. Klicken Sie noch einmal auf Firewallregel erstellen und geben Sie die folgenden Informationen ein, um eingehende SSH-Verbindungen zuzulassen:

    • Name: fw-allow-ssh
    • Netzwerk: lb-network-ipv6-only
    • Priorität: 1000
    • Trafficrichtung: Eingehend
    • Aktion bei Übereinstimmung: Zulassen
    • Ziele: Angegebene Ziel-Tags
    • Zieltags: allow-ssh
    • Quellfilter: IPv6-Bereiche
    • Quell-IPv6-Bereiche: ::/0
    • Protokolle und Ports: Wählen Sie Angegebene Protokolle und Ports aus, klicken Sie das Kästchen TCP an und geben Sie 22 in Ports ein:
  5. Klicken Sie auf Erstellen.

  6. Klicken Sie noch einmal auf Firewallregel erstellen und geben Sie die folgenden Informationen ein, um Google Cloud IPv6-Systemdiagnosen zuzulassen:

    • Name: fw-allow-health-check-ipv6-only
    • Netzwerk: lb-network-ipv6-only
    • Priorität: 1000
    • Trafficrichtung: Eingehend
    • Aktion bei Übereinstimmung: Zulassen
    • Ziele: Angegebene Ziel-Tags
    • Zieltags: allow-health-check-ipv6
    • Quellfilter: IPv6-Bereiche
    • Quell-IPv6-Bereiche: 2600:2d00:1:b029::/64
    • Protokolle und Ports: Alle zulassen
  7. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie die Firewallregel fw-allow-lb-access-ipv6-only, um eingehenden IPv6-Traffic zu allen VM-Instanzen im VPC-Netzwerk zuzulassen:

    gcloud compute firewall-rules create fw-allow-lb-access-ipv6-only \
        --network=lb-network-ipv6-only \
        --action=allow \
        --direction=ingress \
        --source-ranges=::/0 \
        --rules=all
    
  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,Google Cloud bezieht die Regel auf jede Quelle.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network-ipv6-only \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --source-ranges=::/0 \
        --rules=tcp:22
    
  3. Erstellen Sie die Regel fw-allow-health-check-ipv6, umGoogle Cloud IPv6-Systemdiagnosen zuzulassen.

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

VM-Instanz erstellen, die als NAT-Gateway dient

In diesem Beispiel wird ein Bash-Script verwendet, um ein NAT-Gateway zu erstellen, mit dem IPv6-Pakete auf Linux-Kernel-Ebene geändert werden.

Das Bash-Script ändert die Quelladresse aller ausgehenden IPv6-Pakete in der Kette POSTROUTING und ersetzt sie durch die externe IPv6-Adresse der VM-Schnittstelle.

Das Bash-Script ändert die Kette POSTROUTING in iptables, um die Quell-IPv6-Adresse aller ausgehenden Pakete zu maskieren. Dabei wird sie durch die externe IPv6-Adresse der Netzwerkschnittstelle der VM ersetzt.

Außerdem müssen Sie für diese Instanz die IP-Weiterleitung aktivieren.

So erstellen Sie eine VM-Instanz, die als NAT-Gateway dient:

Console

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

    Zu "VM-Instanzen"

  2. Klicken Sie auf Instanz erstellen.

  3. Geben Sie für Name nat-gateway-instance ein.

  4. Wählen Sie als Region us-west1 und als Zone us-west1-a aus.

  5. Achten Sie darauf, dass im Abschnitt Bootlaufwerk Debian GNU/Linux 12 (bookworm) als Bootlaufwerk-Optionen ausgewählt ist. Klicken Sie bei Bedarf auf Ändern, um das Image zu ändern.

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

    1. Geben Sie bei Netzwerk-Tags den Wert allow-ssh ein.
    2. Klicken Sie für die IP-Weiterleitung das Kästchen Aktivieren an.
    3. Wählen Sie für Netzwerkschnittstellen Folgendes aus:
      • Netzwerk: lb-network-ipv6-only
      • Subnetz: lb-subnet-ipv6-only-external
      • IP-Stack-Typ: IPv6 (Einzel-Stack)
      • Externe IPv6-Adresse: Automatisch zuweisen
  7. Klicken Sie auf Erweitert und geben Sie im Feld Startskript das folgende Skript ein:

    #!/bin/bash
    
    set -e
    
    echo "Starting GCE startup script..."
    
    # --- IPv6 NAT table configuration ---
    echo "Modifying the source IPv6 address using the NAT table"
    
    # Enable IPv6 forwarding
    sysctl -w net.ipv6.conf.all.forwarding=1
    
    # Determine the primary network interface (assuming it's the last one listed)
    IFACE=$(ip -brief link | tail -1 | awk '{print $1}')
    
    echo "Using interface: $IFACE for IPv6 NAT"
    
    # Flush existing IPv6 NAT rules
    ip6tables -F -t nat
    ip6tables -X -t nat
    
    # Masquerade all outgoing IPv6 traffic on the determined interface
    ip6tables -t nat -A POSTROUTING -o "$IFACE" -j MASQUERADE
    
    echo "IPv6 masquerading configured successfully."
    
    echo "GCE startup script finished."
    

  8. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie ein Startskript.

    nano startup.sh
    
  2. Fügen Sie das folgende Skript hinzu und speichern Sie die Datei.

    #!/bin/bash
    
    set -e
    
    echo "Starting GCE startup script..."
    
    # --- IPv6 NAT table configuration ---
    echo "Modifying the source IPv6 address using the NAT table"
    
    # Enable IPv6 forwarding
    sysctl -w net.ipv6.conf.all.forwarding=1
    
    # Determine the primary network interface (assuming it's the last one listed)
    IFACE=$(ip -brief link | tail -1 | awk '{print $1}')
    
    echo "Using interface: $IFACE for IPv6 NAT"
    
    # Flush existing IPv6 NAT rules
    ip6tables -F -t nat
    ip6tables -X -t nat
    
    # Masquerade all outgoing IPv6 traffic on the determined interface
    ip6tables -t nat -A POSTROUTING -o "$IFACE" -j MASQUERADE
    
    echo "IPv6 masquerading configured successfully."
    
    echo "GCE startup script finished."
    
  3. Erstellen Sie eine VM-Instanz und fügen Sie die Metadatendatei der VM-Instanz hinzu. Wenn Sie diese VM als nächsten Hop für eine Route verwenden möchten, verwenden Sie das Flag --can-ip-forward, um die IP-Weiterleitung für diese Instanz zu aktivieren.

    gcloud compute instances create nat-gateway-instance \
        --zone=us-west1-a \
        --tags=allow-ssh \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --subnet=lb-subnet-ipv6-only-external \
        --stack-type=IPV6_ONLY \
        --can-ip-forward \
        --metadata-from-file=startup-script=startup.sh
    

Neue statische Route im VPC-Netzwerk erstellen

In diesem Beispiel wird eine benutzerdefinierte Route erstellt, die den gesamten IPv6-Traffic zum Internet (::/0) von VMs mit dem Tag nat-gw-tag zur VM-Instanz nat-gateway-instance leitet, die als NAT-Gateway dient.

So erstellen Sie eine Route:

Console

  1. Rufen Sie in der Google Cloud Console die Seite „Routen“ auf.

    Zur Seite „Routes“

  2. Klicken Sie auf den Tab Routenverwaltung.

  3. Klicken Sie auf Route erstellen.

  4. Geben Sie einen Namen und eine Beschreibung für die Route an.

  5. Wählen Sie in der Liste Netzwerk das VPC-Netzwerk lb-network-ipv6-only aus.

  6. Wählen Sie in der Liste IP-Version die Option IPv6 aus.

  7. Geben Sie einen Ziel-IPv6-Bereich an. Das breitestmögliche Ziel ist ::/0 für IPv6.

  8. Damit die Route nur auf ausgewählte Instanzen mit übereinstimmenden Netzwerktags angewendet werden kann, geben Sie diese Tags im Feld Instanztags an. Lassen Sie das Feld leer, damit die Route für alle Instanzen im Netzwerk gilt. Geben Sie für dieses Beispiel nat-gw-tag ein.

  9. Wählen Sie für den nächsten Hop die Option Instanz angeben aus.

  10. Wählen Sie den Namen der Instanz aus, die Sie als NAT-Gateway erstellt haben. Wählen Sie für dieses Beispiel nat-gateway-instance aus.

  11. Klicken Sie auf Erstellen.

gcloud

Verwenden Sie den gcloud compute routes create-Befehl, um eine neue Route zu erstellen. Das Paket wird an die VM-Instanz nat-gateway-instance weitergeleitet, wie in --next-hop-instance der Route angegeben.

gcloud compute routes create route-1 \
    --network=lb-network-ipv6-only \
    --priority=1000 \
    --tags=nat-gw-tag \
    --destination-range=::/0 \
    --next-hop-instance=nat-gateway-instance \
    --next-hop-instance-zone=us-west1-a

Backend-VMs und Instanzgruppen erstellen

In diesem Beispiel werden zwei nicht verwaltete Instanzgruppen mit jeweils zwei Backend-VMs verwendet. Die beiden Instanzgruppen befinden sich dabei in den separaten Zonen us-west1-a und us-west1-c, um den regionalen Charakter von internen Passthrough-Netzwerk-Load-Balancern zu veranschaulichen.

  • Die Instanzgruppe ig-a enthält diese beiden VMs:
    • vm-a1
    • vm-a2
  • Die Instanzgruppe ig-c enthält diese beiden VMs:
    • vm-c1
    • vm-c2

Auf den Traffic zu allen vier Back-End-VMs wird Load-Balancing angewendet.

In diesem Beispiel wird die statische Route, die in einem früheren Schritt erstellt wurde, mithilfe des Netzwerktags nat-gw-tag auf bestimmte VM-Instanzen beschränkt.

Console

Backend-VMs erstellen

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

    Zu "VM-Instanzen"

  2. Wiederholen Sie diese Schritte für jede VM mit den folgenden Kombinationen aus Name und Zone.

    • Name: vm-a1, Zone: us-west1-a
    • Name: vm-a2, Zone: us-west1-a
    • Name: vm-c1, Zone: us-west1-c
    • Name: vm-c2, Zone: us-west1-c
  3. Klicken Sie auf Instanz erstellen.

  4. Legen Sie den Namen wie in Schritt 2 angegeben fest.

  5. Wählen Sie für Region die Option us-west1 und dann eine Zone aus, wie in Schritt 2 angegeben.

  6. Achten Sie darauf, dass im Abschnitt Bootlaufwerk Debian GNU/Linux 12 (bookworm) als Bootlaufwerk-Optionen ausgewählt ist. Klicken Sie bei Bedarf auf Ändern, um das Image zu ändern.

  7. Klicken Sie auf Erweiterte Optionen.

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

    1. Geben Sie für Netzwerk-Tags allow-ssh, allow-health-check-ipv6 und nat-gw-tag ein.
    2. Wählen Sie für Netzwerkschnittstellen Folgendes aus:
      • Netzwerk: lb-network-ipv6-only
      • Subnetz: lb-subnet-ipv6-only-internal
      • IP-Stack-Typ: IPv6 (Einzel-Stack)
      • Primäre interne IPv6-Adresse: sitzungsspezifisch (automatisch)
  9. Klicken Sie auf Erweitert und geben Sie im Feld Startskript das folgende Skript ein. Der Skriptinhalt ist für alle vier 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
    
  10. Klicken Sie auf Erstellen.

Instanzgruppen erstellen

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

    Zu den Instanzgruppen

  2. Wiederholen Sie die folgenden Schritte, um mit diesen Kombinationen zwei nicht verwaltete Instanzgruppen mit jeweils zwei VMs zu erstellen.

    • Instanzgruppenname: ig-a, Zone: us-west1-a, VMs: vm-a1 und vm-a2
    • Instanzgruppenname: ig-c, Zone: us-west1-c, VMs: vm-c1 und vm-c2
  3. Klicken Sie auf Instanzgruppe erstellen.

  4. Klicken Sie auf Neue nicht verwaltete Instanzgruppe.

  5. Legen Sie Name wie in Schritt 2 angegeben fest.

  6. Wählen Sie im Bereich Standort als Region us-west1 aus und legen Sie dann wie in Schritt 2 angegeben eine Zone fest.

  7. Wählen Sie für Netzwerk die Option lb-network-ipv6-only aus.

  8. Wählen Sie für Subnetzwerk die Option lb-subnet-ipv6-only-internal aus.

  9. Fügen Sie im Bereich VM-Instanzen die in Schritt 2 angegebenen VMs hinzu.

  10. Klicken Sie auf Erstellen.

gcloud

  1. Führen Sie den gcloud compute instances create-Befehl viermal aus, um die vier VMs zu erstellen. Verwenden Sie dazu die folgenden vier Kombinationen für [VM-NAME] und [ZONE].

    • VM-NAME: vm-a1, ZONE: us-west1-a
    • VM-NAME: vm-a2, ZONE: us-west1-a
    • VM-NAME: vm-c1, ZONE: us-west1-c
    • VM-NAME: vm-c2, ZONE: us-west1-c
    gcloud compute instances create VM-NAME \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check-ipv6,nat-gw-tag \
        --subnet=lb-subnet-ipv6-only-internal \
        --stack-type=IPV6_ONLY \
        --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 die zwei nicht verwalteten Instanzgruppen in jeder Zone:

    gcloud compute instance-groups unmanaged create ig-a \
        --zone=us-west1-a
    gcloud compute instance-groups unmanaged create ig-c \
        --zone=us-west1-c
    
  3. Fügen Sie den entsprechenden Instanzgruppen die VMs hinzu:

    gcloud compute instance-groups unmanaged add-instances ig-a \
        --zone=us-west1-a \
        --instances=vm-a1,vm-a2
    gcloud compute instance-groups unmanaged add-instances ig-c \
        --zone=us-west1-c \
        --instances=vm-c1,vm-c2
    

Load-Balancer-Komponenten konfigurieren

In den folgenden Schritten werden die verschiedenen Komponenten eines internen Passthrough-Network Load Balancers konfiguriert, beginnend mit der Systemdiagnose und dem Backend-Dienst und dann dem Frontend.

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 für Proxy oder Passthrough die Option Passthrough-Load Balancer aus und klicken Sie auf Weiter.
  5. Klicken Sie auf Konfigurieren.

Grundlegende Konfiguration

Geben Sie auf der Seite Internen Passthrough-Network Load Balancer erstellen die folgenden Informationen ein:

  • Name des Load-Balancers: ilb-ipv6-only
  • Region: us-west1
  • Netz: lb-network-ipv6-only

Backend-Konfiguration

  1. Klicken Sie auf Backend-Konfiguration.
  2. Wählen Sie im Bereich Neues Backend von Backends den IP-Stack-Typ als IPv6 (Single-Stack) aus.
  3. Wählen Sie unter Instanzgruppe die Instanzgruppe ig-a aus und klicken Sie auf Fertig.
  4. Klicken Sie auf Backend hinzufügen und wiederholen Sie diesen Schritt, um ig-c hinzuzufügen.
  5. Wählen Sie aus der Liste Systemdiagnose die Option Systemdiagnose erstellen aus, geben Sie die folgenden Informationen ein und klicken Sie auf Speichern:
    • Name: hc-http-80.
    • Umfang: Regional.
    • Protokoll: HTTP.
    • Port: 80.
    • Proxyprotokoll: NONE.
    • Anfragepfad: /.
  6. Prüfen Sie, ob neben der Backend-Konfiguration ein blaues Häkchen angezeigt wird.

Frontend-Konfiguration

  1. Klicken Sie auf Frontend-Konfiguration. Führen Sie im Abschnitt Neue Frontend-IP-Adresse und neuer Frontend-Port folgende Schritte aus:
    1. Geben Sie für Name fr-ilb-ipv6-only ein.
    2. So verarbeiten Sie IPv6-Traffic:
      1. Setzen Sie die IP-Version auf IPv6. Der IPv6-TCP-Server, den Sie im nächsten Abschnitt erstellen, wird an die VIP der Weiterleitungsregel gebunden.
      2. Wählen Sie für Subnetzwerk die Option lb-subnet-ipv6-only-internal aus. Der IPv6-Adressbereich in der Weiterleitungsregel ist immer sitzungsspezifisch.
      3. Wählen Sie für Ports die Option Mehrere aus und geben Sie im Feld Portnummer den Wert 80 ein.
      4. Klicken Sie auf Fertig.
    3. Überprüfen Sie, bevor Sie fortfahren, ob sich neben der Frontend-Konfiguration ein blaues Häkchen befindet.

Konfiguration prüfen

  1. Klicken Sie auf Prüfen und abschließen. Prüfen Sie alle Ihre Einstellungen.
  2. Klicken Sie, wenn die Einstellungen korrekt sind, auf Erstellen. Es dauert einige Minuten, bis der interne Passthrough-Netzwerk-Load-Balancer erstellt ist.

gcloud

  1. Erstellen Sie eine neue regionale HTTP-Systemdiagnose, um die HTTP-Verbindung zu den VMs auf Port 80 zu testen.

    gcloud compute health-checks create http hc-http-80 \
        --region=us-west1 \
        --port=80
    
  2. Erstellen Sie den Back-End-Dienst:

    gcloud compute backend-services create ilb-ipv6-only \
        --load-balancing-scheme=INTERNAL \
        --protocol=tcp \
        --region=us-west1 \
        --health-checks=hc-http-80 \
        --health-checks-region=us-west1
    
  3. Fügen Sie dem Backend-Dienst die beiden Instanzgruppen hinzu:

    gcloud compute backend-services add-backend ilb-ipv6-only \
        --region=us-west1 \
        --instance-group=ig-a \
        --instance-group-zone=us-west1-a
    
    gcloud compute backend-services add-backend ilb-ipv6-only \
        --region=us-west1 \
        --instance-group=ig-c \
        --instance-group-zone=us-west1-c
    
  4. Erstellen Sie die IPv6-Weiterleitungsregel mit einer sitzungsspezifischen IPv6-Adresse.

    gcloud compute forwarding-rules create fr-ilb-ipv6-only \
        --region=us-west1 \
        --load-balancing-scheme=INTERNAL \
        --subnet=lb-subnet-ipv6-only-internal \
        --ip-protocol=TCP \
        --ports=80 \
        --backend-service=ilb-ipv6-only \
        --backend-service-region=us-west1 \
        --ip-version=IPV6
    

Load-Balancer testen

Erstellen Sie zum Testen des Load-Balancers eine Client-VM in derselben Region wie der Load-Balancer und senden Sie dann Traffic vom Client an den Load-Balancer.

Client-VM erstellen

In diesem Beispiel wird eine Client-VM (vm-client) erstellt, die sich in derselben Region wie die Backend-VMs (Server) befindet.

Console

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

    Zu "VM-Instanzen"

  2. Klicken Sie auf Instanz erstellen.

  3. Geben Sie für Name vm-client ein.

  4. Wählen Sie für Region die Option us-west1 aus.

  5. Wählen Sie für Zone die Option us-west1-a aus.

  6. Klicken Sie auf Erweiterte Optionen.

  7. 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:
      • Netz: lb-network-ipv6-only
      • Subnetz: lb-subnet-ipv6-only-internal
      • IP-Stack-Typ: IPv6 (Einzel-Stack)
    3. Klicken Sie auf Fertig.
  8. Klicken Sie auf Erstellen.

gcloud

Die Client-VM kann sich in einer beliebigen Zone in derselben Region wie der Load-Balancer befinden. In diesem Beispiel befindet sich der Client in der Zone us-west1-a und verwendet dasselbe Subnetz wie die Backend-VMs.

gcloud compute instances create vm-client \
    --zone=us-west1-a \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --stack-type=IPV6_ONLY \
    --tags=allow-ssh \
    --subnet=lb-subnet-ipv6-only-internal

Verbindung testen

Dieser Test nimmt von einer separaten Client-VM Verbindung mit dem Load-Balancer auf, also nicht von einer Backend-VM des Load-Balancers. Dabei wird folgendes Verhalten erwartet: Der Traffic wird auf die vier Backend-VMs verteilt.

  1. Stellen Sie mit SSH eine Verbindung zur Client-VM-Instanz her.

    gcloud compute ssh vm-client --zone=us-west1-a
    
  2. Beschreiben Sie die IPv6-Weiterleitungsregel fr-ilb-ipv6-only. Beachten Sie IPV6_ADDRESS in der Beschreibung.

    gcloud compute forwarding-rules describe fr-ilb-ipv6-only \
        --region=us-west1
    
  3. Führen Sie von Clients mit IPv6-Verbindung den folgenden Befehl aus:

    curl http://IPV6_ADDRESS:80
    

    Wenn die zugewiesene IPv6-Adresse beispielsweise [fd20:307:120c:2000:0:1:0:0/96]:80 lautet, sollte der Befehl so aussehen:

    curl http://[fd20:307:120c:2000:0:1:0:0]:80
    

    Die Antwort kann so aussehen:

    Page returned from: vm-a2
    

Nächste Schritte