Internen Passthrough-Netzwerk-Load-Balancer mit VM-Instanzgruppen-Back-Ends einrichten

Diese Anleitung vermittelt anhand eines Beispiels die Grundlagen der internen Passthrough-Netzwerk-Load-Balancer von Google Cloud. Bevor Sie sie durchgehen, machen Sie sich mit folgenden Themen vertraut:


Eine detaillierte Anleitung dazu finden Sie direkt in der Google Cloud Console. Klicken Sie dazu einfach auf Anleitung:

Anleitung


Berechtigungen

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

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:

Load-Balancer mit Single-Stack-Subnetzen einrichten

In dieser Anleitung erfahren Sie, wie Sie einen internen Passthrough-Netzwerk-Load-Balancer konfigurieren und testen. Die Schritte in diesem Abschnitt zeigen, wie Sie folgende Elemente konfigurieren:

  1. Ein Beispiel, das ein VPC-Netzwerk im benutzerdefinierten Modus namens lb-network verwendet.
  2. Ein Single-Stack-Subnetz (stack-type ist auf IPv4 gesetzt), das für IPv4-Traffic erforderlich ist. Beim Erstellen eines Single-Stack-Subnetzes in einem VPC-Netzwerk im benutzerdefinierten Modus wählen Sie einen IPv4-Subnetzbereich für das Subnetz aus.
  3. Firewall-Regeln, die eingehende Verbindung zu Backend-VMs ermöglichen
  4. The backend instance group, which is located in the following region and subnet for this example:
    • Region: us-west1
    • Subnetz: lb-subnet, mit primärem IPv4-Adressbereich 10.1.2.0/24.
  5. Vier Backend-VMs: zwei VMs in einer nicht verwalteten Instanzgruppe in Zone us-west1-a und zwei VMs in einer nicht verwalteten Instanzgruppe in Zone us-west1-c. Zur Veranschaulichung des globalen Zugriffs wird in diesem Beispiel eine zweite Testclient-VM in einer anderen Region und einem anderen Subnetz erstellt:
    • Region: europe-west1
    • Subnetz: europe-subnet, mit primärem IP-Adressbereich 10.3.4.0/24
  6. Eine Client-VM zum Testen von Verbindungen.
  7. Die folgenden Komponenten eines internen Passthrough-Netzwerk-Load-Balancers:
    • Eine Systemdiagnose für den Backend-Dienst.
    • Einen internen Backend-Dienst in der Region us-west1, um die Verteilung von Verbindungen zu den zwei zonalen Instanzgruppen zu verwalten.
    • Eine interne Weiterleitungsregel und eine interne IP-Adresse für das Frontend des Load-Balancers.

Die Architektur dieses Beispiels sieht so aus:

Beispielkonfiguration für internen Passthrough-Network Load Balancer.
Beispielkonfiguration für internen Passthrough-Network Load Balancer (zum Vergrößern klicken)

Netzwerk, Region und Subnetz konfigurieren

Gehen Sie so vor, um das Netzwerk und das Subnetz zu 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. Führen Sie im Abschnitt Subnetze folgende Schritte aus:

    1. Legen Sie Modus für Subnetzerstellung auf Benutzerdefiniert fest.
    2. Geben Sie im Bereich Neues Subnetz folgende Informationen ein:
      • Name: lb-subnet
      • Region: us-west1
      • IP-Stack-Typ: IPv4 (Einzel-Stack)
      • IP-Adressbereich: 10.1.2.0/24
    3. Klicken Sie auf Fertig.
    4. Klicken Sie auf Subnetz hinzufügen und geben Sie die folgenden Informationen ein:
      • Name: europe-subnet
      • Region: europe-west1
      • IP-Stack-Typ: IPv4 (Einzel-Stack)
      • IP-Adressbereich: 10.3.4.0/24
    5. Klicken Sie auf Fertig.
  5. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie das benutzerdefinierte VPC-Netzwerk:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Erstellen Sie im Netzwerk lb-network ein Subnetz für Back-Ends in der Region us-west1.

    gcloud compute networks subnets create lb-subnet \
      --network=lb-network \
      --range=10.1.2.0/24 \
      --region=us-west1
    
  3. Erstellen Sie im Netzwerk lb-network ein weiteres Subnetz zum Testen des globalen Zugriffs in der Region europe-west1:

    gcloud compute networks subnets create europe-subnet \
      --network=lb-network \
      --range=10.3.4.0/24 \
      --region=europe-west1
    

API

Stellen Sie eine POST-Anfrage an die Methode networks.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks

{
 "routingConfig": {
   "routingMode": "REGIONAL"
 },
 "name": "lb-network",
 "autoCreateSubnetworks": false
}

Stellen Sie zwei POST-Anfragen an die Methode subnetworks.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks

{
 "name": "lb-subnet",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "ipCidrRange": "10.1.2.0/24",
 "privateIpGoogleAccess": false
}
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/europe-west1/subnetworks

{
 "name": "europe-subnet",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
  "ipCidrRange": "10.3.4.0/24",
  "privateIpGoogleAccess": false
}

Firewallregeln konfigurieren

In diesem Beispiel werden die folgenden Firewallregeln verwendet:

  • fw-allow-lb-access: Eine Eingangsregel, die für alle Ziele im VPC-Netzwerk gilt und Traffic von Quellen in den Bereichen 10.1.2.0/24 und 10.3.4.0/24 zulässt. Diese Regel lässt eingehenden Traffic von jedem Client zu, der sich in einem der beiden Subnetze befindet. Sie können damit später den globalen Zugriff konfigurieren und testen.

  • fw-allow-ssh: Eine Regel für eingehenden Traffic, die für die Instanzen mit Load-Balancing gilt und 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, aus dem 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-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 Instanzen zu identifizieren, auf die sie angewendet werden soll.

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

Console

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

    Zu den Firewall-Richtlinien

  2. Klicken Sie auf Firewallregel erstellen und geben Sie die folgenden Informationen ein, um Subnetztraffic zuzulassen:

    • Name: fw-allow-lb-access
    • Netzwerk: lb-network
    • Priorität: 1000
    • Trafficrichtung: Eingehend
    • Aktion bei Übereinstimmung: Zulassen
    • Ziele: All instances in the network.
    • Quellfilter: IPv4-Bereiche.
    • IPv4-Quellbereiche: 10.1.2.0/24
    • 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
    • Priorität: 1000
    • Trafficrichtung: Eingehend
    • Aktion bei Übereinstimmung: Zulassen
    • Ziele: Specified target 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 in Ports ein:
  5. Klicken Sie auf Erstellen.

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

    • Name: fw-allow-health-check
    • Netzwerk: lb-network
    • Priorität: 1000
    • Trafficrichtung: Eingehend
    • Aktion bei Übereinstimmung: Zulassen
    • Ziele: Specified target tags
    • Zieltags: allow-health-check
    • Quellfilter: IPv4-Bereiche.
    • IPv4-Quellbereiche: 130.211.0.0/22 und 35.191.0.0/16
    • Protokolle und Ports: Alle zulassen
  7. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie die Firewallregel fw-allow-lb-access, um die Kommunikation aus dem Subnetz zuzulassen:

    gcloud compute firewall-rules create fw-allow-lb-access \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=10.1.2.0/24,10.3.4.0/24 \
        --rules=tcp,udp,icmp
    
  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=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  3. Erstellen Sie die Regel fw-allow-health-check, um Google Cloud-Systemdiagnosen zuzulassen.

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp,udp,icmp
    

API

Erstellen Sie die Firewallregel fw-allow-lb-access. Stellen Sie dazu eine POST-Anfrage an die Methode firewalls.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls

{
 "name": "fw-allow-lb-access",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "priority": 1000,
 "sourceRanges": [
   "10.1.2.0/24", "10.3.4.0/24"
 ],
 "allowed": [
   {
     "IPProtocol": "tcp"
   },
   {
     "IPProtocol": "udp"
   },
   {
     "IPProtocol": "icmp"
   }
 ],
 "direction": "INGRESS",
 "logConfig": {
   "enable": false
 },
 "disabled": false
}

Erstellen Sie die Firewallregel fw-allow-ssh. Stellen Sie dazu eine POST-Anfrage an die Methode firewalls.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls

{
 "name": "fw-allow-ssh",
      "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "priority": 1000,
 "sourceRanges": [
   "0.0.0.0/0"
 ],
 "targetTags": [
   "allow-ssh"
 ],
 "allowed": [
  {
    "IPProtocol": "tcp",
    "ports": [
      "22"
    ]
  }
 ],
"direction": "INGRESS",
"logConfig": {
  "enable": false
},
"disabled": false
}

Erstellen Sie die Firewallregel fw-allow-health-check. Stellen Sie dazu eine POST-Anfrage an die Methode firewalls.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls

{
 "name": "fw-allow-health-check",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "priority": 1000,
 "sourceRanges": [
   "130.211.0.0/22",
   "35.191.0.0/16"
 ],
 "targetTags": [
   "allow-health-check"
 ],
 "allowed": [
   {
     "IPProtocol": "tcp"
   },
   {
     "IPProtocol": "udp"
   },
   {
     "IPProtocol": "icmp"
   }
 ],
 "direction": "INGRESS",
 "logConfig": {
   "enable": false
 },
 "disabled": false
}

Backend-VMs und Instanzgruppen erstellen

In diesem Beispiel werden zwei nicht verwaltete Instanzgruppen mit jeweils zwei Backend-VMs (Server) 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 Backend-VMs wird Load-Balancing angewendet.

Zur Illustration dieses Beispiels und der zusätzlichen Konfigurationsoptionen führt jede der vier VMs einen Apache-Webserver aus, der die folgenden TCP-Ports überwacht: 80, 8008, 8080, 8088, 443 und 8443.

Jeder VM wird eine interne IP-Adresse im lb-subnet und eine sitzungsspezifische externe (öffentliche) IP-Adresse zugewiesen. Sie können die externen IP-Adressen später entfernen.

Externe IP-Adressen werden für die Backend-VMs nicht benötigt. Sie sind jedoch für dieses Beispiel nützlich, da sie den Backend-VMs ermöglichen, Apache aus dem Internet herunterzuladen, und die Herstellung einer Verbindung mit SSH erlauben.

Apache ist standardmäßig für die Bindung an eine beliebige IP-Adresse konfiguriert. Interne Passthrough-Netzwerk-Load-Balancer liefern Pakete aus und behalten dabei die Ziel-IP bei. Achten Sie deshalb darauf, dass die auf den Backend-VMs ausgeführte Serversoftware die IP-Adresse der internen Weiterleitungsregel des Load-Balancers überwacht. Wenn Sie mehrere interne Weiterleitungsregeln konfigurieren, achten Sie darauf, dass die Software die jeweils zugewiesene interne IP-Adresse überwacht. Die Ziel-IP-Adresse eines Pakets, das ein interner Passthrough-Netzwerk-Load-Balancer an eine Backend-VM liefert, ist die interne IP-Adresse der Weiterleitungsregel.

Der Einfachheit halber wird auf diesen Backend-VMs Debian GNU/Linux 10 ausgeführt.

Console

Backend-VMs erstellen

  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: 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 im Bereich Bootlaufwerk darauf, dass als Bootlaufwerk-Optionen das Betriebssystem Debian und die Version 10 (Buster) ausgewählt sind. 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 und allow-health-check ein.
    2. Wählen Sie für Netzwerkschnittstellen Folgendes aus:
      • Netzwerk: lb-network
      • Subnetz: lb-subnet
      • IP-Stack-Typ: IPv4 (Einzel-Stack)
      • Primäre interne IPv4-Adresse: flüchtig (automatisch)
      • Externe IPv4-Adresse: sitzungsspezifisch
  9. Klicken Sie auf Verwaltung und geben Sie im Feld Startskript das folgende Skript ein. Der Skriptinhalt ist für alle vier VMs identisch.

    
    #! /bin/bash
    if [ -f /etc/startup_script_completed ]; then
    exit 0
    fi
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    file_ports="/etc/apache2/ports.conf"
    file_http_site="/etc/apache2/sites-available/000-default.conf"
    file_https_site="/etc/apache2/sites-available/default-ssl.conf"
    http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088"
    http_vh_prts="*:80 *:8008 *:8080 *:8088"
    https_listen_prts="Listen 443\nListen 8443"
    https_vh_prts="*:443 *:8443"
    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
    prt_conf="$(cat "$file_ports")"
    prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")"
    prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")"
    echo "$prt_conf" | tee "$file_ports"
    http_site_conf="$(cat "$file_http_site")"
    http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")"
    echo "$http_site_conf_2" | tee "$file_http_site"
    https_site_conf="$(cat "$file_https_site")"
    https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")"
    echo "$https_site_conf_2" | tee "$file_https_site"
    systemctl restart apache2
    touch /etc/startup_script_completed
    
  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 Abschnitt Standort die Option us-west1 für Region und dann eine Zone wie in Schritt 2 angegeben.

  7. Wählen Sie für Netz die Option lb-network aus.

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

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

  10. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie die vier VMs, indem Sie den folgenden Befehl viermal ausführen und die nachstehenden vier Kombinationen für [VM-NAME] und [ZONE] verwenden. Der Skriptinhalt ist für alle vier VMs identisch.

    • 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-10 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check \
        --subnet=lb-subnet \
        --metadata=startup-script='#! /bin/bash
    if [ -f /etc/startup_script_completed ]; then
    exit 0
    fi
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    file_ports="/etc/apache2/ports.conf"
    file_http_site="/etc/apache2/sites-available/000-default.conf"
    file_https_site="/etc/apache2/sites-available/default-ssl.conf"
    http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088"
    http_vh_prts="*:80 *:8008 *:8080 *:8088"
    https_listen_prts="Listen 443\nListen 8443"
    https_vh_prts="*:443 *:8443"
    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
    prt_conf="$(cat "$file_ports")"
    prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")"
    prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")"
    echo "$prt_conf" | tee "$file_ports"
    http_site_conf="$(cat "$file_http_site")"
    http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")"
    echo "$http_site_conf_2" | tee "$file_http_site"
    https_site_conf="$(cat "$file_https_site")"
    https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")"
    echo "$https_site_conf_2" | tee "$file_https_site"
    systemctl restart apache2
    touch /etc/startup_script_completed'
    
  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
    

API

Verwenden Sie für die vier VMs die folgenden VM-Namen und -Zonen:

  • 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

Sie können den aktuellen DEBIAN_IMAGE_NAME abrufen, indem Sie den folgenden gcloud-Befehl ausführen:

gcloud compute images list \
 --filter="family=debian-10"

Erstellen Sie jetzt vier Backend-VMs. Stellen Sie dazu vier POST-Anfragen an die Methode instances.insert:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
 "name": "VM-NAME",
 "tags": {
   "items": [
     "allow-health-check",
     "allow-ssh"
   ]
 },
 "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/[ZONE]/machineTypes/e2-standard-2",
 "canIpForward": false,
 "networkInterfaces": [
   {
     "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
     "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
     "accessConfigs": [
       {
         "type": "ONE_TO_ONE_NAT",
         "name": "external-nat",
         "networkTier": "PREMIUM"
       }
     ]
   }
 ],
 "disks": [
   {
     "type": "PERSISTENT",
     "boot": true,
     "mode": "READ_WRITE",
     "autoDelete": true,
     "deviceName": "VM-NAME",
     "initializeParams": {
       "sourceImage": "projects/debian-cloud/global/images/debian-image-name",
       "diskType": "projects/PROJECT_ID/zones/zone/diskTypes/pd-standard",
       "diskSizeGb": "10"
     }
   }
 ],
 "metadata": {
   "items": [
     {
       "key": "startup-script",
       "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nfile_ports=\"/etc/apache2/ports.conf\"\nfile_http_site=\"/etc/apache2/sites-available/000-default.conf\"\nfile_https_site=\"/etc/apache2/sites-available/default-ssl.conf\"\nhttp_listen_prts=\"Listen 80\\nListen 8008\\nListen 8080\\nListen 8088\"\nhttp_vh_prts=\"*:80 *:8008 *:8080 *:8088\"\nhttps_listen_prts=\"Listen 443\\nListen 8443\"\nhttps_vh_prts=\"*:443 *:8443\"\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nprt_conf=\"$(cat \"$file_ports\")\"\nprt_conf_2=\"$(echo \"$prt_conf\" | sed \"s|Listen 80|${http_listen_prts}|\")\"\nprt_conf=\"$(echo \"$prt_conf_2\" | sed \"s|Listen 443|${https_listen_prts}|\")\"\necho \"$prt_conf\" | tee \"$file_ports\"\nhttp_site_conf=\"$(cat \"$file_http_site\")\"\nhttp_site_conf_2=\"$(echo \"$http_site_conf\" | sed \"s|*:80|${http_vh_prts}|\")\"\necho \"$http_site_conf_2\" | tee \"$file_http_site\"\nhttps_site_conf=\"$(cat \"$file_https_site\")\"\nhttps_site_conf_2=\"$(echo \"$https_site_conf\" | sed \"s|_default_:443|${https_vh_prts}|\")\"\necho \"$https_site_conf_2\" | tee \"$file_https_site\"\nsystemctl restart apache2"
     }
   ]
 },
 "scheduling": {
   "preemptible": false
 },
 "deletionProtection": false
}

Erstellen Sie nun zwei Instanzgruppen. Stellen Sie dazu eine POST-Anfrage an die Methode instanceGroups.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups

{
 "name": "ig-a",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups

{
 "name": "ig-c",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}

Fügen Sie jeder Instanzgruppe Instanzen hinzu. Stellen Sie dazu eine POST-Anfrage an die Methode instanceGroups.addInstances.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a/addInstances

{
 "instances": [
   {
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a1",
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a2"
   }
 ]
}
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups/ig-c/addInstances

{
 "instances": [
   {
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c1",
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c2"
   }
 ]
}

Load-Balancer-Komponenten konfigurieren

In diesen Schritten konfigurieren Sie alle Komponenten für den internen Passthrough-Network Load Balancer. Zuerst konfigurieren Sie die Systemdiagnose und den Backend-Dienst und danach die Frontend-Komponenten:

  • Systemdiagnose: In diesem Beispiel wird eine HTTP-Systemdiagnose verwendet, die lediglich auf die HTTP-Antwort 200 (OK) prüft. Weitere Informationen finden Sie im Abschnitt "Systemdiagnose" der Übersicht über den internen Passthrough-Network Load Balancer.

  • Backend-Dienst: Da der HTTP-Traffic über den internen Load-Balancer weitergeleitet werden muss, müssen Sie TCP und nicht UDP verwenden.

  • Weiterleitungsregel: Dieses Beispiel erstellt eine einzelne interne Weiterleitungsregel.

  • Interne IP-Adresse: In diesem Beispiel geben Sie beim Erstellen der Weiterleitungsregel eine interne IP-Adresse (10.1.2.99) an.

Console

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

    Load-Balancing aufrufen

  2. Klicken Sie auf Load-Balancer erstellen.

  3. Klicken Sie auf der Karte Network-Load-Balancer (TCP/SSL) auf Konfiguration starten.
  4. Wählen Sie unter Internet oder nur intern die Option Nur zwischen meinen VMs aus.

  5. Wählen Sie für Load-Balancer-Typ die Option Pass-Through aus.

  6. Klicken Sie auf Weiter.

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

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

Back-Ends konfigurieren

  1. Klicken Sie auf Backend-Konfiguration.
  2. Zur Verarbeitung von nur IPv4-Traffic im Abschnitt Neues Backend im Bereich Backends, wählen Sie IP-Stack-Typ als IPv4 (Einzel-Stack) aus.
  3. Wählen Sie unter Instanzgruppe die Instanzgruppe ig-c aus und klicken Sie auf Fertig.
  4. Klicken Sie auf Backend hinzufügen und wiederholen Sie diesen Schritt, um ig-a hinzuzufügen.
  5. Wählen Sie in der Liste Systemdiagnose die Option Systemdiagnose erstellen aus, geben Sie die folgenden Informationen ein und klicken Sie auf Speichern.

    • Name: hc-http-80
    • Protokoll: HTTP
    • Port: 80
    • Proxyprotokoll: NONE
    • Anfragepfad: /

    Wenn Sie den Load-Balancer mit der Google Cloud Console erstellen, ist die Systemdiagnose global. Wenn Sie eine regionale Systemdiagnose erstellen möchten, verwenden Sie gcloud oder die API.

  6. Überprüfen Sie, bevor Sie fortfahren, ob sich neben Backend-Konfiguration ein blaues Häkchen befindet.

Frontend konfigurieren

  1. Klicken Sie auf Frontend-Konfiguration.
  2. In the New Frontend IP and port section, do the following:
    1. Geben Sie für Name fr-ilb ein.
    2. Wählen Sie für Subnetzwerk die Option lb-subnet aus.
    3. Wählen Sie im Abschnitt Interner IP-Zweck in der Liste IP-Adresse IP-Adresse erstellen aus, geben Sie die folgenden Informationen ein und klicken Sie dann auf Reservieren.
      • Name: ip-ilb
      • IP-Version: IPv4.
      • Statische IP-Adresse: Selbst auswählen
      • Benutzerdefinierte IP-Adresse: 10.1.2.99
    4. Wählen Sie für Ports Mehrere aus und geben Sie dann in Nummern portieren 80, 8008, 8080 und 8088 aus.
    5. Überprüfen Sie, bevor Sie fortfahren, ob sich neben der Backend-Konfiguration ein blaues Häkchen befindet.

Konfiguration prüfen

  1. Klicken Sie auf Prüfen und abschließen.
  2. Prüfen Sie die Konfigurationseinstellungen des Load-Balancers.
  3. Optional: Klicken Sie auf Entsprechender Code, um die REST API-Anfrage aufzurufen, die zum Erstellen des Load-Balancers verwendet wird.
  4. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie eine 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 für HTTP-Traffic:

    gcloud compute backend-services create be-ilb \
        --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 be-ilb \
        --region=us-west1 \
        --instance-group=ig-a \
        --instance-group-zone=us-west1-a
    gcloud compute backend-services add-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-c \
        --instance-group-zone=us-west1-c
    
  4. Erstellen Sie eine Weiterleitungsregel für den Backend-Dienst. Wenn Sie die Weiterleitungsregel erstellen, geben Sie für die interne IP-Adresse im Subnetz den Wert 10.1.2.99 an.

    gcloud compute forwarding-rules create fr-ilb \
        --region=us-west1 \
        --load-balancing-scheme=internal \
        --network=lb-network \
        --subnet=lb-subnet \
        --address=10.1.2.99 \
        --ip-protocol=TCP \
        --ports=80,8008,8080,8088 \
        --backend-service=be-ilb \
        --backend-service-region=us-west1
    

API

Erstellen Sie die Systemdiagnose. Stellen Sie dazu eine POST-Anfrage an die Methode regionHealthChecks.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/regionHealthChecks

{
"name": "hc-http-80",
"type": "HTTP",
"httpHealthCheck": {
  "port": 80
}
}

Erstellen Sie den regionalen Backend-Dienst. Stellen Sie dazu eine POST-Anfrage an die Methode regionBackendServices.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices

{
"name": "be-ilb",
"backends": [
  {
    "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a",
    "balancingMode": "CONNECTION"
  },
  {
    "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups/ig-c",
    "balancingMode": "CONNECTION"
  }
],
"healthChecks": [
  "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80"
],
"loadBalancingScheme": "INTERNAL",
"connectionDraining": {
  "drainingTimeoutSec": 0
 }
}

Erstellen Sie die Weiterleitungsregel. Stellen Sie dazu eine POST-Anfrage an die Methode forwardingRules.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules

{
"name": "fr-ilb",
"IPAddress": "10.1.2.99",
"IPProtocol": "TCP",
"ports": [
  "80", "8008", "8080", "8088"
],
"loadBalancingScheme": "INTERNAL",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb",
"networkTier": "PREMIUM"
}

Load-Balancer testen

Diese Tests zeigen Ihnen, wie Sie die Konfiguration des Load-Balancers validieren und das erwartete Verhalten ermitteln können.

Client-VM erstellen

In diesem Beispiel wird eine Client-VM (vm-client) erstellt, die sich in derselben Region wie die Backend-VMs (Server) befindet. Der Client validiert die Konfiguration des Load-Balancers und demonstriert das erwartete Verhalten, wie im Abschnitt "Test" beschrieben.

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. 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
      • Subnetz: lb-subnet
  8. Klicken Sie auf Erstellen.

gcloud

Die Client-VM kann sich in einer beliebigen Zone in derselben Region wie der Load-Balancer befinden. Außerdem kann sie jedes Subnetz in dieser Region verwenden. 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-10 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=lb-subnet

API

Stellen Sie eine POST-Anfrage an die Methode instances.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances

{
 "name": "vm-client",
 "tags": {
   "items": [
     "allow-ssh"
   ]
 },
 "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2",
 "canIpForward": false,
 "networkInterfaces": [
   {
     "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
     "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
     "accessConfigs": [
       {
         "type": "ONE_TO_ONE_NAT",
         "name": "external-nat",
         "networkTier": "PREMIUM"
       }
     ]
   }
 ],
 "disks": [
   {
     "type": "PERSISTENT",
     "boot": true,
     "mode": "READ_WRITE",
     "autoDelete": true,
     "deviceName": "vm-client",
     "initializeParams": {
       "sourceImage": "projects/debian-cloud/global/images/debian-image-name",
       "diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard",
       "diskSizeGb": "10"
     }
   }
 ],
 "scheduling": {
   "preemptible": false
 },
 "deletionProtection": false
}

Verbindung von Client-VM 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 zwischen den vier Back-End-VMs verteilt, da keine Sitzungsaffinität konfiguriert wurde.

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

    gcloud compute ssh vm-client --zone=us-west1-a
    
  2. Stellen Sie mit curl eine Webanfrage an den Load-Balancer, um dessen IP-Adresse zu kontaktieren. Wiederholen Sie die Anfrage. So können Sie sehen, dass Antworten von verschiedenen Back-End-VMs stammen. Der Name der VM, die die Antwort generiert, wird aufgrund des Inhalts von /var/www/html/index.html auf jeder Backend-VM im Text der HTML-Antwort angezeigt. Die erwarteten Antworten sehen beispielsweise so aus: Page served from: vm-a1 und Page served from: vm-a2.

    curl http://10.1.2.99
    

    Die Weiterleitungsregel ist für die Bereitstellung der Ports 80, 8008, 8080 und 8088 konfiguriert. Um Traffic an diese anderen Ports zu senden, hängen Sie nach der IP-Adresse einen Doppelpunkt (:) und die Portnummer an:

    curl http://10.1.2.99:8008
    

    Wenn Sie der internen Weiterleitungsregel ein Dienstlabel hinzufügen, können Sie mithilfe des internen DNS den Load-Balancer kontaktieren. Verwenden Sie dazu dessen Dienstnamen.

      curl http://web-test.fr-ilb.il4.us-west1.lb.PROJECT_ID.internal
      

IP-Adresse des Load-Balancers pingen

Dieser Test zeigt ein erwartetes Verhalten: Sie können die IP-Adresse des Load-Balancers nicht per Ping kontaktieren. Dies liegt daran, dass interne Passthrough-Netzwerk-Load-Balancer durch virtuelle Netzwerkprogrammierung implementiert werden – sie sind keine separaten Geräte.

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

    gcloud compute ssh vm-client --zone=us-west1-a
    
  2. Versuchen Sie, die IP-Adresse des Load-Balancers per Ping zu kontaktieren. Sie erhalten keine Antwort und der ping-Befehl überschreitet in diesem Beispiel nach 10 Sekunden des Zeitlimit.

    timeout 10 ping 10.1.2.99
    

Anfragen von VMs mit Load-Balancing senden

Dieser Test zeigt: Wenn eine Backend-VM Pakete an die IP-Adresse der Weiterleitungsregel des Load-Balancers sendet, werden die Anfragen an sich selbst weitergeleitet. Dies ist unabhängig vom Status der Systemdiagnose der Backend-VM.

Interne Passthrough-Netzwerk-Load-Balancer werden mithilfe einer virtuellen Netzwerkprogrammierung und VM-Konfiguration im Gastbetriebssystem implementiert. Auf Linux-VMs erstellt die Gastumgebung eine Route für die IP-Adresse des Load-Balancers in der lokalen Routingtabelle des Betriebssystems.

Da sich diese lokale Route innerhalb der VM selbst (keine Route im VPC-Netzwerk) befindet, werden an die IP-Adresse des Load-Balancers gesendete Pakete nicht vom VPC-Netzwerk verarbeitet. Stattdessen verbleiben Pakete, die an die IP-Adresse des Load-Balancers gesendet werden, im Betriebssystem der VM.

  1. Stellen Sie eine Verbindung zu einer Backend-VM wie vm-a1 her:

    gcloud compute ssh vm-a1 --zone=us-west1-a
    
  2. Stellen Sie mit curl eine Webanfrage an den Load-Balancer (nach IP-Adresse oder Dienstname). Die Antwort stammt von derselben Backend-VM, die die Anfrage stellt. Wiederkehrende Anfragen werden auf die gleiche Weise beantwortet. Die erwartete Antwort beim Testen von vm-a1 lautet immer: Page served from: vm-a1.

    curl http://10.1.2.99
    
  3. Prüfen Sie die lokale Routingtabelle und suchen Sie nach einem Ziel, das mit der IP-Adresse des Load-Balancers selbst übereinstimmt: 10.1.2.99. Diese Route ist notwendiger Bestandteil eines internen Passthrough-Netzwerk-Load-Balancers. Zugleich zeigt sie, warum eine Anfrage von einer VM hinter dem Load-Balancer immer von derselben VM beantwortet wird.

    ip route show table local | grep 10.1.2.99
    

Wenn eine Backend-VM für einen internen Passthrough-Netzwerk-Load-Balancer Pakete an die IP-Adresse der Weiterleitungsregel des Load-Balancers sendet, werden die Pakete immer an die VM weitergeleitet, von der die Anfrage stammt. Dies liegt daran, dass ein interner Passthrough-Netzwerk-Load-Balancer ein Pass-Through-Load-Balancer ist und durch Erstellen einer lokalen Route für die IP-Adresse des Load-Balancers im Gastbetriebssystem der VM implementiert wird, wie in diesem Abschnitt angegeben. Wenn Sie einen Anwendungsfall haben, bei dem Backends mit Load-Balancing TCP-Traffic an die IP-Adresse des Load-Balancers senden müssen, und der Traffic verteilt werden soll, als stamme er von einem Backend ohne Load-Balancing, sollten Sie stattdessen eventuell einen internen regionalen Proxy-Netzwerk-Load-Balancer verwenden.

Weitere Informationen finden Sie unter Interne Passthrough-Netzwerk-Load-Balancer als nächste Hops.

Load-Balancer mit Dual-Stack-Subnetzen einrichten

In dieser Anleitung erfahren Sie, wie Sie einen internen Passthrough-Netzwerk-Load-Balancer konfigurieren und testen. Die Schritte in diesem Abschnitt zeigen, wie Sie folgende Elemente konfigurieren:

  1. In dem Beispiel auf dieser Seite wird ein VPC-Netzwerk im benutzerdefinierten Modus mit dem Namen lb-network-dual-stack verwendet. Für IPv6-Traffic ist jedoch ein Subnetz im benutzerdefinierten Modus erforderlich.
  2. Ein Dual-Stack-Subnetz (stack-type ist auf IPv4_IPv6 gesetzt), das für IPv6-Traffic erforderlich ist. Wenn Sie ein Dual-Stack-Subnetz in einem VPC-Netzwerk im benutzerdefinierten Modus erstellen, wählen Sie einen IPv6-Zugriffstyp für das Subnetz aus. In diesem Beispiel setzen wir den Parameter ipv6-access-type des Subnetzes auf INTERNAL. Dies bedeutet, dass neuen VMs in diesem Subnetz sowohl interne IPv4- als auch interne IPv6-Adressen zugewiesen werden können. Eine Anleitung finden Sie in der VPC-Dokumentation zum Hinzufügen eines Dual-Stack-Subnetzes.
  3. Firewall-Regeln, die eingehende Verbindung zu Backend-VMs ermöglichen
  4. The backend instance group, which is located in the following region and subnet for this example:
    • Region: us-west1
    • Subnetz: lb-subnet, mit primärem IPv4-Adressbereich 10.1.2.0/24. Obwohl Sie wählen, welcher IPv4-Adressbereich im Subnetz konfiguriert werden soll, wird der IPv6-Adressbereich automatisch zugewiesen. Google stellt einen (/64) IPv6 CIDR-Block mit fester Größe bereit.
  5. Vier Backend-VMs mit Dual-Stack: zwei VMs in einer nicht verwalteten Instanzgruppe in Zone us-west1-a und zwei VMs in einer nicht verwalteten Instanzgruppe in Zone us-west1-c. Zur Veranschaulichung des globalen Zugriffs wird in diesem Beispiel eine zweite Testclient-VM in einer anderen Region und einem anderen Subnetz erstellt:
    • Region: europe-west1
    • Subnetz: europe-subnet, mit primärem IP-Adressbereich 10.3.4.0/24
  6. Eine Client-VM zum Testen von Verbindungen.
  7. Die folgenden Komponenten eines internen Passthrough-Netzwerk-Load-Balancers:
    • Eine Systemdiagnose für den Backend-Dienst.
    • Einen internen Backend-Dienst in der Region us-west1, um die Verteilung von Verbindungen zu den zwei zonalen Instanzgruppen zu verwalten.
    • Zwei interne Weiterleitungsregeln für das Frontend des Load-Balancers.

Im folgenden Diagramm wird die Architektur für dieses Beispiel dargestellt:

Ein Dual-Stack-VPC-Netzwerk mit einem Backend-Dienst zur Verwaltung der Verbindungsverteilung auf zwei zonale Instanzgruppen.
Beispielkonfiguration für internen Passthrough-Network Load Balancer (zum Vergrößern klicken)

Netzwerk, Region und Subnetz konfigurieren

Der auf dieser Seite beschriebene interne Passthrough-Netzwerk-Load-Balancer wird in einem VPC-Netzwerk im benutzerdefinierten Modus mit dem Namen lb-network-dual-stack 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-dual-stack ein.

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

    1. Wählen Sie für Interner VPC-Netzwerk-IPv6-ULA-Bereich den Wert Aktiviert aus.
    2. Wählen Sie unter Internen IPv6-Bereich zuweisen die Option Automatisch oder Manuell aus.
  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
    • Region: us-west1
    • IP-Stack-Typ: IPv4 und IPv6 (Dual-Stack)
    • IPv4-Bereich: 10.1.2.0/24.
    • IPv6-Zugriffstyp: Intern
  7. Klicken Sie auf Fertig.

  8. Klicken Sie auf Subnetz hinzufügen und geben Sie die folgenden Informationen ein:

    • Name: europe-subnet
    • Region: europe-west1
    • IP-Stack-Typ: IPv4 (Einzel-Stack)
    • IP-Adressbereich: 10.3.4.0/24
  9. Klicken Sie auf Fertig.

  10. 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 --enable-ula-internal-ipv6-Flag, um interne IPv6-Bereiche in allen Subnetzen dieses Netzwerks zu konfigurieren. Mit dieser Option wird ein ULA-Präfix /48 aus dem Bereich fd20::/20 zugewiesen, der von Google Cloud für interne IPv6-Subnetzbereiche verwendet wird. Verwenden Sie das Flag --internal-ipv6-range, um einen Bereich anzugeben, wenn Sie den zugewiesenen IPv6-Bereich /48 auswählen möchten.

    gcloud compute networks create lb-network-dual-stack \
     --subnet-mode=custom \
     --enable-ula-internal-ipv6 \
     --internal-ipv6-range=ULA_IPV6_RANGE \
     --bgp-routing-mode=regional
    

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

  2. Erstellen Sie im Netzwerk NETWORK ein Subnetz für Back-Ends in der Region us-west1 und ein anderes Subnetz zum Testen des globalen Zugriffs in der Region europe-west1.

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

    gcloud compute networks subnets create lb-subnet \
     --network=lb-network-dual-stack \
     --range=10.1.2.0/24 \
     --region=us-west1 \
     --stack-type=IPV4_IPV6 \
     --ipv6-access-type=INTERNAL
    
    gcloud compute networks subnets create europe-subnet \
     --network=lb-network-dual-stack \
     --range=10.3.4.0/24 \
     --region=europe-west1 \
     --stack-type=IPV4_IPV6 \
     --ipv6-access-type=INTERNAL
    

API

Erstellen Sie ein neues VPC-Netzwerk im benutzerdefinierten Modus:

Zum Konfigurieren interner IPv6-Bereiche in allen Subnetzen dieses Netzwerks legen Sie enableUlaInternalIpv6 auf "true" fest. Mit dieser Option wird der Bereich /48 aus dem Bereich fd20::/20 zugewiesen, der von Google für interne IPv6-Subnetzbereiche verwendet wird. Verwenden Sie das Feld internalIpv6Range, um einen Bereich anzugeben, wenn Sie auswählen möchten, welcher /48 IPv6-Bereich zugewiesen ist.

 POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks
 {
   "autoCreateSubnetworks": false,
   "name": "lb-network-dual-stack",
   "mtu": MTU,
   "enableUlaInternalIpv6": true,
   "internalIpv6Range": "ULA_IPV6_RANGE",
   "routingConfig": {
   "routingMode": "DYNAMIC_ROUTING_MODE"
  }
 }
 

Dabei gilt:

  • PROJECT_ID: die ID des Projekts, in dem das VPC-Netzwerk erstellt wird.
  • MTU ist die maximale Übertragungseinheit des Netzwerks MTU kann entweder 1460 (Standardeinstellung) oder 1500 sein. Lesen Sie die maximale Übertragungseinheit, bevor Sie die MTU auf 1500 setzen.
  • ULA_IPV6_RANGE: ein /48-Präfix aus dem Bereich fd20::/20, das von Google für interne IPv6-Subnetzbereiche verwendet wird Wenn Sie keinen Wert für internalIpv6Range angeben, wählt Google das Präfix /48 für das Netzwerk aus.
  • DYNAMIC_ROUTING_MODE: entweder global oder regional, um das Route Advertisement-Verhalten von Cloud Routern im Netzwerk zu steuern. Weitere Informationen finden Sie unter Modus für dynamisches Routing.

    Weitere Informationen finden Sie in der Methode networks.insert.

Stellen Sie zwei POST-Anfragen an die Methode subnetworks.insert.

 POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
 {
   "ipCidrRange": "10.1.2.0/24",
   "network": "lb-network-dual-stack",
   "name": "lb-subnet"
   "stackType": IPV4_IPV6,
   "ipv6AccessType": Internal
 }
 

 POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
 {
   "ipCidrRange": "10.3.4.0/24",
   "network": "lb-network-dual-stack",
   "name": "europe-subnet"
   "stackType": IPV4_IPV6,
   "ipv6AccessType": Internal
 }
 

Firewallregeln konfigurieren

In diesem Beispiel werden die folgenden Firewallregeln verwendet:

  • fw-allow-lb-access: Eine Eingangsregel, die für alle Ziele im VPC-Netzwerk gilt und Traffic von Quellen in den Bereichen 10.1.2.0/24 und 10.3.4.0/24 zulässt. Diese Regel lässt eingehenden Traffic von jedem Client zu, der sich in einem der beiden Subnetze befindet. Später können Sie den globalen Zugriff konfigurieren und testen.

  • fw-allow-lb-access-ipv6: Eine Regel für eingehenden Traffic, die für alle Ziele im VPC-Netzwerk gilt und Traffic von Quellen im IPv6-Bereich im Subnetz zulässt. Diese Regel lässt eingehenden IPv6-Traffic von jedem Client zu, der sich in einem der beiden Subnetze befindet. Später können Sie den globalen Zugriff konfigurieren und testen.

  • fw-allow-ssh: Eine Regel für eingehenden Traffic, die für die Instanzen mit Load-Balancing gilt und 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-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 Instanzen zu identifizieren, auf die sie angewendet werden soll.

  • fw-allow-health-check-ipv6: 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 (2600:2d00:1:b029::/64). In diesem Beispiel wird das Ziel-Tag allow-health-check-ipv6 verwendet, um die Instanzen zu identifizieren, auf die sie angewendet werden soll.

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

Console

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

    Zu den Firewall-Richtlinien

  2. Klicken Sie zum Erstellen der Regel, die Subnetztraffic zulässt, auf Firewallregel erstellen und geben Sie die folgenden Informationen ein:

    • Name: fw-allow-lb-access
    • Netzwerk: lb-network-dual-stack
    • Priorität: 1000
    • Trafficrichtung: Eingehend
    • Aktion bei Übereinstimmung: Zulassen
    • Ziele: All instances in the network.
    • Quellfilter: IPv4-Bereiche.
    • IPv4-Quellbereiche: 10.1.2.0/24 und 10.3.4.0/24
    • 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 IPv6-Subnetz-Traffic zuzulassen:

    • Name: fw-allow-lb-access-ipv6
    • Netzwerk: lb-network-dual-stack
    • Priorität: 1000
    • Trafficrichtung: Eingehend
    • Aktion bei Übereinstimmung: Zulassen
    • Ziele: All instances in the network.
    • Quellfilter: IPv6-Bereiche
    • IPv6-Quellbereiche: IPV6_ADDRESS zugewiesen in lb-subnet
    • Protokolle und Ports: Alle zulassen
  5. Klicken Sie auf Erstellen.

  6. 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-dual-stack
    • Priorität: 1000
    • Trafficrichtung: Eingehend
    • Aktion bei Übereinstimmung: Zulassen
    • Ziele: Specified target 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 in Ports ein:
  7. Klicken Sie auf Erstellen.

  8. 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
    • Netzwerk: lb-network-dual-stack
    • Priorität: 1000
    • Trafficrichtung: Eingehend
    • Aktion bei Übereinstimmung: Zulassen
    • Ziele: Specified target tags
    • Zieltags: allow-health-check-ipv6
    • Quellfilter: IPv6-Bereiche
    • Quell-IPv6-Bereiche: 2600:2d00:1:b029::/64
    • Protokolle und Ports: Alle zulassen
  9. Klicken Sie auf Erstellen.

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

    • Name: fw-allow-health-check
    • Netzwerk: lb-network-dual-stack
    • Priorität: 1000
    • Trafficrichtung: Eingehend
    • Aktion bei Übereinstimmung: Zulassen
    • Ziele: Specified target tags
    • Zieltags: allow-health-check
    • Quellfilter: IPv4-Bereiche.
    • IPv4-Quellbereiche: 130.211.0.0/22 und 35.191.0.0/16
    • Protokolle und Ports: Alle zulassen
  11. Klicken Sie auf Erstellen.

gcloud

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

    gcloud compute firewall-rules create fw-allow-lb-access \
        --network=lb-network-dual-stack \
        --action=allow \
        --direction=ingress \
        --source-ranges=10.1.2.0/24,10.3.4.0/24 \
        --rules=all
    
  2. Erstellen Sie die Firewallregel fw-allow-lb-access-ipv6, um die Kommunikation mit dem Subnetz zuzulassen:

    gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \
        --network=lb-network-dual-stack \
        --action=allow \
        --direction=ingress \
        --source-ranges=IPV6_ADDRESS \
        --rules=all
    

    Ersetzen Sie IPV6_ADDRESS durch die in lb-subnet zugewiesene IPv6-Adresse.

  3. 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-dual-stack \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  4. Erstellen Sie die Regel fw-allow-health-check-ipv6, um Google Cloud IPv6-Systemdiagnosen zuzulassen.

    gcloud compute firewall-rules create fw-allow-health-check-ipv6 \
        --network=lb-network-dual-stack \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check-ipv6 \
        --source-ranges=2600:2d00:1:b029::/64 \
        --rules=tcp,udp
    
  5. Erstellen Sie die Regel fw-allow-health-check, um Google Cloud-Systemdiagnosen zuzulassen.

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=lb-network-dual-stack \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp,udp,icmp
    

API

  1. Erstellen Sie die Firewallregel fw-allow-lb-access. Stellen Sie dazu eine POST-Anfrage an die Methode firewalls.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
    
    {
    "name": "fw-allow-lb-access",
    "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network-dual-stack",
    "priority": 1000,
    "sourceRanges": [
      "10.1.2.0/24", "10.3.4.0/24"
    ],
    "allowed": [
      {
        "IPProtocol": "tcp"
      },
      {
        "IPProtocol": "udp"
      },
      {
        "IPProtocol": "icmp"
      }
    ],
    "direction": "INGRESS",
    "logConfig": {
      "enable": false
    },
    "disabled": false
    }
    
  2. Erstellen Sie die Firewallregel fw-allow-lb-access-ipv6. Stellen Sie dazu eine POST-Anfrage an die Methode firewalls.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
    
    {
     "name": "fw-allow-lb-access-ipv6",
     "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network-dual-stack",
     "priority": 1000,
     "sourceRanges": [
       "IPV6_ADDRESS"
     ],
     "allowed": [
       {
          "IPProtocol": "tcp"
        },
        {
          "IPProtocol": "udp"
        },
        {
          "IPProtocol": "icmp"
        }
     ],
     "direction": "INGRESS",
     "logConfig": {
        "enable": false
     },
     "disabled": false
    }
    

    Ersetzen Sie IPV6_ADDRESS durch die in lb-subnet zugewiesene IPv6-Adresse.

  3. Erstellen Sie die Firewallregel fw-allow-ssh. Stellen Sie dazu eine POST-Anfrage an die Methode firewalls.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
    
    {
    "name": "fw-allow-ssh",
         "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network-dual-stack",
    "priority": 1000,
    "sourceRanges": [
      "0.0.0.0/0"
    ],
    "targetTags": [
      "allow-ssh"
    ],
    "allowed": [
     {
       "IPProtocol": "tcp",
       "ports": [
         "22"
       ]
     }
    ],
    "direction": "INGRESS",
    "logConfig": {
     "enable": false
    },
    "disabled": false
    }
    
  4. Erstellen Sie die Firewallregel fw-allow-health-check-ipv6. Stellen Sie dazu eine POST-Anfrage an die Methode firewalls.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
    
    {
    "name": "fw-allow-health-check-ipv6",
    "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network-dual-stack",
    "priority": 1000,
    "sourceRanges": [
      "2600:2d00:1:b029::/64"
    ],
    "targetTags": [
      "allow-health-check-ipv6"
    ],
    "allowed": [
      {
        "IPProtocol": "tcp"
      },
      {
        "IPProtocol": "udp"
      }
    ],
    "direction": "INGRESS",
    "logConfig": {
      "enable": false
    },
    "disabled": false
    }
    
  5. Erstellen Sie die Firewallregel fw-allow-health-check. Stellen Sie dazu eine POST-Anfrage an die Methode firewalls.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
    
    {
    "name": "fw-allow-health-check",
    "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network-dual-stack",
    "priority": 1000,
    "sourceRanges": [
      "130.211.0.0/22",
      "35.191.0.0/16"
    ],
    "targetTags": [
      "allow-health-check"
    ],
    "allowed": [
      {
        "IPProtocol": "tcp"
      },
      {
        "IPProtocol": "udp"
      },
      {
        "IPProtocol": "icmp"
      }
    ],
    "direction": "INGRESS",
    "logConfig": {
      "enable": false
    },
    "disabled": false
    }
    

Backend-VMs und Instanzgruppen erstellen

In diesem Beispiel werden zwei nicht verwaltete Instanzgruppen mit jeweils zwei Backend-VMs (Server) 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 Backend-VMs wird Load-Balancing angewendet.

Zur Illustration dieses Beispiels und der zusätzlichen Konfigurationsoptionen führt jede der vier VMs einen Apache-Webserver aus, der die folgenden TCP-Ports überwacht: 80, 8008, 8080, 8088, 443 und 8443.

Jeder VM wird eine interne IP-Adresse im lb-subnet und eine sitzungsspezifische externe (öffentliche) IP-Adresse zugewiesen. Sie können die externen IP-Adressen später entfernen.

Externe IP-Adressen werden für die Backend-VMs nicht benötigt. Sie sind jedoch für dieses Beispiel nützlich, da sie den Backend-VMs ermöglichen, Apache aus dem Internet herunterzuladen, und die Herstellung einer Verbindung mit SSH erlauben.

Apache ist standardmäßig für die Bindung an eine beliebige IP-Adresse konfiguriert. Interne Passthrough-Netzwerk-Load-Balancer liefern Pakete aus und behalten dabei die Ziel-IP bei.

Achten Sie deshalb darauf, dass die auf den Backend-VMs ausgeführte Serversoftware die IP-Adresse der internen Weiterleitungsregel des Load-Balancers überwacht. Wenn Sie mehrere interne Weiterleitungsregeln konfigurieren, achten Sie darauf, dass die Software die jeweils zugewiesene interne IP-Adresse überwacht. Die Ziel-IP-Adresse eines Pakets, das ein interner Passthrough-Netzwerk-Load-Balancer an eine Backend-VM liefert, ist die interne IP-Adresse der Weiterleitungsregel.

Achten Sie darauf, dass der Stacktyp des Subnetzwerks mit dem Stacktyp der Instanzvorlagen übereinstimmt, die von den verwalteten Instanzgruppen verwendet werden. Das Subnetzwerk muss Dual-Stack sein, wenn die verwaltete Instanzgruppe eine Dual-Stack-Instanzvorlage verwendet.

Zur Vereinfachung der Anleitung führen diese Backend-VMs Debian GNU/Linux 10 aus.

Console

Backend-VMs erstellen

  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: 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 im Bereich Bootlaufwerk darauf, dass als Bootlaufwerk-Optionen das Betriebssystem Debian und die Version 10 (Buster) ausgewählt sind. 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 und allow-health-check-ipv6 ein.
    2. Wählen Sie für Netzwerkschnittstellen Folgendes aus:
      • Netzwerk: lb-network-dual-stack
      • Subnetz: lb-subnet
      • IP-Stack-Typ: IPv4 und IPv6 (Dual-Stack)
      • Primäre interne IPv4-Adresse: flüchtig (automatisch)
      • Externe IPv4-Adresse: sitzungsspezifisch
    3. Klicken Sie auf Verwaltung und geben Sie im Feld Startskript das folgende Skript ein. Der Skriptinhalt ist für alle vier VMs identisch.

      #! /bin/bash
      if [ -f /etc/startup_script_completed ]; then
      exit 0
      fi
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      file_ports="/etc/apache2/ports.conf"
      file_http_site="/etc/apache2/sites-available/000-default.conf"
      file_https_site="/etc/apache2/sites-available/default-ssl.conf"
      http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088"
      http_vh_prts="*:80 *:8008 *:8080 *:8088"
      https_listen_prts="Listen 443\nListen 8443"
      https_vh_prts="*:443 *:8443"
      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
      prt_conf="$(cat "$file_ports")"
      prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")"
      prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")"
      echo "$prt_conf" | tee "$file_ports"
      http_site_conf="$(cat "$file_http_site")"
      http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")"
      echo "$http_site_conf_2" | tee "$file_http_site"
      https_site_conf="$(cat "$file_https_site")"
      https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")"
      echo "$https_site_conf_2" | tee "$file_https_site"
      systemctl restart apache2
      touch /etc/startup_script_completed
      
  9. 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-dual-stack aus.

  8. Wählen Sie für Subnetzwerk die Option lb-subnet 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 diese vier Kombinationen für [VM-NAME] und [ZONE]. Der Skriptinhalt ist für alle vier VMs identisch.

    • 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-10 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check-ipv6 \
        --subnet=lb-subnet \
        --stack-type=IPV4_IPV6 \
        --metadata=startup-script='#! /bin/bash
      if [ -f /etc/startup_script_completed ]; then
      exit 0
      fi
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      file_ports="/etc/apache2/ports.conf"
      file_http_site="/etc/apache2/sites-available/000-default.conf"
      file_https_site="/etc/apache2/sites-available/default-ssl.conf"
      http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088"
      http_vh_prts="*:80 *:8008 *:8080 *:8088"
      https_listen_prts="Listen 443\nListen 8443"
      https_vh_prts="*:443 *:8443"
      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
      prt_conf="$(cat "$file_ports")"
      prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")"
      prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")"
      echo "$prt_conf" | tee "$file_ports"
      http_site_conf="$(cat "$file_http_site")"
      http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")"
      echo "$http_site_conf_2" | tee "$file_http_site"
      https_site_conf="$(cat "$file_https_site")"
      https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")"
      echo "$https_site_conf_2" | tee "$file_https_site"
      systemctl restart apache2
      touch /etc/startup_script_completed'
      
  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
    

API

Verwenden Sie für die vier VMs die folgenden VM-Namen und -Zonen:

  • 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

Um den aktuellen DEBIAN_IMAGE_NAME abzurufen führen Sie folgenden gcloud-Befehl aus:

gcloud compute images list \
 --filter="family=debian-10"

Erstellen Sie jetzt vier Backend-VMs. Stellen Sie dazu vier POST-Anfragen an die Methode instances.insert:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
 "name": "VM-NAME",
 "tags": {
   "items": [
     "allow-health-check-ipv6",
     "allow-ssh"
   ]
 },
 "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/[ZONE]/machineTypes/e2-standard-2",
 "canIpForward": false,
 "networkInterfaces": [
   {
     "stackType": "IPV4_IPV6",
     "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network-dual-stack",
     "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
     "accessConfigs": [
       {
         "type": "ONE_TO_ONE_NAT",
         "name": "external-nat",
         "networkTier": "PREMIUM"
       }
     ]
   }
 ],
 "disks": [
   {
     "type": "PERSISTENT",
     "boot": true,
     "mode": "READ_WRITE",
     "autoDelete": true,
     "deviceName": "VM-NAME",
     "initializeParams": {
       "sourceImage": "projects/debian-cloud/global/images/debian-image-name",
       "diskType": "projects/PROJECT_ID/zones/zone/diskTypes/pd-standard",
       "diskSizeGb": "10"
     }
   }
 ],
 "metadata": {
   "items": [
     {
       "key": "startup-script",
       "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nfile_ports=\"/etc/apache2/ports.conf\"\nfile_http_site=\"/etc/apache2/sites-available/000-default.conf\"\nfile_https_site=\"/etc/apache2/sites-available/default-ssl.conf\"\nhttp_listen_prts=\"Listen 80\\nListen 8008\\nListen 8080\\nListen 8088\"\nhttp_vh_prts=\"*:80 *:8008 *:8080 *:8088\"\nhttps_listen_prts=\"Listen 443\\nListen 8443\"\nhttps_vh_prts=\"*:443 *:8443\"\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://169.254.169.254/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nprt_conf=\"$(cat \"$file_ports\")\"\nprt_conf_2=\"$(echo \"$prt_conf\" | sed \"s|Listen 80|${http_listen_prts}|\")\"\nprt_conf=\"$(echo \"$prt_conf_2\" | sed \"s|Listen 443|${https_listen_prts}|\")\"\necho \"$prt_conf\" | tee \"$file_ports\"\nhttp_site_conf=\"$(cat \"$file_http_site\")\"\nhttp_site_conf_2=\"$(echo \"$http_site_conf\" | sed \"s|*:80|${http_vh_prts}|\")\"\necho \"$http_site_conf_2\" | tee \"$file_http_site\"\nhttps_site_conf=\"$(cat \"$file_https_site\")\"\nhttps_site_conf_2=\"$(echo \"$https_site_conf\" | sed \"s|_default_:443|${https_vh_prts}|\")\"\necho \"$https_site_conf_2\" | tee \"$file_https_site\"\nsystemctl restart apache2"
     }
   ]
 },
 "scheduling": {
   "preemptible": false
 },
 "deletionProtection": false
}

Erstellen Sie nun zwei Instanzgruppen. Stellen Sie dazu eine POST-Anfrage an die Methode instanceGroups.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups

{
 "name": "ig-a",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network-dual-stack",
 "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups

{
 "name": "ig-c",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network-dual-stack",
 "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}

Fügen Sie jeder Instanzgruppe Instanzen hinzu. Stellen Sie dazu eine POST-Anfrage an die Methode instanceGroups.addInstances.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a/addInstances

{
 "instances": [
   {
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a1",
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a2"
   }
 ]
}
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups/ig-c/addInstances

{
 "instances": [
   {
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c1",
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c2"
   }
 ]
}

Load-Balancer-Komponenten konfigurieren

In diesen Schritten konfigurieren Sie alle Komponenten für den internen Passthrough-Network Load Balancer. Zuerst konfigurieren Sie die Systemdiagnose und den Backend-Dienst und danach die Frontend-Komponenten:

  • Systemdiagnose: In diesem Beispiel wird eine HTTP-Systemdiagnose verwendet, die lediglich auf die HTTP-Antwort 200 (OK) prüft. Weitere Informationen finden Sie im Abschnitt „Systemdiagnose“ der Übersicht über den internen Passthrough-Netzwerk-Load-Balancer.

  • Backend-Dienst: Da der HTTP-Traffic über den internen Load-Balancer weitergeleitet werden muss, müssen Sie TCP und nicht UDP verwenden.

  • Weiterleitungsregel: Dieses Beispiel erstellt zwei interne Weiterleitungsregeln für IPv4- und IPv6-Traffic.

  • Interne IP-Adresse: In diesem Beispiel geben Sie beim Erstellen der IPv4-Weiterleitungsregel eine interne IP-Adresse (10.1.2.99) an. Weitere Informationen finden Sie unter Interne IP-Adresse. Obwohl Sie auswählen, welche IPv4-Adresse konfiguriert wird, wird die IPv6-Adresse automatisch zugewiesen.

Console

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

    Load-Balancing aufrufen

  2. Klicken Sie auf Load-Balancer erstellen.

  3. Klicken Sie auf der Karte Network-Load-Balancer (TCP/SSL) auf Konfiguration starten.
  4. Wählen Sie unter Internet oder nur intern die Option Nur zwischen meinen VMs aus.

  5. Klicken Sie auf Weiter.

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

    • Name des Load-Balancers: be-ilb
    • Region: us-west1
    • Netz: lb-network-dual-stack

Backend-Konfiguration

  1. Klicken Sie auf Backend-Konfiguration.
  2. Wählen Sie im Bereich Neues Backend von Backends den IP-Stack-Typ als IPv4 und IPv6 (Dual-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.
    • Bereich: 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. In the New Frontend IP and port section, do the following:
    1. Geben Sie für Name fr-ilb-ipv6 ein.
    2. So verarbeiten Sie IPv6-Traffic:
      1. Setzen Sie die IP-Version auf IPv6.
      2. Wählen Sie für Subnetzwerk die Option lb-subnet 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, 8008, 8080 und 8088 ein.
      4. Klicken Sie auf Fertig.
    3. So verarbeiten Sie IPv4-Traffic:
      1. Klicken Sie auf Frontend-IP und Port hinzufügen.
      2. Geben Sie für Name fr-ilb ein.
      3. Wählen Sie für Subnetzwerk die Option lb-subnet aus.
      4. Wählen Sie im Abschnitt Interner IP-Zweck in der Liste IP-Adresse IP-Adresse erstellen aus, geben Sie die folgenden Informationen ein und klicken Sie dann auf Reservieren.
        • Name: ip-ilb
        • IP-Version: IPv4.
        • Statische IP-Adresse: Selbst auswählen
        • Benutzerdefinierte IP-Adresse: 10.1.2.99
      5. Wählen Sie für Ports Mehrere aus und geben Sie dann in Nummern portieren 80, 8008, 8080 und 8088 aus.
      6. Klicken Sie auf Fertig.
      7. Überprüfen Sie, bevor Sie fortfahren, ob sich neben der Backend-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 für HTTP-Traffic:

    gcloud compute backend-services create be-ilb \
        --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 be-ilb \
        --region=us-west1 \
        --instance-group=ig-a \
        --instance-group-zone=us-west1-a
    gcloud compute backend-services add-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-c \
        --instance-group-zone=us-west1-c
    
  4. Erstellen Sie zwei Weiterleitungsregeln für den Backend-Dienst. Wenn Sie die IPv4-Weiterleitungsregel erstellen, geben Sie für die interne IP-Adresse im Subnetz für IPv4-Adressen 10.1.2.99 an.

    gcloud compute forwarding-rules create fr-ilb \
        --region=us-west1 \
        --load-balancing-scheme=internal \
        --subnet=lb-subnet \
        --address=10.1.2.99 \
        --ip-protocol=TCP \
        --ports=80,8008,8080,8088 \
        --backend-service=be-ilb \
        --backend-service-region=us-west1
    
    gcloud compute forwarding-rules create fr-ilb-ipv6 \
        --region=us-west1 \
        --load-balancing-scheme=internal \
        --subnet=lb-subnet \
        --ip-protocol=TCP \
        --ports=80,8008,8080,8088 \
        --backend-service=be-ilb \
        --backend-service-region=us-west1 \
        --ip-version=IPV6
    

API

Erstellen Sie die Systemdiagnose. Stellen Sie dazu eine POST-Anfrage an die Methode regionHealthChecks.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/regionHealthChecks

{
"name": "hc-http-80",
"type": "HTTP",
"httpHealthCheck": {
  "port": 80
}
}

Erstellen Sie den regionalen Backend-Dienst. Stellen Sie dazu eine POST-Anfrage an die Methode regionBackendServices.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices

{
"name": "be-ilb",
"backends": [
  {
    "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a",
    "balancingMode": "CONNECTION"
  },
  {
    "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups/ig-c",
    "balancingMode": "CONNECTION"
  }
],
"healthChecks": [
  "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80"
],
"loadBalancingScheme": "INTERNAL",
"connectionDraining": {
  "drainingTimeoutSec": 0
 }
}

Erstellen Sie die Weiterleitungsregel. Stellen Sie dazu eine POST-Anfrage an die Methode forwardingRules.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules

{
"name": "fr-ilb-ipv6",
"IPProtocol": "TCP",
"ports": [
  "80", "8008", "8080", "8088"
],
"loadBalancingScheme": "INTERNAL",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb",
"ipVersion": "IPV6",
"networkTier": "PREMIUM"
}

Erstellen Sie die Weiterleitungsregel. Stellen Sie dazu eine POST-Anfrage an die Methode forwardingRules.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules

{
"name": "fr-ilb",
"IPAddress": "10.1.2.99",
"IPProtocol": "TCP",
"ports": [
  "80", "8008", "8080", "8088"
],
"loadBalancingScheme": "INTERNAL",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb",
"networkTier": "PREMIUM"
}

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. Der Client validiert die Konfiguration des Load-Balancers und demonstriert das erwartete Verhalten, wie im Abschnitt "Test" beschrieben.

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. 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-dual-stack
      • Subnetz: lb-subnet
      • IP-Stack-Typ: IPv4 und IPv6 (Dual-Stack)
      • Primäre interne IP: sitzungsspezifisch (automatisch)
      • Externe IP: sitzungsspezifisch
    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. Außerdem kann sie jedes Subnetz in dieser Region verwenden. 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-10 \
    --image-project=debian-cloud \
    --stack-type=IPV4_IPV6 \
    --tags=allow-ssh \
    --subnet=lb-subnet

API

Stellen Sie eine POST-Anfrage an die Methode instances.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances

{
 "name": "vm-client",
 "tags": {
   "items": [
     "allow-ssh"
   ]
 },
 "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2",
 "canIpForward": false,
 "networkInterfaces": [
   {
     "stackType": "IPV4_IPV6",
     "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network-dual-stack",
     "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
     "accessConfigs": [
       {
         "type": "ONE_TO_ONE_NAT",
         "name": "external-nat",
         "networkTier": "PREMIUM"
       }
     ]
   }
 ],
 "disks": [
   {
     "type": "PERSISTENT",
     "boot": true,
     "mode": "READ_WRITE",
     "autoDelete": true,
     "deviceName": "vm-client",
     "initializeParams": {
       "sourceImage": "projects/debian-cloud/global/images/debian-image-name",
       "diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard",
       "diskSizeGb": "10"
     }
   }
 ],
 "scheduling": {
   "preemptible": false
 },
 "deletionProtection": false
}

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 zwischen den vier Backend-VMs verteilt.

  1. Stellen Sie 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. Beachten Sie IPV6_ADDRESS in der Beschreibung.

    gcloud compute forwarding-rules describe fr-ilb-ipv6 --region=us-west1
    
  3. Beschreiben Sie die IPv4-Weiterleitungsregel fr-ilb.

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

    $ curl -m 10 -s http://IPV6_ADDRESS:80
    

    Wenn die zugewiesene IPv6-Adresse beispielsweise [fd20:1db0:b882:802:0:46:0:0/96]:80 lautet, sollte der Befehl so aussehen:

    $  curl -m 10 -s http://[fd20:1db0:b882:802:0:46:0:0]:80
    
  5. Führen Sie von Clients mit IPv4-Verbindung den folgenden Befehl aus:

    $ curl -m 10 -s http://10.1.2.99:80
    

    Ersetzen Sie die Platzhalter durch gültige Werte:

    • IPV6_ADDRESS ist die sitzungsspezifische IPv6-Adresse in der Weiterleitungsregel fr-ilb-ipv6.

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 durchführen.

Globalen Zugriff aktivieren

Sie können den globalen Zugriff für Ihr Beispiel eines internen Passthrough-Netzwerk-Load-Balancers aktivieren, damit Clients in allen Regionen darauf zugreifen können. Die Back-Ends Ihres Beispiel-Load-Balancers müssen sich weiterhin in einer einzigen Region (us-west1) befinden.

Interner Passthrough-Network-Load-Balancer mit globalem Zugriff.
Interner Passthrough-Network-Load-Balancer mit globalem Zugriff (zum Vergrößern klicken)

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

Console

Weiterleitungsregel des Load-Balancers bearbeiten

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

    Load-Balancing aufrufen

  2. Klicken Sie in der Spalte Name auf Ihren internen Passthrough-Netzwerk-Load-Balancer. Der Beispiel-Load-Balancer hat den Namen be-ilb.

  3. Klicken Sie auf Frontend-Konfiguration.

  4. Klicken Sie auf Bearbeiten .

  5. Wählen Sie unter Globaler Zugriff die Option Aktivieren aus.

  6. Klicken Sie auf Fertig.

  7. Klicken Sie auf Aktualisieren.

Prüfen Sie auf der Seite Details zum Load-Balancer, ob die Frontend-Konfiguration Regional (REGION) mit globalem Zugriff lautet.

gcloud

  1. Aktualisieren Sie die Weiterleitungsregel fr-ilb des Beispiel-Load-Balancers so, dass das Flag --allow-global-access enthalten ist.

    gcloud compute forwarding-rules update fr-ilb \
       --region=us-west1 \
       --allow-global-access
    
  2. Mit dem Befehl forwarding-rules describe können Sie feststellen, ob für eine Weiterleitungsregel der globale Zugriff aktiviert ist. Beispiel:

    gcloud compute forwarding-rules describe fr-ilb \
       --region=us-west1 \
       --format="get(name,region,allowGlobalAccess)"
    

    Das Wort True wird in der Ausgabe nach dem Namen und der Region der Weiterleitungsregel angezeigt, wenn der globale Zugriff aktiviert ist.

API

Stellen Sie eine PATCH-Anfrage an die Methode forwardingRules/patch.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules/fr-ilb

{
"allowGlobalAccess": true
}

VM-Client 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 vm-client2 fest.

  4. Legen Sie als Region europe-west1 fest.

  5. Setzen Sie Zone auf europe-west1-b.

  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
      • Subnetz: europe-subnet
  8. Klicken Sie auf Erstellen.

gcloud

Die Client-VM kann sich in einer beliebigen Zone in derselben Region wie der Load-Balancer befinden. Außerdem kann sie jedes Subnetz in dieser Region verwenden. In diesem Beispiel befindet sich der Client in der Zone europe-west1-b und verwendet dasselbe Subnetz wie die Backend-VMs.

gcloud compute instances create vm-client2 \
    --zone=europe-west1-b \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=europe-subnet

API

Stellen Sie eine POST-Anfrage an die Methode instances.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/europe-west1-b/instances

{
"name": "vm-client2",
"tags": {
  "items": [
    "allow-ssh"
  ]
},
"machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/europe-west1-b/machineTypes/e2-standard-2",
"canIpForward": false,
"networkInterfaces": [
  {
    "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
    "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/europe-west1/subnetworks/europe-subnet",
    "accessConfigs": [
      {
        "type": "ONE_TO_ONE_NAT",
        "name": "external-nat",
        "networkTier": "PREMIUM"
      }
    ]
  }
],
"disks": [
  {
    "type": "PERSISTENT",
    "boot": true,
    "mode": "READ_WRITE",
    "autoDelete": true,
    "deviceName": "vm-client2",
    "initializeParams": {
      "sourceImage": "projects/debian-cloud/global/images/debian-image-name",
      "diskType": "projects/PROJECT_ID/zones/europe-west1-b/diskTypes/pd-standard",
      "diskSizeGb": "10"
    }
  }
],
"scheduling": {
  "preemptible": false
},
"deletionProtection": false
}

Verbindung zum VM-Client herstellen und testen

Führen Sie den folgenden Befehl aus, um die Verbindung zu testen:

  gcloud compute ssh vm-client2 --zone=europe-west1-b
  

Testen Sie die Verbindung zum Load-Balancer auf allen konfigurierten Ports, wie Sie es vom vm-client in der Region us-west1 getan haben. Testen Sie die HTTP-Verbindung an den vier in der Weiterleitungsregel konfigurierten Ports:

  curl http://10.1.2.99
  curl http://10.1.2.99:8008
  curl http://10.1.2.99:8080
  curl http://10.1.2.99:8088
  

Verwaltete Instanzgruppen konfigurieren

In der Beispielkonfiguration wurden zwei nicht verwaltete Instanzgruppen erstellt. Sie können stattdessen auch verwaltete Instanzgruppen, darunter zonale und regionale verwaltete Instanzgruppen, als Back-Ends für interne Passthrough-Netzwerk-Load-Balancer verwenden.

Für verwaltete Instanzgruppen müssen Sie eine Instanzvorlage erstellen. Dieses Verfahren zeigt Ihnen, wie Sie die beiden nicht verwalteten zonalen Instanzgruppen aus dem Beispiel durch eine einzelne, regional verwaltete Instanzgruppe ersetzen. Eine regional verwaltete Instanzgruppe erstellt automatisch VMs in mehreren Zonen der Region. Das vereinfacht die Verteilung des Produktionstraffics auf die Zonen.

Verwaltete Instanzgruppen unterstützen auch Autoscaling und die automatische Reparatur. Wenn Sie Autoscaling mit internen Passthrough-Netzwerk-Load-Balancern verwenden, können Sie keine Skalierung anhand von Load-Balancing vornehmen.

Dieses Verfahren zeigt Ihnen, wie Sie den Backend-Dienst für den internen Passthrough-Netzwerk-Load-Balancer des Beispiels so ändern, dass er eine regional verwaltete Instanzgruppe verwendet.

Console

Instanzvorlage

  1. Öffnen Sie in der Google Cloud Console die Seite VM-Instanzvorlagen.

    Zu den „VM-Instanzvorlagen“

  2. Klicken Sie auf Instanzvorlage erstellen.

  3. Legen Sie als Name template-vm-ilb fest.

  4. Wählen Sie einen Maschinentyp aus.

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

  6. Klicken Sie auf Erweiterte Optionen.

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

    1. Geben Sie für Netzwerk-Tags allow-ssh und allow-health-check ein.
    2. Wählen Sie für Netzwerkschnittstellen Folgendes aus:
      • Netzwerk: lb-network
      • Subnetz: lb-subnet
  8. Klicken Sie auf Verwaltung und geben Sie im Feld Startskript das folgende Skript ein:

    #! /bin/bash
    if [ -f /etc/startup_script_completed ]; then
    exit 0
    fi
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    file_ports="/etc/apache2/ports.conf"
    file_http_site="/etc/apache2/sites-available/000-default.conf"
    file_https_site="/etc/apache2/sites-available/default-ssl.conf"
    http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088"
    http_vh_prts="*:80 *:8008 *:8080 *:8088"
    https_listen_prts="Listen 443\nListen 8443"
    https_vh_prts="*:443 *:8443"
    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
    prt_conf="$(cat "$file_ports")"
    prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")"
    prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")"
    echo "$prt_conf" | tee "$file_ports"
    http_site_conf="$(cat "$file_http_site")"
    http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")"
    echo "$http_site_conf_2" | tee "$file_http_site"
    https_site_conf="$(cat "$file_https_site")"
    https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")"
    echo "$https_site_conf_2" | tee "$file_https_site"
    systemctl restart apache2
    touch /etc/startup_script_completed
    
  9. Klicken Sie auf Erstellen.

Verwaltete Instanzgruppe

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

    Zu den Instanzgruppen

  2. Klicken Sie auf Instanzgruppe erstellen.

  3. Legen Sie als Name ig-ilb fest.

  4. Wählen Sie als Standort die Option Mehrere Zonen aus und setzen Sie die Region auf us-west1.

  5. Stellen Sie die Instanzvorlage auf template-vm-ilb.

  6. (Optional) Konfigurieren Sie das Autoscaling. Sie können die Instanzgruppe nicht auf Basis der Verwendung von HTTP-Load-Balancing automatisch skalieren, da die Instanzgruppe ein Backend für den internen Passthrough-Netzwerk-Load-Balancer ist.

  7. Setzen Sie die Mindestanzahl an Instanzen auf 1 und die maximale Anzahl von Instanzen auf 6.

  8. (Optional) Konfigurieren Sie die automatische Reparatur. Wenn Sie die automatische Reparatur konfigurieren, verwenden Sie dieselbe Systemdiagnose, die der Backend-Dienst für den internen Passthrough-Netzwerk-Load-Balancer verwendet. Verwenden Sie in diesem Beispiel hc-http-80.

  9. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie die Instanzvorlage. Optional können Sie für die zu verwendende Image-Vorlage andere Parameter festlegen, beispielsweise den Maschinentyp.

    gcloud compute instance-templates create template-vm-ilb \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check \
        --subnet=lb-subnet \
        --region=us-west1 \
        --network=lb-network \
        --metadata=startup-script='#! /bin/bash
    if [ -f /etc/startup_script_completed ]; then
    exit 0
    fi
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    file_ports="/etc/apache2/ports.conf"
    file_http_site="/etc/apache2/sites-available/000-default.conf"
    file_https_site="/etc/apache2/sites-available/default-ssl.conf"
    http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088"
    http_vh_prts="*:80 *:8008 *:8080 *:8088"
    https_listen_prts="Listen 443\nListen 8443"
    https_vh_prts="*:443 *:8443"
    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
    prt_conf="$(cat "$file_ports")"
    prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")"
    prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")"
    echo "$prt_conf" | tee "$file_ports"
    http_site_conf="$(cat "$file_http_site")"
    http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")"
    echo "$http_site_conf_2" | tee "$file_http_site"
    https_site_conf="$(cat "$file_https_site")"
    https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")"
    echo "$https_site_conf_2" | tee "$file_https_site"
    systemctl restart apache2
    touch /etc/startup_script_completed'
    
  2. Erstellen Sie eine regional verwaltete Instanzgruppe mit der Vorlage:

    gcloud compute instance-groups managed create ig-ilb \
        --template=template-vm-ilb \
        --region=us-west1 \
        --size=6
    
  3. Fügen Sie dem bereits erstellten Back-End-Dienst die regional verwaltete Instanzgruppe als Back-End hinzu:

    gcloud compute backend-services add-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-ilb \
        --instance-group-region=us-west1
    
  4. Trennen Sie die Verbindung der beiden nicht verwalteten (zonalen) Instanzgruppen zum Backend-Dienst:

    gcloud compute backend-services remove-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-a \
        --instance-group-zone=us-west1-a
    gcloud compute backend-services remove-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-c \
        --instance-group-zone=us-west1-c
    

Externe IP-Adressen aus Backend-VMs entfernen

Bei der Erstellung der Backend-VMs wurde jeder eine sitzungsspezifische externe IP-Adresse zugewiesen, damit über ein Startscript Apache heruntergeladen werden konnte. Da die Backend-VMs nur von einem internen Passthrough-Netzwerk-Load-Balancer verwendet werden, können Sie deren externe IP-Adressen entfernen. Dadurch wird verhindert, dass die Backend-VMs direkt auf das Internet zugreifen.

Console

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

    Zur Seite „VM-Instanzen“

  2. Wiederholen Sie die folgenden Schritte für jede Backend-VM.

  3. Klicken Sie auf den Namen der Backend-VM, z. B. vm-a1.

  4. Klicken Sie auf Bearbeiten.

  5. Klicken Sie im Bereich Netzwerkschnittstellen auf das Netzwerk.

  6. Wählen Sie aus der Liste Externe IP-Adresse die Option Keine aus und klicken Sie auf Fertig.

  7. Klicken Sie auf Speichern.

gcloud

  1. Wenn Sie die Zone einer Instanz, z. B. bei einer regionalen verwalteten Instanzgruppe, ermitteln möchten, führen Sie für jede Instanz den folgenden Befehl aus. Ersetzen Sie [SERVER-VM] durch den Namen der VM, die Sie aufrufen möchten.

    gcloud compute instances list --filter="name=[SERVER-VM]"
    
  2. Wiederholen Sie den folgenden Schritt für jede Back-End-VM. Ersetzen Sie [SERVER-VM] durch den Namen der VM und dann [ZONE] durch die Zone der VM.

    gcloud compute instances delete-access-config [SERVER-VM] \
        --zone=[ZONE] \
        --access-config-name=external-nat
    

API

Stellen Sie für jede Backend-VM eine POST-Anfrage an die Methode instances.deleteAccessConfig. Ersetzen Sie dabei vm-a1 durch den Namen der VM und us-west1-a durch die Zone der VM.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a1/deleteAccessConfig?accessConfig=external-nat&networkInterface=None

Reservierte interne IP-Adresse verwenden

Wenn Sie Backend-VMs und Instanzgruppen erstellen, verwendet die VM-Instanz eine sitzungsspezifische interne IPv4- oder IPv6-Adresse.

In den folgenden Schritten erfahren Sie, wie Sie eine interne IPv4- oder IPv6-Adresse in eine statische interne IPv4- oder IPv6-Adresse umwandeln und dann die VM-Instanz aktualisieren, um die statische interne IP-Adresse zu verwenden:

  1. Verwendete sitzungsspezifische interne IPv4- oder IPv6-Adresse in eine statische Adresse umwandeln.
  2. Interne IPv6-Adresse ändern oder einer vorhandenen Instanz zuweisen.

Alternativ können Sie anhand der folgenden Schritte erfahren, wie Sie eine neue statische interne IPv4- oder IPv6-Adresse reservieren und dann die VM-Instanz aktualisieren, um die statische interne IP-Adresse zu verwenden:

  1. Neue statische interne IPv4- oder IPv6-Adresse reservieren.

    Im Gegensatz zur internen IPv4-Reservierung unterstützt die interne IPv6-Reservierung keine Reservierung einer bestimmten IP-Adresse aus dem Subnetzwerk. Stattdessen wird automatisch ein interner /96-IPv6-Adressbereich aus dem internen IPv6-Adressbereich des Subnetzes /64 zugewiesen.

  2. Interne IPv6-Adresse ändern oder einer vorhandenen Instanz zuweisen.

Weitere Informationen finden Sie unter Statische interne IP-Adresse reservieren.

Traffic an allen Ports akzeptieren

Nicht die Backend-Dienste bestimmen die Ports, an denen der Load-Balancer Traffic akzeptiert, sondern die Weiterleitungsregel des Load-Balancers. Informationen zum Zweck der einzelnen Komponenten finden Sie unter Komponenten.

Beim Erstellen der Weiterleitungsregel dieses Beispiel-Load-Balancers haben Sie die Ports 80, 8008, 8080 und 8088 konfiguriert. Das Startskript, mit dem Apache installiert wird, nimmt die Konfiguration so vor, dass HTTPS-Verbindungen über die Ports 443 und 8443 akzeptiert werden.

Zur Unterstützung dieser sechs Ports können Sie die Weiterleitungsregel so konfigurieren, dass Traffic an allen Ports akzeptiert wird. Mit dieser Strategie können Sie auch die Firewallregeln konfigurieren, die eingehende Verbindungen zu Back-End-VMs zulassen, sodass nur bestimmte Ports zulässig sind.

Dieses Verfahren zeigt Ihnen, wie Sie die Weiterleitungsregel des Beispiel-Load-Balancers durch eine Regel ersetzen, die Traffic an allen Ports akzeptiert.

Weitere Informationen zur Verwendung dieser Konfiguration finden Sie unter Interne Passthrough-Netzwerk-Load-Balancer und Weiterleitungsregeln mit einer gemeinsamen IP-Adresse.

Console

Weiterleitungsregel löschen und neue erstellen

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

    Load-Balancing aufrufen

  2. Klicken Sie auf den be-ilb-Load-Balancer und dann auf Bearbeiten.

  3. Klicken Sie auf Frontend-Konfiguration.

  4. Halten Sie den Mauszeiger über die Weiterleitungsregel 10.1.2.9 und klicken Sie auf Löschen.

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

  6. Geben Sie im Abschnitt Neue Frontend-IP-Adresse und neuer Frontend-Port die folgenden Informationen ein und klicken Sie auf Fertig:

    • Name: fr-ilb
    • Subnetzwerk: lb-subnet
    • Interne IP-Adresse: ip-ilb
    • Ports: Alle
  7. Überprüfen Sie, bevor Sie fortfahren, ob sich neben der Frontend-Konfiguration ein blaues Häkchen befindet.

  8. Klicken Sie auf Prüfen und abschließen und prüfen Sie die Konfigurationseinstellungen des Load-Balancers.

  9. Klicken Sie auf Erstellen.

gcloud

  1. Löschen Sie die vorhandene Weiterleitungsregel fr-ilb.

    gcloud compute forwarding-rules delete fr-ilb \
        --region=us-west1
    
  2. Erstellen Sie eine Ersatzweiterleitungsregel mit demselben Namen, deren Portkonfiguration das Keyword ALL verwendet. Die anderen Parameter für die Weiterleitungsregel bleiben unverändert.

    gcloud compute forwarding-rules create fr-ilb \
        --region=us-west1 \
        --load-balancing-scheme=internal \
        --network=lb-network \
        --subnet=lb-subnet \
        --address=10.1.2.99 \
        --ip-protocol=TCP \
        --ports=ALL \
        --backend-service=be-ilb \
        --backend-service-region=us-west1
    

API

Löschen Sie die Weiterleitungsregel, indem Sie eine DELETE-Anfrage an die Methode forwardingRules.delete stellen.

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules/fr-ilb

Erstellen Sie die Weiterleitungsregel. Stellen Sie dazu eine POST-Anfrage an die Methode forwardingRules.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules

{
"name": "fr-ilb",
"IPAddress": "10.1.2.99",
"IPProtocol": "TCP",
"allPorts": true,
"loadBalancingScheme": "INTERNAL",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb",
"networkTier": "PREMIUM"
}

Konfiguration mit Traffic an allen Ports testen

Stellen Sie eine Verbindung zur Client-VM-Instanz her und testen Sie HTTP- und HTTPS-Verbindungen.

  • Stellen Sie eine Verbindung zur Client-VM her:

    gcloud compute ssh vm-client --zone=us-west1-a
    
  • Testen Sie die HTTP-Verbindung an allen vier Ports:

    curl http://10.1.2.99
    curl http://10.1.2.99:8008
    curl http://10.1.2.99:8080
    curl http://10.1.2.99:8088
    
  • Testen Sie die HTTPS-Verbindung an den Ports 443 und 8443. Das Flag --insecure ist erforderlich, da jeder Apache-Server in der Beispielkonfiguration ein selbst signiertes Zertifikat verwendet.

    curl https://10.1.2.99 --insecure
    curl https://10.1.2.99:8443 --insecure
    

  • Beachten Sie, dass HTTP-Anfragen (an allen vier Ports) und HTTPS-Anfragen (an beiden Ports) auf alle Backend-VMs verteilt werden.

Traffic an mehreren Ports mit zwei Weiterleitungsregeln akzeptieren

Beim Erstellen der Weiterleitungsregel dieses Beispiel-Load-Balancers haben Sie die Ports 80, 8008, 8080 und 8088 konfiguriert. Das Startskript, mit dem Apache installiert wird, nimmt die Konfiguration so vor, dass HTTPS-Verbindungen über die Ports 443 und 8443 akzeptiert werden.

Eine alternative Strategie zum Konfigurieren einer einzelnen Weiterleitungsregel für die Annahme von Traffic an allen Ports besteht darin, mehrere Weiterleitungsregeln zu erstellen, die jeweils maximal fünf Ports unterstützen.

Dieses Verfahren zeigt Ihnen, wie Sie die Weiterleitungsregel des Beispiel-Load-Balancers durch zwei Weiterleitungsregeln ersetzen, von denen eine Traffic an den Ports 80, 8008, 8080 und 8088 und die andere Traffic an den Ports 443 und 8443 verarbeitet.

Weitere Informationen zur Verwendung dieser Konfiguration finden Sie unter Interne Passthrough-Netzwerk-Load-Balancer und Weiterleitungsregeln mit einer gemeinsamen IP-Adresse.

Console

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

    Zu den „Weiterleitungsregeln“

  2. Klicken Sie in der Spalte Name auf fr-ilb und dann auf Löschen.

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

    Load-Balancing aufrufen

  4. Klicken Sie in der Spalte Name auf be-ilb.

  5. Klicken Sie auf Bearbeiten.

  6. Klicken Sie auf Frontend-Konfiguration.

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

  8. Führen Sie im Abschnitt Neue Frontend-IP-Adresse und neuer Frontend-Port folgende Schritte aus:

    1. Geben Sie für Name fr-ilb-http ein.
    2. Wählen Sie für Subnetzwerk die Option lb-subnet aus.
    3. Wählen Sie unter Zweck der internen IP-Adresse die Option Freigegeben aus.
    4. Wählen Sie in der Liste IP-Adresse die Option IP-Adresse erstellen aus, geben Sie die folgenden Informationen ein und klicken Sie auf Reservieren:
      • Name: internal-10-1-2-99
      • Statische IP-Adresse: Selbst auswählen
      • Benutzerdefinierte IP-Adresse: 10.1.2.99
    5. Wählen Sie für Ports Mehrere aus und geben Sie dann in Nummern portieren 80, 8008, 8080 und 8088 aus.
    6. Klicken Sie auf Fertig.
  9. Klicken Sie auf Frontend-IP und Port hinzufügen.

  10. Führen Sie im Abschnitt Neue Frontend-IP-Adresse und neuer Frontend-Port folgende Schritte aus:

    1. Geben Sie für Name fr-ilb-https ein.
    2. Wählen Sie für Subnetzwerk die Option lb-subnet aus.
    3. Wählen Sie unter Zweck der internen IP-Adresse die Option Freigegeben aus.
    4. Wählen Sie in der Liste IP-Adresse die Option internal-10-1-2-99 aus.
    5. Wählen Sie unter Ports die Option Mehrere aus und geben Sie unter Portnummern die Werte 443 und 8443 ein.
    6. Klicken Sie auf Fertig.
  11. Klicken Sie auf Prüfen und abschließen und prüfen Sie die Konfigurationseinstellungen des Load-Balancers.

  12. Klicken Sie auf Aktualisieren.

gcloud

  1. Löschen Sie die vorhandene Weiterleitungsregel fr-ilb.

    gcloud compute forwarding-rules delete fr-ilb \
        --region=us-west1
    
  2. Erstellen Sie eine statische (reservierte) interne IP-Adresse für 10.1.2.99 und setzen Sie das Flag --purpose auf SHARED_LOADBALANCER_VIP. Das Flag --purpose ist erforderlich, damit zwei interne Weiterleitungsregeln dieselbe interne IP-Adresse verwenden können.

    gcloud compute addresses create internal-10-1-2-99 \
        --region=us-west1 \
        --subnet=lb-subnet \
        --addresses=10.1.2.99 \
        --purpose=SHARED_LOADBALANCER_VIP
    
    1. Erstellen Sie zwei Ersatzweiterleitungsregeln mit den folgenden Parametern:
    gcloud compute forwarding-rules create fr-ilb-http \
        --region=us-west1 \
        --load-balancing-scheme=internal \
        --network=lb-network \
        --subnet=lb-subnet \
        --address=10.1.2.99 \
        --ip-protocol=TCP \
        --ports=80,8008,8080,8088 \
        --backend-service=be-ilb \
        --backend-service-region=us-west1
    
    gcloud compute forwarding-rules create fr-ilb-https \
        --region=us-west1 \
        --load-balancing-scheme=internal \
        --network=lb-network \
        --subnet=lb-subnet \
        --address=10.1.2.99 \
        --ip-protocol=TCP \
        --ports=443,8443 \
        --backend-service=be-ilb \
        --backend-service-region=us-west1
    

API

Löschen Sie die Weiterleitungsregel, indem Sie eine DELETE-Anfrage an die Methode forwardingRules.delete stellen.

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules/fr-ilb

Erstellen Sie eine statische (reservierte) interne IP-Adresse für 10.1.2.99 und legen Sie deren Zweck auf SHARED_LOADBALANCER_VIP fest. Stellen Sie dazu eine POST-Anfrage an die Methode addresses.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/addresses

{
"name": "internal-10-1-2-99",
"address": "10.1.2.99",
"prefixLength": 32,
"addressType": INTERNAL,
"purpose": SHARED_LOADBALANCER_VIP,
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}

Erstellen Sie zwei Weiterleitungsregeln, indem Sie zwei POST-Anfragen an die Methode forwardingRules.insert stellen.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules

{
"name": "fr-ilb-http",
"IPAddress": "10.1.2.99",
"IPProtocol": "TCP",
"ports": [
  "80", "8008", "8080",  "8088"
],
"loadBalancingScheme": "INTERNAL",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb",
"networkTier": "PREMIUM"
}
{
"name": "fr-ilb-https",
"IPAddress": "10.1.2.99",
"IPProtocol": "TCP",
"ports": [
  "443", "8443"
],
"loadBalancingScheme": "INTERNAL",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb",
"networkTier": "PREMIUM"
}

Konfiguration mit Traffic an mehreren Ports testen

Stellen Sie eine Verbindung zur Client-VM-Instanz her und testen Sie HTTP- und HTTPS-Verbindungen.

  • Stellen Sie eine Verbindung zur Client-VM her:

    gcloud compute ssh vm-client --zone=us-west1-a
    
  • Testen Sie die HTTP-Verbindung an allen vier Ports:

    curl http://10.1.2.99
    curl http://10.1.2.99:8008
    curl http://10.1.2.99:8080
    curl http://10.1.2.99:8088
    
  • Testen Sie die HTTPS-Verbindung an den Ports 443 und 8443. Das Flag --insecure ist erforderlich, da jeder Apache-Server in der Beispielkonfiguration ein selbst signiertes Zertifikat verwendet.

    curl https://10.1.2.99 --insecure
    curl https://10.1.2.99:8443 --insecure
    
  • Beachten Sie, dass HTTP-Anfragen (an allen vier Ports) und HTTPS-Anfragen (an beiden Ports) auf alle Backend-VMs verteilt werden.

Sitzungsaffinität verwenden

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

Dieses Verfahren zeigt Ihnen, wie Sie den Backend-Dienst für den als Beispiel verwendeten internen Passthrough-Netzwerk-Load-Balancer aktualisieren, damit er Sitzungsaffinität basierend auf einem Hash verwendet, der aus den IP-Adressen des Clients und der IP-Adresse der internen Weiterleitungsregel des Load-Balancers erstellt wurde.

Informationen zu unterstützten Arten von Sitzungsaffinitäten finden Sie unter Sitzungsaffinitätsoptionen.

Console

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

    Load-Balancing aufrufen

  2. Klicken Sie auf be-ilb. Das ist der Name des für dieses Beispiel erstellten Backend-Dienstes. Klicken Sie dann auf Bearbeiten.

  3. Auf der Seite Internen Passthrough-Netzwerk-Load-Balancer bearbeiten klicken Sie auf Backend konfigurieren.

  4. Wählen Sie in der Liste Sitzungsaffinität die Option Client-IP aus.

  5. Klicken Sie auf Aktualisieren.

gcloud

Aktualisieren Sie den Backend-Dienst be-ilb mit dem folgenden gcloud-Befehl. Geben Sie dabei die Sitzungsaffinität der Client-IP-Adresse an:

gcloud compute backend-services update be-ilb \
    --region=us-west1 \
    --session-affinity CLIENT_IP

API

Stellen Sie eine PATCH-Anfrage an die Methode regionBackendServices/patch.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb

{
"sessionAffinity": "CLIENT_IP"
}

Richtlinie für das Verbindungs-Tracking konfigurieren

In diesem Abschnitt erfahren Sie, wie Sie den Backend-Dienst aktualisieren, um die Standardrichtlinie für das Verbindungs-Tracking des Load-Balancers zu ändern.

Eine Richtlinie für das Verbindungs-Tracking enthält die folgenden Einstellungen:

gcloud

Aktualisieren Sie mit dem folgenden gcloud compute backend-services-Befehl die Richtlinie für das Verbindungs-Tracking für den Backend-Dienst:

gcloud compute backend-services update BACKEND_SERVICE \
    --region=REGION \
    --tracking-mode=TRACKING_MODE \
    --connection-persistence-on-unhealthy-backends=CONNECTION_PERSISTENCE_BEHAVIOR \
    --idle-timeout-sec=IDLE_TIMEOUT_VALUE

Ersetzen Sie die Platzhalter durch gültige Werte:

  • BACKEND_SERVICE: Der Backend-Dienst, den Sie aktualisieren.
  • REGION: Region des Backend-Dienstes, den Sie aktualisieren.
  • TRACKING_MODE: der Modus für das Verbindungs-Tracking, der für eingehende Pakete verwendet werden soll. Eine Liste der unterstützten Werte finden Sie unter Tracking-Modus.
  • CONNECTION_PERSISTENCE_BEHAVIOR: das Verhalten der Verbindungspersistenz, wenn Back-Ends fehlerhaft sind. Eine Liste der unterstützten Werte finden Sie unter Verbindungspersistenz bei fehlerhaften Back-Ends.
  • IDLE_TIMEOUT_VALUE: die Anzahl der Sekunden, die ein Verbindungs-Tracking-Tabelleneintrag verwaltet werden muss, nachdem der Load-Balancer das letzte dem Eintrag entsprechenden Paket verarbeitet hat

    Sie können dieses Attribut nur ändern, wenn das Verbindungs-Tracking kleiner als 5-Tupel ist (d. h., wenn die Sitzungsaffinität als CLIENT_IP oder CLIENT_IP_PROTO und der Tracking-Modus als PER_SESSION konfiguriert ist).

    Der Standardwert beträgt 600 Sekunden (10 Minuten). Der maximal konfigurierbare Wert für die Zeitüberschreitung bei Inaktivität beträgt 57.600 Sekunden (16 Stunden).

Weiterleitungsregel in einem anderen Subnetz erstellen

Dieses Verfahren erstellt eine zweite IP-Adresse und Weiterleitungsregel in einem anderen Subnetz. Dies dient dazu, Ihnen zu zeigen, dass Sie für einen internen Passthrough-Netzwerk-Load-Balancer mehrere Weiterleitungsregeln erstellen können. Die Region für die Weiterleitungsregel muss dabei mit der Region des Backend-Dienstes übereinstimmen.

Je nach Firewallregeln können Clients in jedem Subnetz in der Region eine der internen IP-Adressen des Passthrough-Netzwerk-Load-Balancers kontaktieren.

Console

Zweites Subnetz hinzufügen

  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. Klicken Sie auf lb-network.

  4. Führen Sie im Abschnitt Subnetze folgende Schritte aus:

    1. Klicken Sie auf Subnetz hinzufügen.
    2. Geben Sie im Bereich Neues Subnetz folgende Informationen ein:
      • Name: second-subnet
      • Region: us-west1
      • IP-Adressbereich: 10.5.6.0/24
    3. Klicken Sie auf Hinzufügen.

Zweite Weiterleitungsregel hinzufügen

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

    Load-Balancing aufrufen

  2. Klicken Sie auf den be-ilb-Load-Balancer und dann auf Bearbeiten.

  3. Klicken Sie auf Frontend-Konfiguration.

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

  5. Legen Sie im Abschnitt Neue Frontend-IP-Adresse und neuer Frontend-Port die folgenden Felder fest und klicken Sie auf Fertig:

    • Name: fr-ilb-2
    • IP-Version: IPv4.
    • Subnetzwerk: second-subnet
    • Interne IP-Adresse: ip-ilb
    • Ports: 80 und 443
  6. Überprüfen Sie, bevor Sie fortfahren, ob sich neben der Frontend-Konfiguration ein blaues Häkchen befindet.

  7. Klicken Sie auf Prüfen und abschließen und prüfen Sie die Konfigurationseinstellungen des Load-Balancers.

  8. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie ein zweites Subnetz im Netzwerk lb-network in der Region us-west1:

    gcloud compute networks subnets create second-subnet \
       --network=lb-network \
       --range=10.5.6.0/24 \
       --region=us-west1
    
  2. Erstellen Sie eine zweite Weiterleitungsregel für die Ports 80 und 443. Die anderen Parameter für diese Regel, einschließlich IP-Adresse und Backend-Dienst, sind dieselben wie für die primäre Weiterleitungsregel fr-ilb.

    gcloud compute forwarding-rules create fr-ilb-2 \
       --region=us-west1 \
       --load-balancing-scheme=internal \
       --network=lb-network \
       --subnet=second-subnet \
       --address=10.5.6.99 \
       --ip-protocol=TCP \
       --ports=80,443 \
       --backend-service=be-ilb \
       --backend-service-region=us-west1
    

API

Stellen Sie eine POST-Anfrage an die Methode subnetworks.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks

{
 "name": "second-subnet",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "ipCidrRange": "10.5.6.0/24",
 "privateIpGoogleAccess": false
}

Erstellen Sie die Weiterleitungsregel. Stellen Sie dazu eine POST-Anfrage an die Methode forwardingRules.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules

{
"name": "fr-ilb-2",
"IPAddress": "10.5.6.99",
"IPProtocol": "TCP",
"ports": [
  "80", "443"
],
"loadBalancingScheme": "INTERNAL",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb",
"networkTier": "PREMIUM"
}

Neue Weiterleitungsregel testen

Stellen Sie eine Verbindung zur Client-VM-Instanz her und testen Sie HTTP- und HTTPS-Verbindungen zu den IP-Adressen.

  1. Stellen Sie eine Verbindung zur Client-VM her:

    gcloud compute ssh vm-client --zone=us-west1-a
    
  2. Testen Sie die HTTP-Konnektivität zu den IP-Adressen:

    curl http://10.1.2.99
    curl http://10.5.6.99
    
  3. Testen Sie die HTTPS-Konnektivität. Die Verwendung von --insecure ist erforderlich, da für die Apache-Serverkonfiguration im Beispiel selbst signierte Zertifikate verwendet werden.

    curl https://10.1.2.99 --insecure
    curl https://10.5.6.99 --insecure
    
  4. Beachten Sie, dass Anfragen von allen Backend-VMs verarbeitet werden, unabhängig vom verwendeten Protokoll (HTTP oder HTTPS) oder der verwendeten IP-Adresse.

Backend-Teilmengeneinstellung verwenden

Die Beispielkonfiguration erstellt einen Backend-Dienst ohne Teilmengeneinstellung.

Dieses Verfahren zeigt Ihnen, wie Sie die Teilmengeneinstellung im Backend-Dienst für den internen Passthrough-Netzwerk-Load-Balancer des Beispiels aktivieren, damit die Bereitstellung auf eine größere Anzahl von Backend-Instanzen skaliert werden kann.

Sie sollten die Teilmengeneinstellung nur aktivieren, wenn Sie mehr als 250 Backend-VMs auf einem einzelnen Load-Balancer unterstützen müssen.

Weitere Informationen zu diesem Anwendungsfall finden Sie unter Backend-Teilmengeneinstellung.

gcloud

Verwenden Sie den folgenden gcloud-Befehl, um den Backend-Dienst be-ilb zu aktualisieren und dabei eine Richtlinie für die Teilmengeneinstellung anzugeben:

gcloud compute backend-services update be-ilb \
    --subsetting-policy=CONSISTENT_HASH_SUBSETTING

API

Stellen Sie eine PATCH-Anfrage an die Methode regionBackendServices/patch.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb

{
"subsetting":
  {
    "policy": CONSISTENT_HASH_SUBSETTING
  }
}

Load-Balancer für die Paketspiegelung erstellen

Mit der Paketspiegelung können Sie Paketdaten aus bestimmten Instanzen in einer VPC kopieren und erfassen. Über die erfassten Daten können Sie Sicherheitsbedrohungen erkennen und die Anwendungsleistung überwachen.

Die Paketspiegelung erfordert einen internen Passthrough-Netzwerk-Load-Balancer, um Traffic auf eine Instanzgruppe von Collector-Zielen zu verteilen. So erstellen Sie einen internen Passthrough-Netzwerk-Load-Balancer für die Paketspiegelung:

Console

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

    Load-Balancing aufrufen

  2. Klicken Sie auf Load-Balancer erstellen.

  3. Klicken Sie auf der Karte Netzwerk-Load-Balancer (TCP/SSL) auf Konfiguration starten.
  4. Wählen Sie im Bereich Internet oder nur intern die Option Nur zwischen meinen VMs aus. Klicken Sie dann auf Weiter.

  5. Geben Sie unter Name des Load-Balancers einen Namen ein.

  6. Wählen Sie unter Region die Region der VM-Instanzen aus, in der Sie Pakete spiegeln möchten.

  7. Wählen Sie unter Netzwerk das Netzwerk aus, in dem Sie Pakete spiegeln möchten.

  8. Klicken Sie auf Backend-Konfiguration.

  9. Wählen Sie im Abschnitt Neues Backend für Instanzgruppe die Instanzgruppe aus, an die Pakete weitergeleitet werden sollen.

  10. Wählen Sie aus der Liste Systemdiagnose die Option Systemdiagnose erstellen aus, geben Sie die folgenden Informationen ein und klicken Sie auf Speichern:

    1. Geben Sie unter Name einen Namen für die Systemdiagnose ein.
    2. Wählen Sie für Protokoll die Option HTTP aus.
    3. Geben Sie für Port den Wert 80 ein.
  11. Klicken Sie auf Frontend-Konfiguration.

  12. Führen Sie im Abschnitt Neue Frontend-IP-Adresse und neuer Frontend-Port folgende Schritte aus:

    1. Geben Sie für Name einen Namen ein.
    2. Wählen Sie unter Subnetzwerk ein Subnetzwerk in derselben Region wie die zu spiegelnden Instanzen aus.
    3. Wählen Sie für Ports die Option Alle aus.
    4. Klicken Sie auf Erweiterte Konfigurationen und dann auf das Kästchen Diesen Load-Balancer für die Paketspiegelung aktivieren.
    5. Klicken Sie auf Fertig.
  13. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie eine neue regionale HTTP-Systemdiagnose, um die HTTP-Konnektivität zu einer Instanzgruppe an Port 80 zu testen:

    gcloud compute health-checks create http HEALTH_CHECK_NAME \
        --region=REGION \
        --port=80
    

    Dabei gilt:

    • HEALTH_CHECK_NAME: der Name der Systemdiagnose
    • REGION: die Region der VM-Instanzen, für die Sie Pakete spiegeln möchten
  2. Erstellen Sie einen Backend-Dienst für HTTP-Traffic:

    gcloud compute backend-services create COLLECTOR_BACKEND_SERVICE \
        --region=REGION \
        --health-checks-region=REGION \
        --health-checks=HEALTH_CHECK_NAME \
        --load-balancing-scheme=internal \
        --protocol=tcp
    

    Dabei gilt:

    • COLLECTOR_BACKEND_SERVICE ist der Name des Backend-Dienstes.
    • REGION: die Region der VM-Instanzen, in der Sie Pakete spiegeln möchten
    • HEALTH_CHECK_NAME: der Name der Systemdiagnose
  3. Fügen Sie dem Backend-Dienst eine Instanzgruppe hinzu:

    gcloud compute backend-services add-backend COLLECTOR_BACKEND_SERVICE \
        --region=REGION \
        --instance-group=INSTANCE_GROUP \
        --instance-group-zone=ZONE
    

    Dabei gilt:

    • COLLECTOR_BACKEND_SERVICE ist der Name des Backend-Dienstes.
    • REGION: Region der Instanzgruppe.
    • INSTANCE_GROUP: Name der Instanzgruppe.
    • ZONE: Zone der Instanzgruppe.
  4. Erstellen Sie eine Weiterleitungsregel für den Backend-Dienst:

    gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
        --region=REGION \
        --network=NETWORK \
        --subnet=SUBNET \
        --backend-service=COLLECTOR_BACKEND_SERVICE \
        --load-balancing-scheme=internal \
        --ip-protocol=TCP \
        --ports=all \
        --is-mirroring-collector
    

    Dabei gilt:

    • FORWARDING_RULE_NAME: der Name der Weiterleitungsregel
    • REGION ist die Region für die Weiterleitungsregel.
    • NETWORK ist das Netzwerk für die Weiterleitungsregel.
    • SUBNET: ein Subnetzwerk in der Region der VMs, in der Sie Pakete spiegeln möchten
    • COLLECTOR_BACKEND_SERVICE: der Backend-Dienst für diesen Load-Balancer

Nächste Schritte