基本的なロードバランシング構成を作成するためのStyleBook

最終公開日 : Sep 25, 2026
前の例では、ロードバランシング仮想サーバーを作成するための基本的なStyleBookを構築しました。このStyleBookを別の名前で保存し、更新して、基本的なロードバランシング構成のための追加のパラメーターとコンポーネントを含めることができます。このStyleBookファイルをbasic-lb-config.yamlとして保存します。
このセクションでは、ロードバランシング仮想サーバー、サービスグループ、およびサービスリストで構成されるロードバランシング構成を作成する新しいStyleBookを設計します。また、サービスをサービスグループにバインドし、サービスグループを仮想サーバーにバインドします。

ヘッダー

このStyleBookを構築するには、まずヘッダーセクションを更新する必要があります。このセクションは、ロードバランシング仮想サーバーStyleBook用に作成したものと似ています。ヘッダーセクションで、nameの値をbasic-lb-configに変更します。また、このStyleBookを適切に記述するためにdescriptionとdisplay-nameを更新します。namespaceとversionの値を変更する必要はありません。名前を変更したため、名前、名前空間、およびバージョンの組み合わせにより、システム内でこのStyleBookの一意の識別子が作成されます。
name: basic-lb-config
description: This StyleBook defines a simple load balancing configuration.
display-name: Load Balancing Configuration
namespace: com.example.stylebooks
schema-version: "1.0"
version: "0.1"

StyleBookのインポート

import-stylebooksセクションは変更されません。Nitro構成オブジェクトを使用するために、netscaler.nitro.config名前空間を参照します。
import-stylebooks:
 -
 namespace: netscaler.nitro.config
 prefix: ns
 version: "10.5"

パラメーター

パラメーターセクションを更新して、サービスまたはサーバーのリストと、サービスがリッスンするポートを定義するための2つの追加パラメーターを追加する必要があります。最初の3つのパラメーター、name、ip、およびlb-algは同じままです。
parameters:
 -
 name: name
 type: string
 label: Application Name
 description: Name of the application configuration
 required: true
  -
   name: ip
   type: ipaddress
   label: Application Virtual IP (VIP)
   description: Application VIP that the clients access
   required: true
  -
   name: lb-alg
   type: string
   label: LoadBalancing Algorithm
   description: Choose the load balancing algorithm used for load balancing client requests between the application servers.
     allowed-values:
     - ROUNDROBIN
     - LEASTCONNECTION
      default: ROUNDROBIN
  -
   name: svc-servers
   type: ipaddress\[\]
   label: Application Server IPs
   description: The IP addresses of all the servers of this application
   required: true
  -
   name: svc-port
   type: tcp-port
   label: Server Port
   description: The TCP port open on the application servers to receive requests.
   default: 80
この例では、アプリケーションのバックエンドサーバーを表すサービスのIPアドレスのリストを受け入れるために、パラメーターsvc-serversが追加されています。これは、required: trueで示されるように必須パラメーターです。2番目のパラメーターsvc-portは、サーバーがリッスンするポート番号を示します。ユーザーによって指定されない場合、svc-portパラメーターのデフォルトポート番号は80です。

コンポーネント

また、コンポーネントセクションを更新して、2つの新しいパラメーターを使用し、完全なロードバランシング構成を構築する追加のコンポーネントを定義する必要があります。
この例では、コンポーネントセクションを次のように記述する必要があります。
components:
 -
  name: lbvserver-comp
  type: ns::lbvserver
  properties:
   name: $parameters.name + "-lb"
   servicetype: HTTP
   ipv46: $parameters.ip
   port: 80
   lbmethod: $parameters.lb-alg

components:
 -
  name: svcg-comp
  type: ns::servicegroup
  properties:
   name: $parameters.name + "-svcgrp"
   servicetype: HTTP

components:
 -
  name: lbvserver-svg-binding-comp
  type: ns::lbvserver\_servicegroup\_binding
  properties:
   name: $parent.parent.properties.name
   servicegroupname: $parent.properties.name
 -
  name: members-svcg-comp
  type: ns::servicegroup\_servicegroupmember\_binding
  repeat: $parameters.svc-servers
  repeat-item: srv
  properties:
   ip: $srv
   port: str($parameters.svc-port)
   servicegroupname: $parent.properties.name
この例では、元のコンポーネントlbvserver-comp(前の例から)に、svcg-compという子コンポーネントが追加されています。そして、svcg-compコンポーネントには、その中に2つの子コンポーネントがあります。コンポーネントを別のコンポーネント内にネストすることで、ネストされたコンポーネントは親コンポーネントの属性を参照して構成オブジェクトを作成できます。ネストされたコンポーネントは、親コンポーネントで作成されたオブジェクトごとに1つ以上のオブジェクトを作成できます。
svcg-compコンポーネントは、リソース「servicegroup」の属性に指定された値を使用して、NetScalerインスタンス上にサービスグループを作成するために使用されます。この例では、servicetypeに静的な値を指定し、nameはその値を入力パラメーターから取得します。パラメーターセクションで定義されたパラメーターnameは、$parameters.name + "-svcgrp"という表記を使用して参照されます。ここで、-svcgrpはユーザー定義の名前に付加(連結)されます。
コンポーネント svcg-comp には、lbvserver-svg-binding-comp と members-svcg-comp の2つの子コンポーネントがあります。
最初の子コンポーネントである lbvserver-svg-binding-comp は、その親コンポーネントによって作成されたサービスグループと、親の親コンポーネントによって作成された負荷分散仮想サーバー (lbvserver) の間の構成オブジェクトをバインドするために使用されます。$parent 表記は、親参照とも呼ばれ、親コンポーネント内のエンティティを参照するために使用されます。たとえば、servicegroupname: $parent.properties.name は親コンポーネント svcg-comp によって作成されたサービスグループを参照し、name: $parent.parent.properties.name は親の親コンポーネント lbvserver-comp によって作成された仮想サーバーを参照します。
members-svcg コンポーネントは、サービスのリストと親コンポーネントによって作成されたサービスグループの間で構成オブジェクトをバインドするために使用されます。複数のバインディング構成オブジェクトの作成は、StyleBook の repeat 構造を使用して、パラメータ svc-servers で指定されたサーバーのリストを反復処理することで実現されます。反復処理中に、この StyleBook コンポーネントは、サービスグループ内の各サービス (repeat-item 構造では srv と呼ばれます) に対して servicegroup_servicegroupmember_binding 型の Nitro 構成オブジェクトを作成し、各 Nitro 構成オブジェクトの ip 属性を対応するサーバーの IP アドレスに設定します。
一般的に、コンポーネント内で repeat および repeat-item 構造を使用すると、そのコンポーネントが同じタイプの複数の構成オブジェクトを構築できるようになります。たとえば、srv のように、repeat-item 構造に変数名を割り当てて、反復処理における現在の値を指定できます。この変数名は、同じコンポーネントのプロパティまたは子コンポーネントで $\<varname\> (例: $srv) として参照されます。
上記の例では、この構成を簡単に構築するために、コンポーネントのネストを使用しました。この特定のケースでは、コンポーネントのネストが構成を構築する唯一の方法ではありませんでした。以下に示すように、ネストなしで同じ結果を達成することもできました。
components:
 -
  name: members-svcg-comp
  type: ns::servicegroup\_servicegroupmember\_binding
  repeat: $parameters.svc-servers
  repeat-item: srv
  properties:
   ip: $srv
   port: str($parameters.svc-port)
   servicegroupname: $components.svcg-comp.properties.name
 -
  name: lbvserver-svg-binding-comp
  type: ns::lbvserver\_servicegroup\_binding
  properties:
   name: $components.lbvserver-comp.properties.name
   servicegroupname: $components.svcg-comp.properties.name
 -
  name: lbvserver-comp
  type: ns::lbvserver
  properties:
   name: $parameters.name + "-lb"
   servicetype: HTTP
   ipv46: $parameters.ip
   port: 80
   lbmethod: $parameters.lb-alg
 -
  name: svcg-comp
  type: ns::servicegroup
  properties:
  name: $parameters.name + "-svcgrp"
  servicetype: HTTP
ここでは、すべてのコンポーネントが同じレベルにありますが (つまり、ネストされていません)、達成される結果 (生成される NetScaler 構成) は、以前に使用されたネストされたコンポーネントの場合と同じです。また、StyleBook でコンポーネントが宣言される順序は、構成オブジェクトの作成順序には影響しません。この例では、svcg-comp と lbvserver-comp のコンポーネントは、最後に宣言されているにもかかわらず、2番目のコンポーネントである lbvserver-svg-binding-comp を構築する前に構築する必要があります。これは、2番目のコンポーネントにこれらのコンポーネントへの前方参照があるためです。
注
慣例として、StyleBook、パラメータ、置換、コンポーネント、および出力の名前は小文字で記述されます。複数の単語を含む場合は、「-」文字で区切られます。たとえば、「lb-bindings」、「app-name」、「rewrite-config」などです。もう1つの慣例は、コンポーネント名に「-comp」という文字列を接尾辞として付けることです。

出力

新しい StyleBook に追加できる最後のセクションは、出力セクションです。ここでは、この StyleBook が構成の作成に使用された後、ユーザー (または他の StyleBook) に何を公開するかを指定します。たとえば、この StyleBook によって作成される lbvserver およびサービスグループ構成オブジェクトを公開するように出力セクションで指定できます。
outputs:
 -
  name: lbvserver-comp
  value: $components.lbvserver-comp
  description: The component that builds the Nitro lbvserver configuration object
 -
  name: servicegroup-comp
  value: $components.svcg-comp
  description: The component that builds the Nitro servicegroup configuration object
StyleBook の出力セクションはオプションです。StyleBook は出力を返す必要はありません。ただし、一部の内部コンポーネントを出力として返すことで、複合 StyleBook を作成する際にわかるように、この StyleBook をインポートする StyleBook に柔軟性をもたらします。
注
コンポーネントの単一のプロパティ (たとえば、$components.lbvserver-comp.properties.name ではなく、$components.lbvserver-comp 全体) だけでなく、StyleBook のコンポーネント全体を出力セクションで公開することをお勧めします。また、特定の出力が何を表すかを説明する記述を出力に追加してください。

StyleBook を構築する

この StyleBook の必要なすべてのセクションを定義したので、それらをすべてまとめて2番目の StyleBook を構築します。この StyleBook ファイルはすでに basic-lb-config.yaml として保存されています。StyleBooks ページの内蔵 YAML バリデーターを使用して、YAML コンテンツを検証およびインポートすることをお勧めします。
「basic-lb-config.yaml」ファイルの全内容は以下のとおりです。
name: basic-lb-config
namespace: com.example.stylebooks
version: "0.1"
display-name: Load Balancing Configuration
description: This StyleBook defines a simple load balancing configuration.
schema-version: "1.0"

import-stylebooks:
 -
  namespace: netscaler.nitro.config
  version: "10.5"
  prefix: ns
parameters:
 -
  name: name
  type: string
  label: Application Name
  description: Give a name to the application configuration.
  required: true
 -
  name: ip
  type: ipaddress
  label: Application Virtual IP (VIP)
  description: The Application VIP that clients access
  required: true
 -
  name: lb-alg
  type: string
  label: LoadBalancing Algorithm
  description: Choose the loadbalancing algorithm (method) used for loadbalancing client requests between the application servers.
  allowed-values:
     - ROUNDROBIN
     - LEASTCONNECTION
  default: ROUNDROBIN
 -
  name: svc-servers
  type: ipaddress[]
  label: Application Server IPs
  description: The IP addresses of all the servers of this application
  required: true

components:
 -
  name: lbvserver-comp
  type: ns::lbvserver
  properties:
   name: $parameters.name + "-lb"
   servicetype: HTTP
   ipv46: $parameters.ip
   port: 80
   lbmethod: $parameters.lb-alg
 -
  name: svcg-comp
  type: ns::servicegroup
  properties:
    servicegroupname: $parameters.name + "-svcgrp"
    servicetype: HTTP

 -
  name: lbvserver-svg-binding-comp
  type: ns::lbvserver_servicegroup_binding
  properties:
   name: $components.lbvserver-comp.properties.name
   servicegroupname: $components.svcg-comp.properties.servicegroupname
 -
  name: members-svcg-comp
  type: ns::servicegroup_servicegroupmember_binding
  repeat: $parameters.svc-servers
  repeat-item: srv
  properties:
   ip: $srv
   port: 80
   servicegroupname: $components.svcg-comp.properties.servicegroupname
outputs:
-
  name: lbvserver-comp
  value: $components.lbvserver-comp
  description: The component that builds the Nitro lbvserver configuration object
-
  name: servicegroup-comp
  value: $components.svcg-comp
  description: The component that builds the Nitro servicegroup configuration object
構成を作成するためにStyleBookの使用を開始するには、NetScaler Consoleにインポートしてから使用する必要があります。詳細については、「ユーザー定義StyleBookの使用方法」を参照してください。
このStyleBookを他のStyleBookにインポートし、次のセクションで説明するようにそのプロパティを使用することもできます。