Application Delivery Management

Instanzrollen

In NetScaler Application Delivery Management (ADM) kann es ein Szenario geben, in dem Sie mehrere NetScaler-Instanzen für eine einzelne Anwendung konfigurieren müssen, aber auch, in dem jede ADC-Instanz eine andere Konfiguration benötigt, um auf ihnen bereitgestellt zu werden. Ein Beispiel für einen solchen Fall ist das standardmäßige Microsoft Skype for Business StyleBook.

StyleBooks unterstützen derzeit die Möglichkeit, ein Config Pack zu erstellen und dieselbe Konfiguration auf mehrere NetScaler-Instanzen anzuwenden. Ein solches Szenario, in dem die Konfiguration auf allen ADC-Instanzen identisch ist, kann als symmetrische Konfiguration bezeichnet werden.

Mit der Funktion „Instanzrollen“ von StyleBooks können Sie jetzt eine asymmetrische Konfiguration erstellen, d. h. ein Configpack, das auf mehrere ADC-Instanzen angewendet werden kann, jedoch mit unterschiedlichen Konfigurationen auf verschiedenen ADC-Instanzen.

Wenn ein StyleBook mit Instanzrollen verwendet wird, um ein Configpack zu erstellen, kann jeder ADC-Instanz in einem Configpack eine andere Rolle zugewiesen werden. Diese Rolle bestimmt die Konfigurationsobjekte des Configpacks, die die ADC-Instanz erhält.

Zu beachtenswerte Punkte:

  • Die Gruppe der Instanzrollen in einem StyleBook werden beim Erstellen des StyleBook definiert.
  • Die Rollen werden einer bestimmten ADC-Instanz zugewiesen, wenn das Configpack erstellt oder aktualisiert wird.

Abschnitt Zielrollen

In einem StyleBook wird ein neuer Abschnitt namens „target-roles“ eingeführt, in dem alle vom StyleBook unterstützten Rollen deklariert werden.

Dieser Abschnitt wird normalerweise nach dem Abschnitt „Import-StyleBooks“ eines StyleBooks und vor dem Abschnitt mit den Parametern platziert.

Im folgenden StyleBook-Beispiel sind im Abschnitt „Zielrollen“ zwei Rollen definiert: A und B.

target-roles:

  -
   name: A
   name: B
     min-targets: 2
     max-targets: 5
<!--NeedCopy-->

Sie können sehen, dass Rolle B auch zwei optionale Untereigenschaften definiert, min-targets und max-targets.

Obwohl diese beiden Untereigenschaften optional sind, geben Min-Targets die obligatorische Mindestanzahl von ADC-Instanzen an, denen diese Rolle zugewiesen werden sollte, wenn ein Configpack aus diesem StyleBook erstellt wird, und max-targets geben die maximale Anzahl von ADC-Instanzen an, denen diese Rolle zugewiesen werden kann, wenn ein Configpack aus diesem StyleBook erstellt wird.

Wenn diese Untereigenschaften nicht angegeben sind, gibt es keine Begrenzung für die Anzahl der ADC-Instanzen, die für diese Rolle konfiguriert werden können. Wenn min-targets = 0 ist, ist die mit dieser Rolle verknüpfte Konfiguration optional und wenn min-targets = 1 ist, dann ist diese Konfiguration obligatorisch und mindestens eine ADC-Instanz muss für diese Rolle konfiguriert werden.

Rolle „Standard“

Zusätzlich zu den explizit definierten Rollen gibt es eine implizite Rolle, die alle StyleBooks haben, und diese Rolle wird als Standardrolle bezeichnet. Diese Rolle kann wie jede andere Rolle in einem StyleBook verwendet werden. Wenn einer ADC-Instanz beim Erstellen eines Configpacks keine bestimmte Rolle zugewiesen ist, wird die Instanz implizit der “Standard”-Rolle zugewiesen. Die Instanz erhält nun alle Konfigurationsobjekte, die von Komponenten mit der Rolle “Standard” generiert werden.

Komponenten mit Rollen

Nachdem die Rollen definiert wurden, die ein StyleBook unterstützen kann (einschließlich der Rolle „Standard“), können die Rollen im Komponentenbereich eines StyleBooks verwendet werden. Wenn eine Komponente nur auf ADC-Instanzen bereitgestellt werden soll, die eine bestimmte Rolle spielen, können Sie das Attribut roles als Teil der Komponente angeben, wie im folgenden Beispiel einer Komponente dargestellt:

  -
    name: C1
    type: ns::lbvserver
    roles:
      - A
    properties:
      name: lb1
      servicetype: HTTP
      ipv46: 1.1.1.1
      port: 80
<!--NeedCopy-->

Im obigen Beispiel generiert die Komponente einen „lbvserver“, der auf Instanzen bereitgestellt wird, die die Rolle A spielen. Beachten Sie, dass das roles-Attribut einer Komponente eine Liste ist und einer Komponente mehrere Rollen zugewiesen werden können. Diese Rollen wären im Abschnitt „Zielrollen“ des StyleBook deklariert worden.

Hinweis: Wenn eine Komponente in einem StyleBook kein Rollenattribut angibt, werden Konfigurationsobjekte, die von der Komponente generiert werden, auf allen NetScaler Instanzen unabhängig von ihrer Rolle erstellt. Sie können diese Funktion effektiv verwenden, um Konfigurationsobjekte zu erstellen, die auf alle Instanzen eines Configpacks angewendet werden können.

Nehmen wir an, dass es ein StyleBook mit zwei definierten Rollen gibt - A und B, und das vier Komponenten enthält.

  • Komponente C1 hat die Rollen A und B.
  • Komponente C2 hat die Rolle B
  • Für Komponente C3 sind keine Rollen definiert
  • Komponente C4 hat die Rolle „Standard“

Der Komponentenabschnitt dieses StyleBooks ist unten wiedergegeben:

components:
  -
    name: C1
    type: ns::lbvserver
    roles:
      - A
      - B
    properties:
      name: lb1
      servicetype: HTTP
      ipv46: 1.1.1.1
      port: 80
  -
    name: C2
    type: ns::lbvserver
    roles:
      - B
    properties:
      name: lb2
      servicetype: HTTP
      ipv46: 12.12.12.12
      port: 80
  -
    name: C3
    type: ns::lbvserver
    properties:
      name: lb3
      servicetype: HTTP
      ipv46: 13.13.13.13
      port: 80
  -
    name: C4
    type: ns::lbvserver
    roles:
      - default
    properties:
      name: lb4
      servicetype: HTTP
      ipv46: 14.14.14.14
      port: 80
<!--NeedCopy-->

Beachten Sie, dass für die Komponente C3 keine Rolle definiert ist, was bedeutet, dass die Komponente unabhängig von ihrer Rolle auf allen Instanzen bereitgestellt wird. Auf der anderen Seite hat die Komponente C4 die Rolle “default”, was bedeutet, dass sie auf jede Instanz angewendet wird, der keine explizite Rolle zugewiesen ist.

Stellen Sie sich nun vor, dass Sie mit diesem StyleBook ein Configpack erstellen und es auf fünf ADC-Instanzen bereitstellen möchten. In diesem Stadium können Sie den Instanzen die Rollen folgendermaßen zuweisen:

  • Rolle A wird den Instanzen T1, T2, T3 und T4 zugewiesen
  • Rolle B ist den Instanzen T2, T3 und T4 zugewiesen
  • Instanz T5 ist keine Rolle zugewiesen

Das folgende Bild fasst die Rollenzuweisungen zusammen und zeigt die resultierende Konfiguration, die jede ADC-Instanz erhält:

Lokalisierte Abbildung

Beachten Sie, dass die Komponente C3 unabhängig von der Rolle auf allen Instanzen bereitgestellt wird, da diese Komponente kein Rollenattribut hatte.

Sie können beim Erstellen eines Configpacks auch die Funktion „Dry Run“ verwenden, um die korrekte Rollenzuweisung und die Konfigurationsobjekte, die auf jeder ADC-Instanz erstellt werden, anzuzeigen und zu überprüfen.

Erstellen Sie Ihr StyleBook

Der vollständige Inhalt des StyleBooks “demo-target-roles” finden Sie unten:

---
name: demo-target-roles
namespace: com.example.stylebooks
version: "1.2"
schema-version: "1.0"
import-stylebooks:
  -
    namespace: netscaler.nitro.config
    prefix: ns
    version: "10.5"
parameters:
  -
    name: appname
    type: string
    required: true
    key: true
target-roles:
  -
    name: A
  -
    name: B
    min-targets: 2
    max-targets: 5
components:
  -
    name: C1
    type: ns::lbvserver
    roles:
      - A
      - B
    properties:
      name: lb1
      servicetype: HTTP
      ipv46: 1.1.1.1
      port: 80
  -
    name: C2
    type: ns::lbvserver
    roles:
      - B
    properties:
      name: lb2
      servicetype: HTTP
      ipv46: 12.12.12.12
      port: 80
  -
    name: C3
    type: ns::lbvserver
    properties:
      name: lb3
      servicetype: HTTP
      ipv46: 13.13.13.13
      port: 80
  -
    name: C4
    type: ns::lbvserver
    roles:
      - default
    properties:
      name: lb4
      servicetype: HTTP
      ipv46: 14.14.14.14
      port: 80
<!--NeedCopy-->

Das folgende Bild zeigt die Objekte, die für ein Beispiel-Configpack erstellt wurden:

Lokalisierte Abbildung

Verwenden von APIs

Wenn Sie die REST-API verwenden, können Sie Rollen für jede ADC-Instanz angeben, wenn Sie das Configpack wie folgt erstellen oder aktualisieren. Geben Sie im Block “Ziele” die UUID der jeweiligen NetScaler Instanz an, auf der Sie die einzelnen Komponenten bereitstellen möchten.

"targets": [
            {
             "id": "<ADC-UUID>",
             "roles": ["A"]
            },
           ]
<!--NeedCopy-->

Eine vollständige REST-API wird als Referenz bereitgestellt.

POST/<ADM-IP>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/1.2/demo-target-roles/configpacks

{
  "configpack": {
     "parameters": {
     "appname": "app1"
    },
     "targets": [
        {
          "id": "f53c35c3-a6bc-4619-b4b4-ad7ab6a94ddb",
        "roles": ["A"]
        },
        {
          "id": "c08caa1c-1011-48aa-b8c7-9aed1cd38ed0",
          "roles": ["A", "B"]
        },
        {
          "id": "88ac90cb-a5cb-445b-8617-f83d0ef6174e",
          "roles": ["A", "B"]
        },
        {
          "id": "bf7b0f74-7a83-4856-86f4-dcc951d3141e",
          "roles": ["A", "B"]
        },
        {
          "id": "fa5d97ab-ca29-4adf-b451-06e7a234e3da",
          "roles": ["default"]
        }
      ]
    }
}
<!--NeedCopy-->
Instanzrollen