Failover für das interne TCP/UDP-Load-Balancing

Sie können einen internen TCP/UDP-Load-Balancer konfigurieren, damit Verbindungen zwischen VM-Instanzen in primären Back-Ends verteilt und bei Bedarf auf Failover-Back-Ends gewechselt wird. Failover bietet eine Methode zur Erhöhung der Verfügbarkeit und ermöglicht gleichzeitig eine bessere Kontrolle darüber, wie Ihre Arbeitslast verwaltet wird, wenn Ihre primären Back-End-VMs nicht fehlerfrei sind.

Auf dieser Seite werden Konzepte und Anforderungen zum Failover für interne TCP/UDP-Load-Balancer erläutert. Bevor Sie das Failover für das interne TCP/UDP-Load-Balancing konfigurieren, sollten Sie sich mit dem zugehörigen Konzept über die folgenden Artikeln vertraut machen:

Sie sollten diese Konzepte unbedingt verstehen, da durch das Konfigurieren des Failovers der standardmäßige Algorithmus zur Trafficverteilung des internen TCP/UDP-Load-Balancers geändert wird.

Wenn Sie ein Back-End zu einem Back-End-Dienst des internen TCP/UDP-Load-Balancers hinzufügen, gilt dieses Back-End standardmäßig als primäres Back-End. Sie können ein Back-End als Failover-Back-End festlegen, wenn Sie es dem Back-End-Dienst des Load-Balancers hinzufügen oder den Back-End-Dienst später bearbeiten. Failover-Back-Ends empfangen nur dann Verbindungen vom Load-Balancer, wenn Systemdiagnosen bei einer konfigurierbaren Quote primärer VMs fehlschlagen.

Unterstützte Instanzgruppen

Verwaltete und nicht verwaltete Instanzgruppen werden als Back-Ends unterstützt. Der Einfachheit halber enthalten die Beispiele auf dieser Seite nicht verwaltete Instanzgruppen.

Wenn verwaltete Instanzgruppen mit Autoscaling und Failover verwendet werden, führt der aktive Pool möglicherweise wiederholt ein Failover und Failback zwischen dem primären und dem Failover-Back-End aus. Google Cloud ermöglicht die Konfiguration eines Failovers mit verwalteten Instanzgruppen, da dessen Einrichtung für Ihre Bereitstellung hilfreich sein kann.

Architektur

Das folgende einfache Beispiel zeigt einen internen TCP/UDP-Load-Balancer mit einem primären Back-End und einem Failover-Back-End.

  • Das primäre Back-End ist eine nicht verwaltete Instanzgruppe in us-west1-a.
  • Das Failover-Back-End ist eine andere nicht verwaltete Instanzgruppe in us-west1-c.
Einfaches Failover-Beispiel für das interne TCP/UDP-Load-Balancing (zum Vergrößern anklicken)
Einfaches Failover-Beispiel für das interne TCP/UDP-Load-Balancing (zum Vergrößern anklicken)

Das nächste Beispiel zeigt einen internen TCP/UDP-Load-Balancer mit zwei primären Back-Ends und zwei Failover-Back-Ends, die beide auf zwei Zonen in der Region us-west1 verteilt werden. Diese Konfiguration erhöht die Zuverlässigkeit, da sie nicht von einer einzelnen Zone für alle primären oder alle Failover-Back-Ends abhängt.

  • Primäre Back-Ends sind die nicht verwalteten Instanzgruppen ig-a und ig-d.
  • Failover-Back-Ends sind die nicht verwalteten Instanzgruppen ig-b und ig-c.
Failover für das interne TCP/UDP-Load-Balancing mit mehreren Zonen (zum Vergrößern klicken)
Failover für das interne TCP/UDP-Load-Balancing mit mehreren Zonen (zum Vergrößern anklicken)

Beim Failover werden die beiden primären Back-Ends inaktiv und die fehlerfreien VMs in den beiden Failover-Back-Ends aktiv. Eine umfassende Beschreibung der Funktionsweise des Failovers in diesem Beispiel finden Sie im Abschnitt Failover-Beispiel.

Back-End-Instanzgruppen und -VMs

Die nicht verwalteten Instanzgruppen beim internen TCP/UDP-Load-Balancing sind entweder primäre Back-Ends oder Failover-Back-Ends. Sie können ein Back-End als Failover-Back-End festlegen, wenn Sie es dem Back-End-Dienst hinzufügen oder wenn Sie ein hinzugefügtes Back-End bearbeiten. Andernfalls sind nicht verwaltete Instanzgruppen standardmäßig primär.

Sie können mehrere primäre Back-Ends und Failover-Back-Ends in einem einzelnen internen TCP/UDP-Load-Balancer konfigurieren. Dazu müssen Sie sie dem Back-End-Dienst des Load-Balancers hinzufügen.

Eine primäre VM ist Mitglied einer Instanzgruppe, die Sie als primäres Back-End definiert haben. Die VMs in einem primären Back-End gehören zum aktiven Pool des Load-Balancers (siehe der nächste Abschnitt), solange der Load-Balancer nicht seine Failover-Back-Ends nutzt.

Eine Sicherungs-VM ist Mitglied einer Instanzgruppe, die Sie als Failover-Back-End definiert haben. Die VMs in einem Failover-Back-End sind Mitglied im aktiven Pool des Load-Balancers, wenn primäre VMs fehlerhaft werden. Sie können die Anzahl der fehlerhaften VMs, die Failover auslösen, als Prozentwert konfigurieren.

Limits

  • VMs. Bis zu 250 VMs sind im aktiven Pool möglich. Mit anderen Worten, Ihre primären Back-End-Instanzgruppen können insgesamt bis zu 250 primäre VMs und Ihre Failover-Back-End-Instanzgruppen insgesamt bis zu 250 Sicherungs-VMs haben.

  • Nicht verwaltete Instanzgruppen. Bis zu 50 primäre Back-End-Instanzgruppen und bis zu 50 Failover-Back-End-Instanzgruppen sind möglich.

Beispielsweise kann eine maximale Bereitstellung fünf primäre Back-Ends und fünf Failover-Back-Ends haben, wobei jede Instanzgruppe 50 VMs enthält.

Aktiver Pool

Der aktive Pool ist eine Sammlung von Back-End-VMs, an die ein interner TCP/UDP-Load-Balancer neue Verbindungen sendet. Die Mitgliedschaft von Back-End-VMs im aktiven Pool wird automatisch anhand der fehlerfreien Back-Ends und der von Ihnen festgelegten Bedingungen (siehe Failover-Quote) berechnet.

Der aktive Pool kombiniert nie primäre VMs und Sicherungs-VMs. Mit den folgenden Beispielen werden die Möglichkeiten für eine Mitgliedschaft dargestellt. Während des Failovers enthält der aktive Pool nur Sicherungs-VMs. Während des normalen Betriebs (Failback) enthält der aktive Pool nur primäre VMs.

Aktiver Pool bei Failover und Failback (zum Vergrößern anklicken)
Aktiver Pool bei Failover und Failback (zum Vergrößern anklicken)

Failover und Failback

Failover und Failback sind die automatischen Prozesse, mit denen Back-End-VMs in den oder aus dem aktiven Pool des Load-Balancers gewechselt werden. Wenn Google Cloud primäre VMs aus dem aktiven Pool entfernt und dem aktiven Pool fehlerfreie Failover-VMs hinzufügt, wird dieser Vorgang als Failover bezeichnet. Wird dieser Vorgang von Google Cloud rückgängig macht, wird der Schritt als Failback bezeichnet.

Failover-Richtlinie

Eine Failover-Richtlinie ist eine Sammlung von Parametern, die Google Cloud für Failover und Failback verwendet. Jeder interne TCP/UDP-Load-Balancer hat eine Failover-Richtlinie mit mehreren Einstellungen:

  • Failover-Quote
  • Traffic wird unterbrochen, wenn alle Back-End-VMs fehlerhaft sind
  • Verbindungsausgleich bei Failover und Failback

Failover-Quote

Eine konfigurierbare Failover-Quote legt fest, wann Google Cloud ein Failover oder Failback ausführt und sich dadurch die Mitgliedschaft im aktiven Pool ändert. Das Verhältnis kann 0.0 bis einschließlich 1.0 betragen. Wenn Sie keine Failover-Quote angeben, verwendet Google Cloud den Standardwert 0.0. Es empfiehlt sich, die Failover-Quote auf eine Zahl zu setzen, die für Ihren Anwendungsfall geeignet ist, anstatt sich auf diese Standardeinstellung zu verlassen.

Bedingungen VMs im aktiven Pool
  1. Failover-Quote (x) != 0.0.
    Quote fehlerfreier primärer VMs >= x.
  2. Failover-Quote (x) = 0.0.
    Anzahl fehlerfreier primärer VMs > 0.
Alle fehlerfreien primären VMs
Wenn mindestens eine Sicherungs-VM fehlerfrei ist und:
  1. Failover-Quote (x) != 0.0.
    Quote fehlerfreier primärer VMs < x.
  2. Failover-Quote = 0.0.
    Anzahl fehlerfreier primärer VMs = 0.
Alle fehlerfreien Sicherungs-VMs
Wenn alle primären und alle Sicherungs-VMs fehlerhaft sind und wenn Sie Ihren Load-Balancer nicht so konfiguriert haben, dass der Traffic in dieser Situation unterbrochen wird Alle primären VMs als letztes Mittel

In den folgenden Beispielen wird die Mitgliedschaft im aktiven Pool verdeutlicht. Ein Beispiel mit Berechnungen finden Sie unter Failover-Beispiel.

  • Bei einer Failover-Quote von 1.0 müssen alle primären VMs fehlerfrei sein. Wenn mindestens eine primäre VM fehlerhaft wird, führt Google Cloud ein Failover aus und verschiebt die Sicherungs-VMs in den aktiven Pool.
  • Bei einer Failover-Quote von 0.1 müssen mindestens 10 % der primären VMs fehlerfrei sein. Andernfalls führt Google Cloud ein Failover aus.
  • Eine Failover-Quote von 0.0 bedeutet, dass Google Cloud nur dann ein Failover ausführt, wenn alle primären VMs fehlerhaft sind. Sie führt kein Failover durch, wenn mindestens eine primäre VM fehlerfrei ist.

Ein interner TCP/UDP-Load-Balancer verteilt Verbindungen zwischen VMs im aktiven Pool gemäß dem Algorithmus zur Trafficverteilung.

Traffic wird gelöscht, wenn alle Back-End-VMs fehlerhaft sind

Wenn alle primären und Backup-VMs fehlerhaft sind, verteilt Google Cloud neue Verbindungen standardmäßig nur auf die primären VMs. Dies wird als letztes Mittel verwendet. Die Backup-VMs sind von dieser „letztes-Mittel”-Verteilung der Verbindungen ausgeschlossen.

Wenn Sie möchten, können Sie Ihren internen TCP/UDP-Load-Balancer so konfigurieren, dass neue Verbindungen unterbrochen werden, wenn alle primären und Sicherungs-VMs fehlerhaft sind.

Verbindungsausgleich bei Failover und Failback

Durch den Verbindungsausgleich können vorhandene TCP-Sitzungen bis zu einem konfigurierbaren Zeitraum aktiv bleiben, auch nachdem Back-End-VMs fehlerhaft werden. Wenn Ihr Load-Balancer das Protokoll TCP verwendet, gilt Folgendes:

  • Standardmäßig ist der Verbindungsausgleich aktiviert. Bereits vorhandene TCP-Sitzungen können auf einer Back-End-VM für bis zu 300 Sekunden (5 Minuten) aktiv bleiben, auch wenn die Back-End-VM fehlerhaft wird oder sich nicht im aktiven Pool des Load-Balancers befindet.

  • Sie können den Verbindungsausgleich während Failover- und Failback-Ereignissen deaktivieren. Das Deaktivieren des Verbindungsausgleichs während des Failovers und Failbacks sorgt dafür, dass alle TCP-Sitzungen, einschließlich der eingerichteten, schnell beendet werden. Verbindungen zu Back-End-VMs können mit einem TCP-Rücksetzpaket geschlossen werden.

Das Deaktivieren des Verbindungsausgleichs bei Failover und Failback ist in folgenden Fällen hilfreich:

  • Back-End-VMs patchen. Konfigurieren Sie vor dem Patchen Ihre primären VMs so, dass Systemdiagnosen fehlschlagen, damit der Load-Balancer ein Failover ausführt. Durch das Deaktivieren des Verbindungsausgleichs wird sichergestellt, dass alle Verbindungen schnell und in geplanter Weise auf die Sicherungs-VMs übertragen werden. Dadurch können Sie Updates installieren und die primären VMs neu starten, ohne dass bereits vorhandene Verbindungen bestehen bleiben. Nach dem Patchen kann Google Cloud ein Failback ausführen, wenn Systemdiagnosen für eine ausreichende Anzahl primärer VMs (definiert durch die Failover-Quote) erfolgreich sind.

  • Einzelne Back-End-VMs für Datenkonsistenz. Wenn nur eine primäre VM das Ziel für alle Verbindungen sein soll, deaktivieren Sie den Verbindungsausgleich. So wird verhindert, dass beim Wechsel von einer primären zu einer Sicherungs-VM vorhandene Verbindungen auf beiden VMs bestehen bleiben. Dadurch wird die Wahrscheinlichkeit von Dateninkonsistenzen verringert, da immer nur eine Back-End-VM aktiv ist.

Failover-Beispiel

Im folgenden Beispiel wird das Failover-Verhalten für das im Abschnitt Architektur dargestellte Beispiel eines internen TCP/UDP-Load-Balancers mit mehreren Zonen beschrieben.

Failover für das interne TCP/UDP-Load-Balancing mit mehreren Zonen (zum Vergrößern klicken)
Failover für das interne TCP/UDP-Load-Balancing mit mehreren Zonen (zum Vergrößern anklicken)

Die primären Back-Ends für diesen Load-Balancer sind die nicht verwalteten Instanzgruppen ig-a in us-west1-a und ig-d in us-west1-c. Jede Instanzgruppe enthält zwei VMs. Alle vier VMs aus beiden Instanzgruppen sind primäre VMs:

  • vm-a1 in ig-a
  • vm-a2 in ig-a
  • vm-d1 in ig-d
  • vm-d2 in ig-d

Die Failover-Back-Ends für diesen Load-Balancer sind die nicht verwalteten Instanzgruppen ig-b in us-west1-a und ig-c in us-west1-c. Jede Instanzgruppe enthält zwei VMs. Alle vier VMs aus beiden Instanzgruppen sind Sicherungs-VMs:

  • vm-b1 in ig-b
  • vm-b2 in ig-b
  • vm-c1 in ig-c
  • vm-c2 in ig-c

Angenommen, Sie möchten eine Failover-Richtlinie für diesen Load-Balancer so konfigurieren, dass neue Verbindungen an Sicherungs-VMs gesendet werden, wenn die Zahl der fehlerfreien primären VMs kleiner als zwei ist. Legen Sie dazu für die Failover-Quote den Wert 0.5 (50%) fest. Google Cloud ermittelt anhand der Failover-Quote die Mindestanzahl an primären VMs, die fehlerfrei sein müssen. Dazu wird die Failover-Quote mit der Anzahl der primären VMs multipliziert: 4 × 0.5 = 2.

Wenn alle vier primären VMs fehlerfrei sind, verteilt Google Cloud neue Verbindungen an alle VMs. Wenn für primäre VMs die Systemdiagnosen nicht erfolgreich sind:

  • Falls vm-a1 und vm-d1 fehlerhaft werden, verteilt Google Cloud neue Verbindungen zwischen den beiden verbleibenden fehlerfreien primären VMs (vm-a2 und vm-d2), da die Anzahl der fehlerfreien primären VMs den Mindestwert darstellt.

  • Wenn für vm-a2 die Systemdiagnosen ebenfalls fehlschlagen und nur eine fehlerfreie primäre VM (vm-d2) übrig bleibt, erkennt Google Cloud, dass die Anzahl der fehlerfreien primären VMs unter dem Mindestwert liegt. Als Folge wird ein Failover ausgeführt. Der aktive Pool besteht aus den vier fehlerfreien Sicherungs-VMs, auf die neue Verbindungen in den Instanzgruppen ig-b und ig-c verteilt werden. Auch wenn die VM vm-d2 fehlerfrei bleibt, wird sie aus dem aktiven Pool entfernt und erhält keine neuen Verbindungen.

  • Wenn vm-a2 wiederhergestellt wird und die Systemdiagnose dazu erfolgreich ist, erkennt Google Cloud, dass der Mindestwert von zwei für die Anzahl der fehlerfreien primären VMs erreicht ist, sodass ein Failback ausgeführt wird. Für den aktiven Pool werden die beiden fehlerfreien primären VMs vm-a2 und vm-d2 festgelegt und neue Verbindungen werden zwischen ihnen verteilt. Alle Sicherungs-VMs werden aus dem aktiven Pool entfernt.

  • Wenn andere primäre VMs wiederhergestellt werden und ihre Systemdiagnosen erfolgreich sind, fügt Google Cloud sie dem aktiven Pool hinzu. Beispiel: Wenn vm-a1 fehlerfrei wird, legt Google Cloud für den aktiven Pool die drei fehlerfreien primären VMs vm-a1, vm-a2 und vm-d2 fest und verteilt neue Verbindungen zwischen ihnen.

Weitere Informationen