Citrix Application Delivery Management 13.0

インスタンスロール

Citrix Application Delivery Management(ADM)では、1つのアプリケーションに対して複数のCitrix ADC インスタンスを構成する必要がある場合がありますが、各ADCインスタンスで異なる構成を展開する必要がある場合もあります。このような場合の例は、Microsoft Skype for Businessスタイルブックのデフォルトです。

現在、StyleBookでは、構成パックを作成し、複数のCitrix ADC インスタンスに同じ構成を適用する機能をサポートしています。構成がすべてのADCインスタンスで同一であるようなシナリオを対称構成と呼ぶことができます。

StyleBookの「インスタンスロール」機能を使用すると、非対称構成、つまり複数のADCインスタンスに適用できるコンフィグパックを作成できますが、異なるADCインスタンスには異なる構成を使用できます。

インスタンスロールを持つStyleBook機能を使用してコンフィグパックを作成すると、コンフィグパック内の各ADCインスタンスに異なるロールを割り当てることができます。このロールは、ADC インスタンスが受信する configpack の設定オブジェクトを決定します。

注意事項:

  • StyleBookのインスタンスロールのセットは、StyleBookの作成時に定義されます。
  • ロールは、コンフィグパックを作成または更新するときに特定の ADC インスタンスに割り当てられます。

「ターゲットロール」セクション

StyleBookで「target-roles」と呼ばれる新しいセクションが導入され、StyleBookでサポートされているすべてのロールが宣言されます。

このセクションは通常、StyleBookの「Import-StyleBooks」セクションの後に、パラメータセクションの前に配置されます。

次のStyleBookの例では、「ターゲットロール」セクションAとBの2つのロールが定義されています。

target-roles:

  -
   name: A
   name: B
     min-targets: 2
     max-targets: 5

ロール B は、min-target と max-target という 2 つのオプションのサブプロパティも定義していることがわかります。

これらの2つのサブプロパティはオプションですが、min-targetsはこのStyleBookからコンフィグパックを作成するときにこのロールを割り当てる必要のあるADCインスタンスの最小必須数を指定します。max-targetsでは、コンフィグパックを作成するときにこのロールを割り当てることができるADCインスタンスの最大数を指定します。このスタイルブックから。

これらのサブプロパティが指定されていない場合、そのロールに設定できる ADC インスタンスの数に制限はありません。min-targets = 0 の場合、そのロールに関連付けられた設定はオプションであり、min-targets = 1 の場合、その設定は必須であり、そのロールに対して少なくとも 1 つの ADC インスタンスを設定する必要があります。

ロール「デフォルト」

明示的に定義されたロールに加えて、すべてのStyleBookが持つ暗黙的なロールがあり、そのロールはデフォルトロールとして呼び出されます。このロールは、StyleBookの他のロールと同様に使用できます。コンフィグパックを作成するときに、ADC インスタンスに特定のロールが割り当てられていない場合、インスタンスは暗黙的に「デフォルト」ロールに割り当てられます。これで、インスタンスは「default」ロールを持つコンポーネントによって生成された設定オブジェクトを受け取ります。

ロールを持つコンポーネント

StyleBookがサポートできるロール(「default」ロールを含む)を定義すると、そのロールはStyleBookのコンポーネントセクションで使用できます。コンポーネントを特定の役割を果たす ADC インスタンスにのみデプロイする場合は、次のコンポーネントの例に示すように、コンポーネントの一部として roles 属性を指定できます。

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

上記の例では、コンポーネントが「lbvserver」を生成し、このコンポーネントは A の役割を果たしているインスタンスにデプロイします。コンポーネントの roles 属性はリストであり、コンポーネントには複数のロールを割り当てることができます。これらのロールは、StyleBookの「ターゲットロール」セクションで宣言されています。

注:StyleBook内のコンポーネントがロール属性を指定しない場合、そのコンポーネントによって生成された構成オブジェクトは、ロールに関係なくすべてのCitrix ADC インスタンスに作成されます。この機能を使用すると、configpack のすべてのインスタンスに適用できる設定オブジェクトを作成できます。

AとBの2つのロールが定義されているStyleBookがあり、4つのコンポーネントが含まれていると仮定します。

  • コンポーネント C1 にはロール A と B があります。
  • コンポーネント C2 にはロール B があります。
  • コンポーネント C3 にロールが定義されていません
  • コンポーネント C4 には「デフォルト」というロールがあります。

このStyleBookのコンポーネントセクションを以下に示します。

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

コンポーネント C3 にはロールが定義されていないことに注意してください。つまり、コンポーネントはロールに関係なくすべてのインスタンスにデプロイされます。一方、コンポーネント C4 には「default」というロールがあります。つまり、明示的なロールが割り当てられていないインスタンスに適用されます。

次に、このStyleBookを使用してコンフィグパックを作成し、それを5つのADCインスタンスにデプロイすることを検討します。この段階では、次の方法でインスタンスにロールを割り当てることができます。

  • ロール A はインスタンス T1、T2、T3、および T4 に割り当てられます。
  • ロール B はインスタンス T2、T3、および T4 に割り当てられます。
  • インスタンス T5 にはロールが割り当てられていません

次の図は、役割の割り当てをまとめたもので、各 ADC インスタンスが受け取る構成を示しています。

ローカライズされた画像

コンポーネント C3 は、ロールに関係なくすべてのインスタンスにデプロイされます。これは、このコンポーネントには roles 属性がないためです。

次の図は、サンプルの configpack の作成時のロールの割り当てを示しています。

ローカライズされた画像

また、コンフィグパックを作成するときに「Dry Run」機能を使用して、各ADCインスタンスに作成されるロールと構成オブジェクトの正しい割り当てを表示および検証することもできます。

スタイルブックを構築する

StyleBook「デモターゲットロール」の全コンテンツを以下に示します。

---
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

次の図は、サンプルの configpack 用に作成されたオブジェクトを示しています。

ローカライズされた画像

API の使用

REST API を使用する場合、次のように、コンフィグパックを作成または更新するときに、各 ADC インスタンスのロールを指定できます。「targets」ブロックで、個々のコンポーネントを展開する特定のCitrix ADC インスタンスのUUIDを指定します。

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

参考のために、完全なサンプル REST API が提供されています。

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"]
        }
      ]
    }
}
インスタンスロール