Zielpools verwenden

Externes TCP/UDP-Netzwerk-Load-Balancing verwendet einen Zielpool, um eine Gruppe von Instanzen zu definieren, die eingehenden Traffic empfangen. Wenn die Weiterleitungsregel des Load-Balancers Traffic an einen Zielpool weiterleitet, wählt der Load-Balancer anhand eines Hashs der Quell-IP-Adresse, des Quellports, der Ziel-IP-Adresse und des Zielports eine Instanz aus dem Zielpool aus.

Wenn ein Zielpool eine einzelne virtuelle Maschine (VM) enthalten soll, sollten Sie die Protokollweiterleitung anstelle des Load-Balancings verwenden.

Zielpooleigenschaften

Zielpools arbeiten mit Weiterleitungsregeln, die TCP- und UDP-Traffic verarbeiten können. Sie müssen einen Zielpool erstellen, bevor Sie eine Weiterleitungsregel dafür anwenden können.

Zielpools verwenden Legacy-HTTP-Systemdiagnosen.

Ein Zielpool besteht aus den folgenden Eigenschaften:

name
[Erforderlich] Der Name des Zielpools. Der Name muss in diesem Projekt einmalig sein, 1 bis 63 Zeichen umfassen und mit dem regulären Ausdruck [a-z]([-a-z0-9]*[a-z0-9])? übereinstimmen. Daher muss das erste Zeichen kleingeschrieben sein und alle weiteren Zeichen müssen aus Bindestrichen, Kleinbuchstaben und Ziffern bestehen. Das letzte Zeichen darf kein Bindestrich sein.
description
[Optional] Eine benutzerdefinierte Beschreibung dieses Zielpools.
region

[Erforderlich] Die vollqualifizierte URL zu der Region, wo dieser Zielpool existieren soll. Dies sollte die gleiche Region sein, in der sich Ihre gewünschten Instanzen befinden werden. Beispiel:

"region" : "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]"
healthChecks[ ]

[Optional] Eine optionale Liste von Systemdiagnosen für diesen Zielpool. Es kann nur eine Systemdiagnose mit einem bestimmten Zielpool verbunden werden. Weitere Informationen hierzu finden Sie unter Systemdiagnose.

instances[ ]

[Erforderlich] Eine Liste von Instanz-URLs, die den Traffic für diesen Zielpool bearbeiten sollten. Alle Instanzen müssen sich in der gleichen Region wie der Zielpool befinden, aber Instanzen können zu verschiedenen Zonen innerhalb einer einzelnen Region gehören. Beispiel:

"instances" : [
  "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE]",
  "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE-2]"
]
sessionAffinity

[Optional] Steuert die Methode, die angewandt wird, um eine Back-End-VM-Instanz auszuwählen. Sie können diesen Wert nur bei der Erstellung des Zielpools festlegen. Wenn Sie diesen Wert einmal eingestellt haben, können Sie ihn nicht mehr ändern. Die Hash-Verfahren wählt einen Back-End basierend auf einer Teilmenge der folgenden 5 Werte:

  • Quell-/Ziel-IP
  • Quell-/Ziel-Port
  • Layer-4-Protokoll (TCP, UDP)

Mögliche Hashes sind:

NONE (d. h., es wurde kein Hash festgelegt) (Standard)
Ein 5-Tupel-Hashing, das die Quell- und Ziel-IP-Adressen, die Quell- und Ziel-Ports sowie ein Protokoll verwendet. Jede neue Verbindung kann auf einer beliebigen Instanz enden, aber der gesamte Traffic einer bestimmten Verbindung bleibt auf derselben Instanz, sofern die Instanz fehlerfrei bleibt.
CLIENT_IP_PROTO
Ein 3-Tupel-Hashing, das die Quell- und Ziel-IP-Adressen und das Protokoll verwendet. Alle Verbindungen von einem Client werden auf der gleichen Instanz enden, solange sie dasselbe Protokoll verwenden und die Instanz fehlerfrei bleibt.
CLIENT_IP
Ein 2-Tupel-Hashing, das die Quell- und Ziel-IP-Adressen verwendet. Alle Verbindungen von einem Client werden unabhängig vom Protokoll auf der gleichen Instanz enden, solange die Instanz fehlerfrei bleibt.

Ein 5-Tupel-Hashing bietet eine gute Verteilung des Traffics über viele virtuelle Maschinen hinweg. Eine zweite Sitzung vom selben Client kann jedoch auf einer anderen Instanz ankommen, weil sich der Quellport ändern kann. Wenn Sie möchten, dass alle Sitzungen vom gleichen Client das gleiche Back-End erreichen, solange das Back-End fehlerfrei bleibt, legen Sie die Optionen CLIENT_IP_PROTO oder CLIENT_IP fest.

Allgemein gilt: Wenn Sie eine 3-Tupel- oder 2-Tupel-Methode wählen, erhalten Sie eine bessere Sitzungsaffinität als mit der Standard-5-Tupel-Methode, aber der gesamten Traffic wird eventuell nicht gleichmäßig verteilt.

Fragmentierte UDP-Pakete: Wenn Sie das Load-Balancing für einen UDP-Traffic ausführen, der wahrscheinlich fragmentiert ist, setzen Sie die Sitzungsaffinität auf CLIENT_IP_PROTO oder CLIENT_IP fest. Verwenden Sie nicht NONE (5-Tupel-Hashing). Dies ist erforderlich, weil die anderen UDP-Fragmente, mit Ausnahme des ersten Fragments, keine Portnummer beinhalten und Load-Balancing die Fragmente ohne Port weglassen könnte. Weitere Informationen hierzu finden Sie unter Load-Balancing und fragmentierte UDP-Pakete.

backupPool

[Optional] Eine vollqualifizierte URL zu einer anderen Zielpoolressource. Ein Sicherungspool ist ein Zielpool, auf den ein anderer Zielpool verweist. Sie müssen auch failoverRatio angeben, um dieses Feature nutzen zu können. Wenn das Verhältnis von fehlerfreien virtuellen Maschinen in Ihrem Zielpool unter failoverRatio fällt, sendet der Netzwerk-Load-Balancer Traffic an Ihren Sicherungspool. Allerdings können Sie pro Zielpool nur einen Sicherungspool haben. Der Sicherungspool muss sich in der gleichen Region wie der Zielpool befinden. Wenn das Verhältnis von fehlerfreien Instanzen in Ihrem Zielpool unter den konfigurierten Wert der Failover-Quote fällt, wendet der Netzwerk-Load-Balancer die folgenden Regeln zur Trafficweiterleitung an:

  1. Wenn das Verhältnis der fehlerfreien Instanzen zur Gesamtzahl der Instanzen im Zielpool kleiner als die Failover-Quote ist, wird Traffic an fehlerfreie Instanzen im Sicherungspool gesendet.
  2. Wenn das Verhältnis von fehlerfreien Instanzen zur Gesamtzahl der Instanzen im Zielpool kleiner als die Failover-Quote ist, aber keine verbleibenden fehlerfreien Instanzen im Sicherungspool vorhanden sind, wird der Traffic zu den verbleibenden fehlerfreien Instanzen im Zielpool gesendet.
  3. Wenn der Zielpool nicht leer ist und alle Instanzen sowohl im Ziel- als auch im Sicherungspool die Systemdiagnosen nicht bestehen, wird der Traffic als letztes Mittel an alle Instanzen im Zielpool gesendet.
  4. Wenn der Zielpool leer ist und alle Instanzen im Sicherungspool die Systemdiagnosen nicht bestehen, wird der Traffic als letztes Mittel an alle Instanzen im Sicherungspool gesendet.

Es wird nur eine Failover-Ebene unterstützt. Wenn der Zielpool A beispielsweise über den Sicherungspool B und der Sicherungspool B über den Sicherungspool C verfügt, kann der für den Zielpool A bestimmte Traffic nur in den Sicherungspool B und nicht in den Sicherungspool C geleitet werden.

failoverRatio

[Optional] Ein Gleitkommawert zwischen 0.0 und 1.0, der bestimmt, wann dieser Zielpool für fehlerhaft erklärt wird. Wenn dieser Wert zum Beispiel auf .1 festgelegt wird, wird dieser Zielpool als fehlerhaft erklärt, wenn die Anzahl der fehlerfreien Instanzen unter .1 (10 %) liegt. Wenn das Failover-Verhältnis 0.0 beträgt, muss zumindest ein Back-End fehlerfrei sein, damit der Pool als fehlerfrei erachtet wird. Wenn das Failover-Verhältnis auf 1.0 festgelegt ist, müssen alle Instanzen fehlerfrei sein, damit der Pool als fehlerfrei eingestuft wird. Sie müssen diesen Wert festlegen, wenn Sie das Feld backupPool definieren.

Failover-Bedingungen

Bedingungen Neue Verbindungen gehen an
Failover-Quote !=0, fehlerfreie VMs im Zielpool >= FR Zielpool
Failover-Quote =0, fehlerfreie VMs im Zielpool > 0 Zielpool
Failover-Quote !=0, fehlerfreie VMs im Zielpool < FR; mindestens eine VM im Sicherungspool ist fehlerfrei Sicherungspool
Failover-Quote =0, fehlerfreie VMs im Zielpool = 0; mindestens eine VM im Sicherungspool ist fehlerfrei Sicherungspool
Mindestens eine VM befindet sich im Zielpool, alle VMs im Zielpool sind fehlerhaft und alle VMs im Sicherungspool sind fehlerhaft Zielpool (letztes Mittel)
Im Zielpool befinden sich keine VMs und alle VMs im Sicherungspool sind fehlerhaft Sicherungspool (letztes Mittel)
Im Zielpool befinden sich keine VMs; im Sicherungspool befinden sich ebenfalls keine VMs Traffic wird unterbrochen

Zielpool hinzufügen

Verwenden Sie zum Hinzufügen eines Zielpools mit gcloud compute den Befehl target-pools create:

gcloud compute target-pools create TARGET_POOL \
    [--backup-pool BACKUP_POOL] \
    [--description DESCRIPTION] \
    [--failover-ratio FAILOVER_RATIO] \
    [--http-health-check HEALTH_CHECK] \
    [--session-affinity SESSION_AFFINITY; default="NONE"]

Senden Sie zum Erstellen eines Zielpools in der API eine HTTP POST-Anfrage an den folgenden URI:

https://www.googleapis.com/v1/compute/projects/[PROJECT_ID]/regions/[REGION]/targetPools

{
  "name": name,
  "instances": [
     "https://www.googleapis.com/v1/compute/project/[PROJECT_ID]/[ZONE]/[ZONE]/instances/[INSTANCE]",
     "https://www.googleapis.com/v1/compute/project/[PROJECT_ID]/[ZONE]/[ZONE]/instances/[INSTANCE-2]",
  ]
}

Instanz zum Zielpool hinzufügen oder entfernen

Verwenden Sie zum Hinzufügen von Instanzen zu einem Zielpool mit gcloud compute den Befehl target-pools add-instances:

gcloud compute target-pools add-instances TARGET_POOL \
    --instances INSTANCE,[INSTANCE,...]

Verwenden Sie zum Entfernen von Instanzen den Befehl target-pools remove-instances:

gcloud compute target-pools remove-instances TARGET_POOL \
    --instances INSTANCE,[INSTANCE,...]

Senden Sie in der API eine POST-Anfrage an die folgenden URIs:

https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/[TARGET_POOL]/removeInstance
https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/[TARGET_POOL]/addInstance

Der Text Ihrer Anfrage sollte die vollqualifizierten URIs zu den Instanzen enthalten, die Sie hinzufügen oder entfernen möchten:

{
 "instances": [
    {"instance": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE]"},
    {"instance": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE-2]"}
  ]
}

Weitere Informationen finden Sie in der API-Referenzdokumentation für die Methoden targetPools.addInstance und targetPools.removeInstance.

Zielpools auflisten

Verwenden Sie zum Auflisten vorhandener Zielpools mit gcloud compute den Befehl target-pools list:

gcloud compute target-pools list

Für eine ausführlichere Ausgabe verwenden Sie den Befehl describe und legen einen Poolnamen fest:

Senden Sie in der API eine GET-Anfrage an den folgenden URI:

https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools

Zielpool beschreiben

Um Informationen zu einem einzelnen Zielpool mit gcloud compute abzurufen, verwenden Sie den Befehl target-pools describe:

gcloud compute target-pools describe TARGET_POOL

Senden Sie aus der API eine leere GET-Anfrage an folgenden URI:

https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/[TARGET_POOL]

Systemstatus von Instanzen abfragen

Zur Prüfung des aktuellen Systemstatus einer Instanz oder aller Instanzen im Zielpool können Sie den Befehl gcloud compute target-pools get-health verwenden:

gcloud compute target-pools get-health TARGET_POOL \
    [--fields FIELDS [FIELDS ...]] \
    [--format FORMAT; default="yaml"] \
    [--limit LIMIT] \
    [--raw-links] \
    [--sort-by SORT_BY]

Der Befehl gibt den Systemstatus entsprechend der konfigurierten Systemdiagnose mit fehlerfrei oder fehlerhaft zurück.

Stellen Sie in der API eine HTTP POST-Anfrage an den folgenden URI, wobei die Instanz im Text der Anfrage festlegt ist:

https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/[TARGET_POOL]/getHealth

{
  "instance": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE]"
}

Zielpool löschen

Um einen Zielpool zu löschen, müssen Sie zuerst sicherstellen, dass keine Weiterleitungsregel auf diesen Zielpool verweist. Wenn eine Weiterleitungsregel derzeit auf einen Zielpool verweist, müssen Sie die Weiterleitungsregel löschen, um die Referenz zu entfernen.

Verwenden Sie zum Löschen eines Zielpools mit gcloud compute den Befehl target-pools delete:

gcloud compute target-pools delete TARGET_POOL

Senden Sie aus der API eine leere DELETE-Anfrage an folgenden URI:

https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/[TARGET_POOL]

Systemdiagnose dem Zielpool hinzufügen oder daraus entfernen

Die Objekte der Systemdiagnose sind eigenständige, globale Ressourcen, die zu einem Zielpool gehören oder von ihm getrennt sein können.

Wenn einem Zielpool keine Systemdiagnose zugeordnet ist, behandelt der Netzwerk-Load-Balancer alle Instanzen als fehlerfrei und sendet Traffic an alle Instanzen im Zielpool. Wenn Sie jedoch den Systemstatus eines Zielpools ohne Systemdiagnose abfragen, wird der Status unhealthy zurückgegeben und signalisiert, dass der Zielpool keine Systemdiagnose hat. Wir empfehlen, dass Ihre Zielpools über dazugehörige Systemdiagnosen verfügen sollten, damit Sie Ihre Instanzen besser verwalten können.

Beachten Sie, dass das Netzwerk-Load-Balancing Legacy-HTTP-Systemdiagnosen verwendet, um den Status der Instanzen im Zielpool zu ermitteln. Ein Netzwerk-Load-Balancer kann nur eine Legacy-HTTP-Systemdiagnose verwenden, keine Legacy-HTTPS-Systemdiagnose.

Verwenden Sie zum Hinzufügen einer Systemdiagnose zu einem Zielpool mit gcloud compute den Befehl target-pools add-health-checks:

gcloud compute target-pools add-health-checks TARGET_POOL \
    --http-health-check HEALTH_CHECK

Verwenden Sie zum Entfernen einer Systemdiagnose den Befehl target-pools remove-health-checks:

gcloud compute target-pools remove-health-checks TARGET_POOL \
  --http-health-check HEALTH_CHECK

Senden Sie eine HTTP POST-Anfrage an die entsprechenden URIs, um eine Systemdiagnose mithilfe der API zu verknüpfen oder zu trennen:

https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/[TARGET_POOL]/removeHealthCheck
https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/[TARGET_POOL]/addHealthCheck

Der Text Ihrer Anfrage sollte die zu verknüpfende oder zu trennende Systemdiagnose enthalten:

{
  "healthCheck": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/httpHealthChecks/HEALTH_CHECK"
}

Weitere Informationen finden Sie in der API-Referenzdokumentation zu targetPools.addHealthCheck und targetPools.removeHealthCheck.

Sicherungszielpool hinzufügen oder entfernen

Wenn Sie das erste Mal einen Zielpool einrichten, können Sie wählen, ob ein Sicherungszielpool für den Trafficempfang verwendet werden soll, wenn Ihr Zielpool fehlerhaft wird.

Wenn Sie bisher noch keinen Sicherungszielpool eingerichtet haben, sollten Sie auch Systemdiagnosen festlegen, damit das Feature ordnungsgemäß funktioniert.

Verwenden Sie den Befehl target-pools set-backup, um eine Sicherungspool-Ressource mit gcloud compute zu aktualisieren:

gcloud compute target-pools set-backup TARGET_POOL \
    --backup-pool BACKUP_POOL \
    --failover-ratio FAILOVER_RATIO

Für eine Anfrage zum Aktualisieren oder Löschen eines Sicherungspools durch die API, senden Sie eine POST-Anfrage an den folgenden URI:

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/[TARGET_POOL]/setBackup?failoverRatio=FAILOVER

{
  "target": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/BACKUP_POOL"
}

Wenn Sie ein leeres Ziel oder kein Failover-Verhältnis definieren, dann ist das Verhalten des Sicherungspools für diesen Zielpool deaktiviert.

Weitere Informationen