Failover für externe Passthrough-Network-Load-Balancer konfigurieren

Diese Anleitung vermittelt anhand eines Beispiels, wie Sie Failover für einen externen Passthrough-Network-Load-Balancer mit einem Backend-Dienst konfigurieren. Bevor Sie diese Anleitung durcharbeiten, sollten Sie sich mit Folgendem vertraut machen:

Berechtigungen

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

Aufgabe Erforderliche Rolle
Load-Balancer-Komponenten erstellen Netzwerkadministrator
Firewallregeln hinzufügen und löschen Sicherheitsadministrator
Instanzen erstellen Compute-Instanzadministrator

Weitere Informationen finden Sie in folgenden Leitfäden:

Einrichtung

In dieser Anleitung erfahren Sie, wie Sie einen externen Passthrough-Network-Load-Balancer konfigurieren und testen, der Failover verwendet. Die Schritte in diesem Abschnitt erläutern, wie Sie folgende Elemente konfigurieren:

  1. Back-End-VMs:
    • Ein primäres Back-End in einer nicht verwalteten Instanzgruppe in Zone us-west1-a
    • Ein Failover-Back-End in einer nicht verwalteten Instanzgruppe in Zone us-west1-c
  2. Firewall-Regeln, die eingehende Verbindung zu Backend-VMs ermöglichen
  3. Eine Client-VM zum Testen von Verbindungen und Beobachten des Failover-Verhaltens
  4. Die folgenden Komponenten für externe Passthrough-Network-Load-Balancer:
    • Eine Systemdiagnose für den Backend-Dienst
    • Ein Back-End-Dienst in der Region us-west1, um die Verteilung von Verbindungen zwischen den Back-End-VMs zu verwalten
    • Eine Weiterleitungsregel und eine IP-Adresse für das Frontend des Load-Balancers

Die Architektur dieses Beispiels sieht so aus:

Failover mit einem externen Passthrough-Network Load Balancer.
Failover mit einem externen Passthrough-Network Load Balancer (zum Vergrößern klicken)

Back-End-VMs und Instanzgruppen erstellen

In diesem Schritt erstellen Sie die Back-End-VMs und nicht verwalteten Instanzgruppen:

  • Die Instanzgruppe ig-a in us-west1-a ist ein primäres Back-End mit zwei VMs:
    • vm-a1
    • vm-a2
  • Die Instanzgruppe ig-c in us-west1-c ist ein Failover-Back-End mit zwei VMs:
    • vm-c1
    • vm-c2

Das primäre und das Failover-Back-End werden in getrennten Zonen platziert, um die Anleitung zu vereinfachen und das Failover zu ermöglichen, falls eine Zone ausfällt.

Jede primäre und Backup-VM ist so konfiguriert, dass ein Apache-Webserver auf TCP-Port 80 ausgeführt wird. Apache ist standardmäßig für die Bindung an eine beliebige IP-Adresse konfiguriert. Network-Load-Balancer liefern Pakete und behalten dabei die Ziel-IP-Adresse bei.

Achten Sie darauf, dass die auf Ihren primären und Backup-VMs ausgeführte Serversoftware die IP-Adresse der Weiterleitungsregel des Load-Balancers überwacht. Die Ziel-IP-Adresse eines Pakets, das ein externer Passthrough-Network-Load-Balancer an eine Backend-VM liefert, ist die IP-Adresse der Weiterleitungsregel.

Zur Vereinfachung der Anleitung führen alle primären und Backend-VMs Debian GNU/Linux 9 aus.

Console

Backend-VMs erstellen

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf. Zu Seite „VM-Instanzen“
  2. Wiederholen Sie die nachstehenden Schritte, um vier VMs mit den folgenden Namen- und Zonenkombinationen zu erstellen.
    • 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 die Region us-west1 aus und legen Sie die Zone wie in Schritt 2 angegeben fest.
  6. Prüfen Sie im Bereich Bootlaufwerk, ob das ausgewählte Image Debian GNU/Linux 12 (Bookworm) ist. Klicken Sie auf Auswählen, wenn Sie das Image ändern möchten.
  7. Klicken Sie auf Erweiterte Optionen.
  8. Klicken Sie auf Netzwerk und konfigurieren Sie das folgende Feld:
    1. Geben Sie bei Netzwerk-Tags den Wert network-lb ein.
  9. Klicken Sie auf Verwaltung. Fügen Sie im Feld Startskript das nachfolgende Skript ein. Der Skriptinhalt ist für alle vier VMs gleich:

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

Instanzgruppen erstellen

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

    Zu den Instanzgruppen

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

    • Instanzgruppe: ig-a, Zone: us-west1-a, VMs: vm-a1 und vm-a2
    • Instanzgruppe: 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. Geben Sie bei Netzwerk den Parameter default ein.

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

  9. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie 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-12 \
        --image-project=debian-cloud \
        --tags=network-lb \
        --metadata=startup-script='#! /bin/bash
          apt-get update
          apt-get install apache2 -y
          a2ensite default-ssl
          a2enmod ssl
          vm_hostname="$(curl -H "Metadata-Flavor:Google" \
          http://metadata.google.internal/computeMetadata/v1/instance/name)"
          echo "Page served from: $vm_hostname" | \
          tee /var/www/html/index.html
          systemctl restart apache2'
    
  2. Erstellen Sie die zwei nicht verwalteten Instanzgruppen in jeder Zone:

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

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

Firewallregeln konfigurieren

Erstellen Sie eine Firewallregel, die externen Traffic zu den Back-End-Instanzen zulässt.

Console

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

    Zu den Firewall-Richtlinien

  2. Klicken Sie auf Firewallregel erstellen, um die Regel zu erstellen, die Traffic von jeder Quelle zulässt. Verwenden Sie die folgenden Werte:

    1. Name: allow-network-lb.
    2. Netzwerk:default
    3. Priorität: 1000
    4. Trafficrichtung: Eingehend
    5. Aktion bei Übereinstimmung: Zulassen.
    6. Ziele: Angegebene Zieltags
    7. Zieltags: network-lb
    8. Quellfilter: IPv4-Bereiche.
    9. Quell-IP-Bereiche: 0.0.0.0/0, der Traffic von jeder Quelle zulässt. Dadurch können sowohl der externe Traffic als auch die Systemdiagnose die Backend-Instanzen erreichen.
    10. Protokolle und Ports: Wählen Sie Angegebene Protokolle und Ports aus. Klicken Sie das Kästchen TCP an und geben Sie 80 ein.
  3. Klicken Sie auf Erstellen.

  4. Klicken Sie noch einmal auf Firewallregel erstellen, um die Regel zu erstellen, die eingehende SSH-Verbindungen zu den Instanzen zulässt. Verwenden Sie die folgenden Werte:

    1. Name: allow-ssh
    2. Netzwerk: default
    3. Priorität: 1000
    4. Trafficrichtung: Eingehend
    5. Aktion bei Übereinstimmung: Zulassen
    6. Ziele: Angegebene Zieltags
    7. Zieltags: network-lb
    8. Quellfilter: IPv4-Bereiche.
    9. IPv4-Quellbereiche: 0.0.0.0/0
    10. Protokolle und Ports: Wählen Sie Angegebene Protokolle und Ports aus. Klicken Sie das Kästchen TCP an und geben Sie 22 ein.
  5. Klicken Sie auf Erstellen.

gcloud

gcloud compute firewall-rules create allow-network-lb \
    --target-tags network-lb \
    --allow tcp:80
gcloud compute firewall-rules create allow-ssh \
    --target-tags network-lb \
    --allow tcp:22

Komponenten für den Load-Balancer konfigurieren

Mit den folgenden Schritten werden die folgenden Komponenten für den externen Passthrough-Network-Load-Balancer konfiguriert:

  • Systemdiagnose: Dieses Beispiel verwendet eine HTTP-Systemdiagnose, die nur auf die HTTP-Antwort 200 (OK) prüft.

  • Backend-Dienst: Da im Beispiel HTTP-Traffic über den internen Load-Balancer weitergeleitet wird, gibt die Konfiguration TCP und nicht UDP an. Zur Illustration von Failover hat dieser Backend-Dienst eine Failover-Quote von 0.75.

  • Weiterleitungsregel: Dieses Beispiel erstellt eine einzelne interne Weiterleitungsregel.

Console

Konfiguration starten

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

    Load Balancing aufrufen

  2. Klicken Sie auf Load-Balancer erstellen.
  3. Wählen Sie unter Typ des Load Balancers die Option Network Load Balancer (TCP/UDP/SSL) aus und klicken Sie auf Weiter.
  4. Wählen Sie für Proxy oder Passthrough die Option Passthrough-Load Balancer aus und klicken Sie auf Weiter.
  5. Wählen Sie für Öffentlich oder intern die Option Öffentlich (extern) aus und klicken Sie auf Weiter.
  6. Klicken Sie auf Konfigurieren.

Backend-Konfiguration

  1. Geben Sie auf der Seite Externen Passthrough-Network-Load-Balancer erstellen für den neuen Load Balancer den Namen tcp-network-lb ein.
  2. Klicken Sie auf Backend-Konfiguration. Der zuvor für den Load-Balancer unter Name eingegebene Wert wird angezeigt, kann aber nicht geändert werden.
  3. Click Backend configuration and make the following changes:
    1. Wählen Sie als Region us-west1 aus.
    2. Wählen Sie unter Backends im Drop-down-Menü Instanzgruppe ig-a aus. Klicken Sie auf Fertig.
    3. Klicken Sie auf Backend hinzufügen und wiederholen Sie diesen Schritt, um ig-c hinzuzufügen. Klicken Sie das Kästchen für Diese Instanzgruppe als Failover-Gruppe für Sicherungen verwenden an.
    4. Wählen Sie unter Systemdiagnose die Option Weitere Systemdiagnose erstellen oder Weitere Systemdiagnose erstellen aus und geben Sie die folgenden Informationen ein:
      • Name: hc-http-80
      • Protokoll: TCP
      • Port: 80
    5. Klicken Sie auf Speichern und fortfahren.
    6. Klicken Sie auf Erweiterte Konfigurationen.
    7. Geben Sie für Failover-Quote den Wert 0.75 ein.
    8. Überprüfen Sie, bevor Sie fortfahren, ob sich neben Back-End-Konfiguration ein blaues Häkchen befindet.

Frontend-Konfiguration

  1. Klicken Sie auf Frontend-Konfiguration.
  2. Geben Sie für network-lb-forwarding-rule einen Namen ein.
  3. Klicken Sie unter IP auf das Drop-down-Menü und wählen Sie IP-Adresse erstellen aus.
    1. Legen Sie im Bildschirm Neue statische IP-Adresse reservieren für Name den Wert network-lb-ip fest.
    2. Klicken Sie auf Reservieren.
  4. Wählen Sie Einzeln aus und geben Sie als Portnummer 80 ein.
  5. Klicken Sie auf die Schaltfläche Fertig.

    Bei erfolgreicher Einrichtung wird links neben Frontend-Konfiguration ein blauer Kreis mit einem Häkchen angezeigt.

Konfiguration überprüfen

  1. Klicken Sie auf die Schaltfläche Prüfen und abschließen, um alle Konfigurationseinstellungen für den Load-Balancer zu überprüfen.
  2. Klicken Sie, wenn die Einstellungen korrekt sind, auf Erstellen. Es kann ein paar Minuten dauern, bis der Load-Balancer erstellt ist.

    Auf dem Load-Balancing-Bildschirm sollte in der Spalte „Back-End“ ein grünes Häkchen für den neuen Load-Balancer angezeigt werden. Dies weist darauf hin, dass der neue Load-Balancer fehlerfrei ist.

gcloud

  1. Erstellen Sie eine statische externe IP-Adresse für den Load-Balancer.

    gcloud compute addresses create network-lb-ip \
        --region us-west1
    
  2. Erstellen Sie eine neue HTTP-Systemdiagnose, um die TCP-Konnektivität zu den VMs auf Port 80 zu testen.

    gcloud compute health-checks create http hc-http-80 \
        --region us-west1 \
        --port 80
    
  3. Erstellen Sie den Back-End-Dienst für HTTP-Traffic:

    gcloud compute backend-services create network-lb-backend-service \
        --protocol tcp \
        --region us-west1 \
        --health-checks hc-http-80 \
        --health-checks-region us-west1 \
        --failover-ratio 0.75
    
  4. Fügen Sie dem Back-End-Dienst ein primäres Back-End hinzu:

    gcloud compute backend-services add-backend network-lb-backend-service \
        --region us-west1 \
        --instance-group ig-a \
        --instance-group-zone us-west1-a
    
  5. Fügen Sie dem Back-End-Dienst ein Failover-Back-End hinzu:

    gcloud compute backend-services add-backend network-lb-backend-service \
        --region us-west1 \
        --instance-group ig-c \
        --instance-group-zone us-west1-c \
        --failover
    
  6. Erstellen Sie eine Weiterleitungsregel für den Backend-Dienst. Verwenden Sie die in Schritt 1 reservierte IP-Adresse als statische externe IP-Adresse des Load-Balancers.

    gcloud compute forwarding-rules create network-lb-forwarding-rule \
        --region us-west1 \
        --load-balancing-scheme external \
        --address network-lb-ip\
        --ports 80 \
        --backend-service network-lb-backend-service
    

Tests

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

Traffic an den Load-Balancer senden

Dieses Verfahren sendet externen Traffic an den Load-Balancer. Dieses Verfahren gilt für die anderen Tests.

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

    gcloud compute forwarding-rules describe network-lb-forwarding-rule \
        --region us-west1
    
  2. Stellen Sie mit curl eine Webanfrage an den Load-Balancer, um dessen IP-Adresse zu kontaktieren.

    curl http://IP_ADDRESS
    
  3. Beachten Sie den vom Befehl curl zurückgegebenen Text. Der Name der Back-End-VM, die die Antwort generiert, wird in diesem Text angezeigt. Beispiel: Page served from: vm-a1

Ausgangszustand testen

Nachdem Sie den Beispiel-Load-Balancer konfiguriert haben, sollten alle vier Back-End-VMs fehlerfrei sein:

  • Die beiden primären VMs vm-a1 und vm-a2
  • Die beiden Backup-VMs vm-c1 und vm-c2

Folgen Sie dem Testverfahren, um Traffic an den Load-Balancer zu senden. Wiederholen Sie den zweiten Schritt einige Male. Das erwartete Verhalten besteht darin, dass der Traffic von den beiden primären VMs vm-a1 und vm-a2 bereitgestellt wird, da beide fehlerfrei sind. Jede primäre VM sollte etwa in der Hälfte der Fälle eine Antwort liefern, da für diesen Load-Balancer keine Sitzungsaffinität konfiguriert wurde.

Failover testen

Dieser Test simuliert den Ausfall von vm-a1, sodass Sie das Failover-Verhalten beobachten können.

  1. Stellen Sie eine Verbindung zur VM vm-a1 her.

    gcloud compute ssh vm-a1 --zone us-west1-a
    
  2. Halten Sie den Apache-Webserver an. Nach zehn Sekunden erkennt Google Cloud diese VM als fehlerhaft. (Die im Rahmen der Konfiguration erstellte Systemdiagnose hc-http-80 verwendet das Standardprüfintervall von fünf Sekunden und als Fehlerschwellenwert zwei aufeinanderfolgende fehlgeschlagene Versuche.)

    sudo apachectl stop
    
  3. Folgen Sie dem Testverfahren, um Traffic an den Load-Balancer zu senden. Wiederholen Sie den zweiten Schritt einige Male. Das erwartete Verhalten besteht darin, dass der Traffic jetzt von den beiden Backup-VMs vm-c1 und vm-c2 bereitgestellt wird. Da nur eine primäre VM, vm-a2, fehlerfrei ist, beträgt das Verhältnis der Zahl fehlerfreier primärer VMs zur Gesamtzahl primärer VMs 0.5. Diese Zahl liegt unter dem Failover-Schwellenwert von 0.75. Daher hat Google Cloud den aktiven Pool des Load-Balancers neu konfiguriert, um die Sicherungs-VMs zu verwenden. Nun sollte jede Backup-VM etwa in der Hälfte der Fälle eine Antwort geben, wenn für diesen Load-Balancer keine Sitzungsaffinität konfiguriert ist.

Failback testen

Dieser Test simuliert ein Failback durch den Neustart des Apache-Servers auf vm-a1.

  1. Stellen Sie eine Verbindung zur VM vm-a1 her.

    gcloud compute ssh vm-a1 --zone us-west1-a
    
  2. Starten Sie den Apache-Webserver und warten Sie zehn Sekunden.

    sudo apachectl start
    
  3. Folgen Sie dem Testverfahren für Clients. Wiederholen Sie den zweiten Schritt einige Male. Das erwartete Verhalten besteht darin, dass der Traffic von den beiden primären VMs vm-a1 und vm-a2 bereitgestellt wird. Da beide primären VMs fehlerfrei sind, liegt das Verhältnis der Anzahl fehlerfreier primärer VMs zur Gesamtzahl primärer VMs bei 1.0 und damit über dem Failover-Schwellenwert von 0.75. Daher hat Google Cloud den aktiven Pool so konfiguriert, dass wieder die primären VMs verwendet werden.

Weitere Back-End-VMs hinzufügen

In diesem Abschnitt wird die Beispielkonfiguration erweitert, indem dem Load-Balancer weitere primäre und Backup-VMs hinzugefügt werden. Dazu werden zwei weitere Back-End-Instanzgruppen erstellt, um zu zeigen, dass Sie primäre und Backup-VMs auf mehrere Zonen in derselben Region verteilen können:

  • Eine dritte Instanzgruppe, ig-d in us-west1-c, dient als primäres Back-End mit zwei VMs:
    • vm-d1
    • vm-d2
  • Die vierte Instanzgruppe, ig-b in us-west1-a, dient als Failover-Back-End mit zwei VMs:
    • vm-b1
    • vm-b2

Die geänderte Architektur dieses Beispiels sieht so aus:

Failover für externen Passthrough-Network Load Balancer mit mehreren Zonen.
Failover für externen Passthrough-Network Load Balancer mit mehreren Zonen (zum Vergrößern klicken)

Zusätzliche VMs und Instanzgruppen erstellen

Führen Sie die folgenden Schritte aus, um die zusätzlichen primären und Backup-VMs sowie die zugehörigen nicht verwalteten Instanzgruppen zu erstellen.

Console

Backend-VMs erstellen

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

    Zu Seite „VM-Instanzen“

  2. Wiederholen Sie die nachstehenden Schritte, um vier VMs mit den folgenden Namen- und Zonenkombinationen zu erstellen.

    • Name: vm-b1, Zone: us-west1-a
    • Name: vm-b2, Zone: us-west1-a
    • Name: vm-d1, Zone: us-west1-c
    • Name: vm-d2, 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 die Region us-west1 aus und legen Sie die Zone wie in Schritt 2 angegeben fest.

  6. Prüfen Sie im Bereich Bootlaufwerk, ob das ausgewählte Image Debian GNU/Linux 9 Stretch ist. Klicken Sie auf Auswählen, wenn Sie das Image ändern möchten.

  7. Klicken Sie auf Erweiterte Optionen.

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

    1. Geben Sie bei Netzwerk-Tags den Wert network-lb ein.
  9. Klicken Sie auf Verwaltung. Fügen Sie im Feld Startskript das nachfolgende Skript ein. Der Skriptinhalt ist für alle vier VMs gleich:

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

Instanzgruppen erstellen

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

    Zu den Instanzgruppen

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

    • Instanzgruppe: ig-b, Zone: us-west1-a, VMs: vm-b1 und vm-b2
    • Instanzgruppe: ig-d, Zone: us-west1-c, VMs: vm-d1 und vm-d2
  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. Geben Sie bei Netzwerk den Parameter default ein.

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

  9. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie 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-b1; ZONE: us-west1-a
    • VM-NAME: vm-b2; ZONE: us-west1-a
    • VM-NAME: vm-d1; ZONE: us-west1-c
    • VM-NAME: vm-d2; ZONE: us-west1-c
    gcloud compute instances create VM-NAME \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=network-lb \
        --metadata=startup-script='#! /bin/bash
          apt-get update
          apt-get install apache2 -y
          a2ensite default-ssl
          a2enmod ssl
          vm_hostname="$(curl -H "Metadata-Flavor:Google" \
          http://metadata.google.internal/computeMetadata/v1/instance/name)"
          echo "Page served from: $vm_hostname" | \
          tee /var/www/html/index.html
          systemctl restart apache2'
    
  2. Erstellen Sie die zwei nicht verwalteten Instanzgruppen in jeder Zone:

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

    gcloud compute instance-groups unmanaged add-instances ig-b \
        --zone us-west1-a \
        --instances vm-b1,vm-b2
    gcloud compute instance-groups unmanaged add-instances ig-d \
        --zone us-west1-c \
        --instances vm-d1,vm-d2
    

Primäres Backend hinzufügen

Dieses Verfahren kann als Vorlage dienen, um dem Backend-Dienst eines vorhandenen externen Passthrough-Network-Load-Balancers eine nicht verwaltete Instanzgruppe als primäres Backend hinzuzufügen. Im konkreten Fall der Beispielkonfiguration zeigt das Verfahren, wie Sie dem Load-Balancer ig-d die Instanzgruppe network-lb als primäres Backend hinzufügen.

Console

Bearbeiten Sie die Load-Balancer-Konfiguration, um ein primäres Backend hinzuzufügen.

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

    Load-Balancing aufrufen

  2. Klicken Sie auf den Load-Balancer, den Sie ändern möchten.

  3. Klicken Sie auf Bearbeiten.

  4. Klicken Sie auf Backend-Konfiguration und nehmen Sie folgende Änderungen vor:

    1. Klicken Sie unter Backends auf Backend hinzufügen.
    2. Wählen Sie im Drop-down-Menü die Instanzgruppe aus, die als primäres Back-End hinzugefügt werden soll. In diesem Fall ist das ig-d.
    3. Klicken Sie auf Fertig.
    4. Überprüfen Sie, bevor Sie fortfahren, ob sich neben Back-End-Konfiguration ein blaues Häkchen befindet.

Konfiguration prüfen

  1. Klicken Sie auf die Schaltfläche Prüfen und abschließen und bestätigen Sie, dass das neue primäre Back-End unter Back-End angezeigt wird.
  2. Wenn die Einstellungen korrekt sind, klicken Sie auf Erstellen. Es kann ein paar Minuten dauern, bis der Load-Balancer erstellt ist.

    Auf dem Load-Balancing-Bildschirm sollte in der Spalte „Back-End“ ein grünes Häkchen für den neuen Load-Balancer angezeigt werden. Dies weist darauf hin, dass der neue Load-Balancer fehlerfrei ist.

gcloud

Verwenden Sie den folgenden Befehl gcloud, um ein primäres Backend einem Backend-Dienst eines vorhandenen externen Passthrough-Network-Load-Balancers hinzuzufügen.

gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
   --instance-group INSTANCE_GROUP_NAME \
   --instance-group-zone INSTANCE_GROUP_ZONE \
   --region REGION

Dabei gilt:

  • BACKEND_SERVICE_NAME ist der Name des Back-End-Dienstes des Load-Balancers. Verwenden Sie für das Beispiel network-lb-backend-service.
  • INSTANCE_GROUP_NAME ist der Name der Instanzgruppe, die als primäres Back-End hinzugefügt werden soll. Verwenden Sie für das Beispiel ig-d.
  • INSTANCE_GROUP_ZONE ist die Zone, in der die Instanzgruppe definiert ist. Verwenden Sie für das Beispiel us-west1-c.
  • REGION ist die Region des Load-Balancers. Verwenden Sie für das Beispiel us-west1.

Failover-Backend hinzufügen

Dieses Verfahren kann als Vorlage dienen, um dem Backend-Dienst eines vorhandenen externen Passthrough-Network-Load-Balancers eine nicht verwaltete Instanzgruppe als Failover-Backend hinzuzufügen. Im konkreten Fall der Beispielkonfiguration zeigt das Verfahren, wie Sie dem Load-Balancer ig-b die Instanzgruppe network-lb als primäres Backend hinzufügen.

Console

Bearbeiten Sie die Load-Balancer-Konfiguration, um ein primäres Backend hinzuzufügen.

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

    Load-Balancing aufrufen

  2. Klicken Sie auf den Load-Balancer, den Sie ändern möchten.

  3. Klicken Sie auf Bearbeiten.

  4. Klicken Sie auf Backend-Konfiguration und nehmen Sie folgende Änderungen vor:

    1. Klicken Sie unter Backends auf Backend hinzufügen.
    2. Wählen Sie im Drop-down-Menü die Instanzgruppe aus, die als Failover-Back-End hinzugefügt werden soll. In diesem Fall ist es ig-b.
    3. Klicken Sie das Kästchen für Diese Instanzgruppe als Failover-Gruppe für Sicherungen verwenden an.
    4. Klicken Sie auf Fertig.
    5. Überprüfen Sie, bevor Sie fortfahren, ob sich neben Back-End-Konfiguration ein blaues Häkchen befindet.

Konfiguration prüfen

  1. Klicken Sie auf die Schaltfläche Prüfen und abschließen und bestätigen Sie, dass das neue primäre Back-End unter Back-End angezeigt wird.
  2. Wenn die Einstellungen korrekt sind, klicken Sie auf Erstellen. Es kann ein paar Minuten dauern, bis der Load-Balancer erstellt ist.

    Auf dem Load-Balancing-Bildschirm sollte in der Spalte „Back-End“ ein grünes Häkchen für den neuen Load-Balancer angezeigt werden. Dies weist darauf hin, dass der neue Load-Balancer fehlerfrei ist.

gcloud

Verwenden Sie den folgenden Befehl gcloud, um ein Failover-Backend dem Backend-Dienst eines vorhandenen externen Passthrough-Network-Load-Balancers hinzuzufügen.

gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
   --instance-group INSTANCE_GROUP_NAME \
   --instance-group-zone INSTANCE_GROUP_ZONE \
   --region REGION \
   --failover

Dabei gilt:

  • BACKEND_SERVICE_NAME ist der Name des Back-End-Dienstes des Load-Balancers. Verwenden Sie für das Beispiel network-lb-backend-service.
  • INSTANCE_GROUP_NAME ist der Name der Instanzgruppe, die als Failover-Back-End hinzugefügt werden soll. Verwenden Sie für das Beispiel ig-b.
  • INSTANCE_GROUP_ZONE ist die Zone, in der die Instanzgruppe definiert ist. Verwenden Sie für das Beispiel us-west1-a.
  • REGION ist die Region des Load-Balancers. Verwenden Sie für das Beispiel us-west1.

Primäres oder Failover-Backend konvertieren

Sie können ein primäres Backend in ein Failover-Backend konvertieren oder umgekehrt, ohne die Instanzgruppe aus dem Backend-Dienst des externen Passthrough-Network-Load-Balancers zu entfernen.

gcloud

Verwenden Sie den folgenden Befehl gcloud, um ein vorhandenes primäres Back-End in ein Failover-Back-End umzuwandeln:

gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \
   --instance-group INSTANCE_GROUP_NAME \
   --instance-group-zone INSTANCE_GROUP_ZONE \
   --region REGION \
   --failover

Verwenden Sie den folgenden Befehl gcloud, um ein vorhandenes Failover-Back-End in ein primäres Back-End umzuwandeln:

gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \
   --instance-group INSTANCE_GROUP_NAME \
   --instance-group-zone INSTANCE_GROUP_ZONE \
   --region REGION \
   --no-failover

Dabei gilt:

  • BACKEND_SERVICE_NAME ist der Name des Back-End-Dienstes des Load-Balancers.
  • INSTANCE_GROUP_NAME ist der Name der Instanzgruppe.
  • INSTANCE_GROUP_ZONE ist die Zone, in der die Instanzgruppe definiert ist.
  • REGION ist die Region des Load-Balancers.

Failover-Richtlinien konfigurieren

In diesem Abschnitt wird beschrieben, wie Sie eine Failover-Richtlinie für den Backend-Dienst eines externen Passthrough-Network-Load-Balancers verwalten. Eine Failover-Richtlinie enthält die folgenden Parameter:

  • Failover-Quote
  • Traffic wird gelöscht, wenn alle Back-End-VMs fehlerhaft sind
  • Verbindungsausgleich bei Failover

Weitere Informationen zu den Parametern einer Failover-Richtlinie finden Sie unter:

Failover-Richtlinie definieren

In der folgenden Anleitung wird beschrieben, wie Sie die Failover-Richtlinie für einen vorhandenen externen Passthrough-Network-Load-Balancer definieren.

gcloud

Aktualisieren Sie den Backend-Dienst des Load-Balancers, um eine Failover-Richtlinie mit der gcloud CLI zu definieren:

gcloud compute backend-services update BACKEND_SERVICE_NAME \
   --region REGION \
   --failover-ratio FAILOVER_RATIO \
   --connection-drain-on-failover \
   --connection-draining-timeout=CONNECTION_DRAINING_TIMEOUT \
   --drop-traffic-if-unhealthy

Dabei gilt:

  • BACKEND_SERVICE_NAME ist der Name des Back-End-Dienstes des Load-Balancers. Verwenden Sie für das Beispiel network-lb.
  • REGION ist die Region des Load-Balancers. Verwenden Sie für das Beispiel us-west1.
  • FAILOVER_RATIO ist die Failover-Quote. Mögliche Werte liegen im Bereich von 0.0 bis 1.0. Verwenden Sie für das Beispiel 0.75.
  • CONNECTION_DRAINING_TIMEOUT ermöglicht die Beibehaltung von TCP-Verbindungen auf VMs bis zur Dauer des Zeitlimits für den Verbindungsausgleich. Dies gilt auch für VMs, die sich nicht mehr im aktiven Pool befinden.

Failover-Richtlinie aufrufen

In der folgenden Anleitung wird beschrieben, wie Sie die vorhandene Failover-Richtlinie für einen externen Passthrough-Network-Load-Balancer aufrufen.

gcloud

Verwenden Sie den folgenden Befehl, um die Einstellungen der Failover-Richtlinie mithilfe der gcloud CLI aufzulisten. Für nicht definierte Einstellungen in einer Failover-Richtlinie werden die Standardwerte der Failover-Richtlinie verwendet.

gcloud compute backend-services describe BACKEND_SERVICE_NAME \
   --region REGION \
   --format="get(failoverPolicy)"

Dabei gilt:

  • BACKEND_SERVICE_NAME ist der Name des Back-End-Dienstes des Load-Balancers. Verwenden Sie für das Beispiel network-lb-backend-service.
  • REGION ist die Region des Load-Balancers. Verwenden Sie für das Beispiel us-west1.

Nächste Schritte