Citrix Application Delivery Management-Service

Instanzrollen

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

StyleBooks unterstützt derzeit die Möglichkeit, ein Konfigurationspaket zu erstellen und dieselbe Konfiguration auf mehrere Citrix ADC-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, dh ein Konfigurationspaket, das auf mehrere ADC-Instanzen angewendet werden kann, jedoch mit unterschiedlichen Konfigurationen auf verschiedenen ADC-Instanzen.

Wenn ein StyleBook mit Instanzrollen zum Erstellen eines Konfigurationspakets verwendet wird, kann jeder ADC-Instanz in einem Konfigurationspaket eine andere Rolle zugewiesen werden. Diese Rolle bestimmt die Konfigurationsobjekte des Konfigurationspakets, das die ADC-Instanz erhalten wird.

Zu beachtenswerte Punkte:

  • Die Gruppe der Instanzrollen in einem StyleBook werden beim Erstellen des StyleBook definiert.
  • Die Rollen werden einer bestimmten ADC-Instanz beim Erstellen oder Aktualisieren des Konfigurationspakets zugewiesen.

Abschnitt Zielrollen

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

Dieser Abschnitt wird normalerweise nach dem Abschnitt Import-StyleBooks eines StyleBook und vor dem Parameterabschnitt platziert.

Im folgenden StyleBook-Beispiel werden 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-Ziele die minimale obligatorische Anzahl von ADC-Instanzen an, um diese Rolle zuzuweisen, wenn ein Konfigurationspaket aus diesem StyleBook erstellt wird, und maximale Ziele geben die maximale Anzahl von ADC-Instanzen an, denen diese Rolle beim Erstellen eines Konfigurationspakets zugewiesen werden kann von diesem StyleBook.

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 dieser Rolle zugeordnete Konfiguration optional, und wenn min-targets = 1 ist, ist diese Konfiguration obligatorisch, und mindestens eine ADC-Instanz muss für diese Rolle konfiguriert werden.

Rolle Standard

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

Komponenten mit Rollen

Nachdem die Rollen definiert sind, die ein StyleBook unterstützen kann (einschließlich der Rolle Standard), können die Rollen im Komponentenabschnitt eines StyleBook 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 eine lbvserver, die für Instanzen bereitgestellt wird, die die Rolle A spielen. Beachten Sie, dass das Rollenattribut einer Komponente eine Liste ist und einer Komponente mehrere Rollen zugewiesen werden kann. 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, unabhängig von ihrer Rolle auf allen Citrix ADC-Instanzen erstellt. Sie können diese Funktion effektiv verwenden, um Konfigurationsobjekte zu erstellen, die auf alle Instanzen eines Konfigurationspakets angewendet werden können.

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

  • Komponente C1 hat die Rollen A und B
  • Komponente C2 hat die Rolle B
  • Komponente C3 hat keine Rollen definiert
  • Komponente C4 hat die Rolle Standard

Der Komponentenbereich dieses StyleBook wird nachfolgend 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 Standard, was bedeutet, dass sie auf jede Instanz angewendet wird, der keine explizite Rolle zugewiesen ist.

Bedenken Sie nun, dass Sie ein Konfigurationspaket mit diesem StyleBook 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 ist den Instanzen T1, T2, T3 und T4 zugewiesen
  • Rolle B wird 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:

Zusammenfassung der Rollenzuweisungen

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

Die folgende Abbildung zeigt die Zuweisung von Rollen beim Erstellen eines Beispielkonfigurationspakets:

Konfigurationspaket für eine Rollenzuweisung

Sie können auch die Funktion “Dry Run” verwenden, wenn Sie ein Konfigurationspaket erstellen, um die korrekte Zuweisung von Rollen und die Konfigurationsobjekte anzuzeigen und zu überprüfen, die für jede ADC-Instanz erstellt werden.

Erstellen Sie Ihr StyleBook

Der vollständige Inhalt des StyleBook 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-->

Die folgende Abbildung zeigt die für ein Beispiel-Konfigurationspaket erstellten Objekte:

Objekte, die in einer ADC-Instanz für ein Konfigurationspaket erstellt wurden

Verwenden von APIs

Wenn Sie die REST-API verwenden, können Sie beim Erstellen oder Aktualisieren des Konfigurationspakets Rollen für jede ADC-Instanz wie folgt angeben. Geben Sie im Block Ziele die UUID der spezifischen Citrix ADC-Instanz an, auf der die einzelnen Komponenten bereitgestellt werden sollen.

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

Als Referenz wird eine vollständige Beispiel-REST-API 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