ADC

Gewünschten Satz von Servicegruppenmitgliedern für eine Servicegruppe in einem NITRO-API-Aufruf konfigurieren

Es wurde Unterstützung hinzugefügt, um einen gewünschten Satz von Dienstgruppenmitgliedern für eine Dienstgruppe in einem NITRO-API-Aufruf zu konfigurieren. Eine neue API, Desired State API, wurde hinzugefügt, um diese Konfiguration zu unterstützen. Mit der API “Desired State” können Sie:

  • Stellen Sie eine Liste der Dienstgruppenmitglieder in einer einzigen PUT-Anforderung auf der Ressource “servicegroup_servicegroupmemberlist_binding” bereit.
  • Geben Sie ihr Gewicht und ihren Zustand (optional) in dieser PUT-Anfrage an.
  • Synchronisieren Sie die Appliance-Konfiguration effektiv mit Bereitstellungsänderungen um Anwendungsserver.

Die NetScaler-Appliance vergleicht die angeforderte gewünschte Elementgruppe mit der konfigurierten Elementgruppe. Dann bindet es automatisch die neuen Mitglieder und entbindet die Mitglieder, die nicht in der Anfrage anwesend sind.

Hinweis:

  • Diese Funktion wird nur für Dienstgruppen des Typs unterstützt API.
  • Sie können nur IP-Adressbasierte Dienste mithilfe der API für den gewünschten Status binden, domänennamenbasierte Dienste sind nicht zulässig.
  • Zuvor kann nur ein Servicegruppenmitglied in einem NITRO -Aufruf gebunden werden.

Wichtig

Die gewünschte State-API für die ServiceGroup-Mitgliedschaft wird in der NetScaler Clusterbereitstellung unterstützt.

Anwendungsfall: Synchronisieren Sie Bereitstellungsänderungen mit der NetScaler Appliance in großen Bereitstellungen wie Kubernetes

Bei großen und hochdynamischen Bereitstellungen (z. B. Kubernetes) besteht die Herausforderung darin, die Appliance-Konfiguration mit der Änderungsrate der Bereitstellungen auf dem neuesten Stand zu halten, um den Anwendungsverkehr genau zu bedienen. In solchen Bereitstellungen sind Controller (Ingress oder E-W Controller) für die Aktualisierung der ADC-Konfiguration verantwortlich. Wann immer Änderungen an der Bereitstellung vorgenommen werden, kube-api server sendet den effektiven Satz von Endpunkten über “Endpunkte-Ereignis” an den Controller. Der Controller verwendet den Read-Delta-Modify-Ansatz, bei dem er Folgendes durchführt:

  • Ruft die aktuell konfigurierte Endpunktsatz (Dienstgruppenmitgliedergruppe einer Dienstgruppe) für den Dienst von der ADC-Appliance ab.
  • Vergleicht die konfigurierte Endpunktsatz mit der Menge im empfangenen Ereignis.
  • Bindet die neuen Endpunkte (Mitglieder der Dienstgruppe) oder löst die gelöschten Endpunkte.

Da die Änderungsrate und die Größe der Dienste in dieser Umgebung hoch ist, ist diese Konfigurationsmethode nicht effizient und kann Konfigurationsupdates verzögern.

Die gewünschte Status-API löst das Problem, indem sie die beabsichtigte Mitgliedergruppe für eine Servicegruppe in einer einzigen API akzeptiert und die Konfiguration effektiv aktualisiert.

Erstellen einer Service-Gruppe vom Typ-API mit der CLI

Geben Sie an der Eingabeaufforderung;

add serviceGroup <serviceGroupName>@ <serviceType> [-autoScale <autoScale>]

Beispiel:

add serviceGroup svg1 HTTP -autoScale API

Sie können die ParameterautoDisablegraceful, autoDisabledelay und autoScale und konfigurieren, indem Sie den Befehl serviceGroup hinzufügen oder den Befehl serviceGroup festlegen.

add serviceGroup <serviceGroupName>@ <serviceType> \[-autoScale <autoScale>] \[-autoDisablegraceful \( YES | NO)] \[-autoDisabledelay <secs>]

add serviceGroup <serviceGroupName>@ <serviceType> \[-autoScale \(API |CLOUD | DISABLED| DNS |POLICY)]

set serviceGroup <serviceGroupName \[-autoDisablegraceful \( YES | NO)] \[-autoDisabledelay <secs>]

set serviceGroup <serviceGroupName \[-autoScale \(API |CLOUD | DISABLED| DNS |POLICY)]

Beispiel:

add serviceGroup svg1 HTTP autoDisablegraceful YES -autoDisabledelay 100

add serviceGroup svg1 HTTP -autoScale API

set serviceGroup svg1 -autoDisablegraceful  YES -autoDisabledelay 100

set serviceGroup svg1 -autoScale API

Argumente

autoDisablegraceful

Zeigt ein ordnungsgemäßes Herunterfahren des Dienstes an. Wenn diese Option aktiviert ist, wartet die Appliance darauf, dass alle ausstehenden Verbindungen zu diesem Dienst geschlossen werden, bevor sie den Dienst löscht. Für Clients, die bereits eine dauerhafte Sitzung im System haben, werden weiterhin neue Verbindungen oder Anfragen an diesen Dienst gesendet. Das Servicemitglied wird nur gelöscht, wenn keine ausstehenden Verbindungen bestehen. Standardwert: NO

autoDisabledelay

Zeigt die zulässige Zeit (in Sekunden) für ein ordnungsgemäßes Herunterfahren an. Während dieser Zeit werden weiterhin neue Verbindungen oder Anfragen an diesen Dienst für Clients gesendet, die bereits eine dauerhafte Sitzung im System haben. Verbindungen oder Anfragen von neuen Clients, die keine Persistenzsitzungen auf dem System haben, werden nicht an den Dienst gesendet. Stattdessen werden sie unter anderen verfügbaren Diensten Lastenausgleich durchgeführt. Nach Ablauf der Verzögerungszeit wird das Servicemitglied gelöscht.

Autoscale-API

Das API-Argument Autoscale ermöglicht die Verwendung der API für den gewünschten Status zum Binden der Elementgruppe an eine vorgesehene Dienstgruppe. Sie können die Dienstgruppe von Nicht-Autoscale auf Autoscale-Typ der Desired State-API festlegen, wenn alle bereitgestellten Bedingungen übereinstimmen.

Die gewünschte State-API prüft, ob die IP-Adresse des Dienstgruppenmitglieds mit einem vorhandenen Server verknüpft ist. Wenn die IP-Adresse mit einem vorhandenen Server übereinstimmt, verwendet die API die IP-Adresse und den Namen des vorhandenen Servers erneut. Wenn die IP-Adresse nicht mit einem vorhandenen Server übereinstimmt, erstellt die API einen Server und weist die IP-Adresse selbst als Servernamen zu.

Beispiel:

Stellen Sie sich einen Server mit der IP-Adresse 2.2.2.2 und dem Namen myserver vor, der in einer NetScaler Appliance vorhanden ist. Mit der gewünschten State-API binden Sie eine Reihe von Dienstgruppenmitgliedern, deren IP-Adresse von 2.2.2.1 bis 2.2.2.3 reicht.

Da die IP-Adresse 2.2.2.2 mit einem vorhandenen Server verknüpft ist, verwendet die API die IP-Adresse und den Namen (2.2.2.2 und myserver) erneut. Da es keine Server mit IP-Adressen gibt, 2.2.2.1, 2.2.2.3, erstellt die API Server mit diesen IP-Adressen. Die API weist die IP-Adresse selbst als Namen des Servers zu.

Wenn die im gewünschten Statusbefehl angegebene IP-Adresse mit anderen NetScaler-Entitäten wie dem virtuellen CS-Server in Konflikt steht, tritt ein Konflikt auf. Es wird eine Fehlermeldung angezeigt, die den Grund für den Fehler enthält. Die IP-Adresse des ersten Dienstgruppenmitglieds in der Liste der fehlgeschlagenen Mitglieder wird in der Fehlermeldung angezeigt.

Beispiel:

Stellen Sie sich einen Server mit der IP-Adresse 2.2.2.8 vor, der als LB-Server verwendet wird. Mit der gewünschten State-API versuchen Sie, eine Gruppe von Dienstgruppenmitgliedern zu binden, deren IP-Adresse von 2.2.2.2 bis 2.2.2.11 reicht.

Da 2.2.2.8 bereits für den LB-Dienst verwendet wird, tritt ein Konflikt auf. Die folgende Fehlermeldung wird angezeigt, die den Grund für den Fehler und die fehlgeschlagenen Mitgliedsbindungen enthält:

{ "errorcode": 304, "message": "Address already in use", "severity": "ERROR", "servicegroup_servicegroupmemberlist_binding": { "servicegroupname": "sg1", "failedmembers": [ { "ip": "2.2.2.8", "port": 80 }, { "ip": "2.2.2.9", "port": 80 } ] } }
<!--NeedCopy-->

Der Fehlercode 304 zeigt das erste Dienstgruppenmitglied in der Liste der fehlgeschlagenen Mitglieder an, die 2.2.2.8 lautet.

Der Befehl set serviceGroup Autoscale schlägt möglicherweise fehl, wenn die vorhandenen Memberbindungen eine der folgenden Bedingungen erfüllen:

  • Wenn der an die Dienstgruppe gebundene Server entweder ein Nameserver oder ein domänenbasierter Server ist.
  • Wenn der Loopback-Servername etwas anderes ist als 127.0.0.1 oder 0000:0000:0000:0000:0000:0000:0000:0001.
  • Wenn Sie verschiedene Arten von Autoscale (Cloud, API, DNS und Richtlinie) in einem festgelegten ServiceGroup-Befehl auswählen und den Befehl ServiceGroup hinzufügen.

Wichtig:

  • Die Parameter AutoDisableGraceful und AutoDisableDelay gelten nur für die Dienstgruppen vom Autoscale-Typ “API” und “CLOUD”.
  • Wenn die Parameter AutoDisableGraceful oder AutoDisableDelay nicht konfiguriert sind, werden die Dienstmitglieder sofort gelöscht.

Lösen Sie ein Mitglied der Servicegruppe ordnungsgemäß

Wenn eines der Dienstgruppenmitglieder nicht in der Liste des gewünschten Status enthalten ist, sind diese Mitglieder basierend auf der Parameterkonfiguration autoDisablegraceful oder autoDisabledelay ordnungsgemäß ungebunden.

  • Wenn einer dieser Parameter festgelegt ist, ist das Dienstgruppenmitglied ordnungsgemäß ungebunden.
  • Wenn keiner dieser Parameter festgelegt ist, ist das Dienstgruppenmitglied sofort ungebunden.

Hinweis:

  • Dienstgruppenmitglieder, die für ordnungsgemäß “unbind” identifiziert wurden, werden nur angezeigt, wenn der Befehl show service group ausgeführt wird.
  • Sie können keinen Vorgang (z. B. Set, Unset) für das Dienstgruppenmitglied ausführen, das für die ordnungsgemäße Aufheben der Bindung identifiziert wurde.

Die folgende Abbildung zeigt ein Beispiel für den Befehl show service group.

Beispiel: Dienstgruppenbefehl anzeigen

Erstellen einer Dienstgruppe vom Typ API über die GUI

  1. Navigieren Sie zu Traffic Management > Load Balancing > Dienstgruppen, und klicken Sie auf Hinzufügen.

  2. Wählen Sie im AutoScale-Modus die Option API aus.

Konfigurieren des ordnungsgemäßen Herunterfahrens oder einer Zeitverzögerung für eine Dienstgruppe vom Typ API über die GUI

  1. Gehen Sie zu Traffic Management > Load Balancing > Service Groups.

  2. Wählen Sie im AutoScale-Modus die Option API aus.

  3. Wählen Sie in Auto Disable Graceful die Option JA.

  4. Geben Sie im Auto Disable Delaydie Wartezeit für ein ordnungsgemäßes Herunterfahren ein.

Hinweis: Die Felder “Graceful automatisch deaktivieren “ oder “ Verzögerung der automatischen Anzeige “ sind nur aktiviert, wenn Sie im AutoScale-ModusAPIoderCLOUDauswählen.