StyleBookによる基本的な負荷分散構成の作成
このセクションでは、負荷分散仮想サーバー、サービスグループ、およびサービスのリストを含む負荷分散構成を作成するStyleBookを設計します。StyleBookはサービスをサービスグループにバインドし、サービスグループを仮想サーバーにバインドします。
基本的な負荷分散構成を作成するには、StyleBookで作成したサンプルStyleBook、lb-vserverを使用して負荷分散仮想サーバーを作成し、basic-lb-config.yamlとして保存します 。
Header
このStyleBookを作成するには、ヘッダーセクションを更新してください。このセクションは、 負荷分散仮想サーバーを作成するためにStyleBookで作成したヘッダーセクションに似ています。
名前の値を basic-lb-config に変更します。 **説明と表示名をStyleBookを説明するように更新してください** 。namespaceとversionの値は、変更する必要はありません。名前を変更したため、この StyleBook のユニークな識別子がシステムに作成されます。
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"
<!--NeedCopy-->
StyleBookのインポート
import-stylebooksセクションは、同じままです。このセクションでは、NITRO構成オブジェクトを使用するために、netscaler.nitro.config名前空間が指定されています。
import-stylebooks:
-
namespace: netscaler.nitro.config
prefix: ns
version: "10.5"
<!--NeedCopy-->
パラメーター
パラメーターセクションを更新して、さらに 2 つのパラメーターを追加します。
パラメータは、サービスまたはサーバーのリストと、サービスが受信するポートを定義します。最初の3つのパラメータはname
、ip
、lb-alg
は同じままです。
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
-
name: svc-port
type: tcp-port
label: Server Port
description: The TCP port open on the application servers to receive requests.
default: 80
<!--NeedCopy-->
アプリケーションのバックエンドサーバーの IP アドレスのリストを受け入れるために、 svc-serversというパラメーターが追加されます。必須 : true で示されているように、 svc-serversは必須パラメーターです。
2番目のパラメーター、svc-portは、サーバーがリッスンするポート番号を示しています。ユーザーが指定しない限り、デフォルトのポート番号は80です。
コンポーネント
また、コンポーネントセクションを更新して、2 つの新しいパラメーターを使用して完全な負荷分散構成を構築できるように、さらに多くのコンポーネントを定義する必要があります。
この例の場合、Componentsセクションは、次のように記述する必要があります。
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
<!--NeedCopy-->
この例では、元のコンポーネント lbvserver-comp (前の例の) に svcg-compという子コンポーネントが追加されました。 svcg-comp コンポーネントには 2 つの子コンポーネントもあります。コンポーネントを別のコンポーネント内にネストした場合、ネストされたコンポーネントは、親コンポーネントの属性を参照して構成オブジェクトを作成できます。ネストされたコンポーネントは、親コンポーネントでオブジェクトが作成されるたびに、1つまたは複数のオブジェクトを作成できます。
svcg-compコンポーネントは 、リソースservicegroup
の属性に指定された値を使用して、NetScaler ADCインスタンス上にサービスグループを作成するために使用されます。この例では、servicetype
に静的な値を指定し 、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によって作成されたサービスグループを指し、 名前:$parent.parent.parent.properties.name は、親の親コンポーネント lbvserver-comp によって作成された仮想サーバーを指します。
members-svcg コンポーネントは、親コンポーネントによって作成されたサービスグループにサービスのリスト間の設定オブジェクトをバインドするために使用されます。 バインディング設定オブジェクトの作成は、StyleBookの繰り返し構造を使用して、svc-serversパラメーターで指定されたサーバーのリストを反復処理することによって実現されます。反復処理中、この StyleBook コンポーネントはサービスグループ内の各サービス(repeat-item構造のsrv
) に対してサービスグループでservicegroup_servicegroupmember_bindingタイプのNITRO 設定オブジェクトを作成し、各 NITRO 設定オブジェクトip属性を対応するサーバの IP アドレスに設定します。
一般に、 コンポーネントでリピートおよびリピートアイテム構造を使用して 、そのコンポーネントに同じタイプの複数の構成オブジェクトを構築させることができます。たとえば、 srv
のようにrepeat-item 構造に変数名を割り当てて、反復の現在の値を指定できます。この変数名は、同じコンポーネントのプロパティまたは子コンポーネントで、$<varname>
として参照されます(例:$srv)。
前の例では、コンポーネントをネストすることで構成を簡単に構築できます。次の例に示すように、ネストせずに構成を構築することもできます。
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
<!--NeedCopy-->
ここでは、コンポーネントがネストされていなくても、生成されるNetScaler構成は以前に使用したネストされたコンポーネントの構成と同じです。
StyleBookでコンポーネントが宣言される順序は、構成オブジェクトの作成順序には影響しません。 この例では、 svcg-comp コンポーネントと lbvserver-compコンポーネントは、最後に宣言されたとしても、2 番目のコンポーネントlbvserver-svg-binding-compをビルドする前にビルドする必要があります。これは、2 番目のコンポーネントにこれらのコンポーネントへの前方参照があるためです。
注
慣例により、StyleBook、パラメーター、置換、コンポーネント、および出力の名前は小文字です。単語が多い場合は、「-」文字で区切られます。たとえば
lb-bindings
、app-name
、rewrite-config
などです。もう 1 つの規則は、コンポーネント名の末尾に-comp
文字列を付けることです。
結果
このセクションでは、構成を作成した後にStyleBookがユーザー(または他のStyleBook)に公開する内容を指定する必要があります。たとえば、このStyleBookで作成されたlbvserver
とservicegroup
構成オブジェクトを公開するように指定できます。
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
<!--NeedCopy-->
StyleBookのOutputsセクションは、必要に応じて記述します。StyleBookで必ずしも出力を返す必要はありません。ただし、一部の内部コンポーネントを出力として返すことで、このStyleBookをインポートするStyleBookの柔軟性が高まります。この機能は、複合StyleBookを作成する場合に便利です。
注
コンポーネントの単一のプロパティだけでなく、StyleBook のコンポーネント全体を出力セクションに公開することをお勧めします (たとえば、$components.lbvserver-comp.properties.name という名前だけでなく、$components.lbvserver-comp全体を公開する)。また出力には、特定の出力が何を表すかを説明する記述が追加されます。
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
-
name: svc-port
type: tcp-port
label: Server Port
description: The TCP port open on the application servers to receive requests.
default: 80
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
<!--NeedCopy-->
StyleBookを使用して構成を作成するには、StyleBookをNetScaler Consoleにインポートしてから使用する必要があります。詳しくは、「ユーザー定義のStyleBookを使用する方法」を参照してください。
このStyleBookを他のStyleBookにインポートして、そのプロパティを使用することもできます。詳しくは、次のセクションで説明します。