スケーラブルリソースとは、同時に複数のノード上でオンラインになることができるリソースのことです。スケーラブルリソースには、Sun Cluster HA for iPlanet Web Server や HA-Apache などのデータサービスがあります。
RGM は、スケーラブルリソースの実装をサポートするプロパティをいくつか提供します。
ブール型リソースタイププロパティ Scalable は、リソースがスケーラブルであるか (TRUE)、そうでないか (FALSE) を識別します。Scalable プロパティが TRUE であるリソースは、スケーラブルモードであると言います。Scalable プロパティが FALSE であるリソースは、フェイルオーバーモード であると言います。
リソースの RTR ファイルでスケーラブルプロパティを宣言した場合、RGM はそのリソースに対して、次のようなスケーラブルプロパティのセットを自動的に作成します。
Network_resources_used - このリソースが使用する共有アドレスリソースを識別します。このプロパティのデフォルト値は空の文字列です。したがって、クラスタ管理者は、リソースを作成するときに、スケーラブルサービスが使用する実際の共有アドレスのリストを指定する必要があります。
Load_balancing_policy - リソースの負荷均衡ポリシーを指定します。このポリシーは RTR ファイルに明示的に設定しても、デフォルトの LB_WEIGHTED を使用してもかまいません。どちらの場合でも、クラスタ管理者はリソースを作成するときに値を変更できます (RTR ファイルで Load_balancing_policy を NONE または FALSE に設定していない場合)。有効な値は次のとおりです。
LB_WEIGHTED - 負荷は、Load_balancing_weights プロパティに設定されたウェイトに従って、さまざまなノード間に分散されます。
LB_STICKY - スケーラブルサービスのクライアント (クライアントの IP アドレスで識別される) は、常に、同じクラスタノードに送信されます。
LB_STICKY_WILD - ワイルドカードスティッキーサービスの IP アドレスに接続されているクライアント (クライアントの IP アドレスで識別される) は、着信しているポート番号に関わらず、常に、同じクラスタノードに送信されます。
Load_balancing_policy、LB_STICKY、LB_STICKY_WILD を持つスケーラブルなサービスの場合、サービスがオンラインの状態で Load_balancing_weights を変更すると、既存のクライアントとの関連がリセットされることがあります。リセットされると、(同じクラスタ内にある) 今までサービスを行っていたノードとは別のノードが、後続のクライアント要求を処理します。
同様に、サービスの新しいインスタンスをクラスタ上で開始すると、既存のクライアントとの関連がリセットされることがあります。
Load_balancing_weights - 各ノードに送信される負荷を指定します。形式は weight@node,weight@node です。weight は、node に分散される負荷の相対的な割り当てを示す整数です。ノードに分散される負荷の割合は、このノードのウェイトをアクティブなインスタンスのすべてのウェイトの合計で割った値になります。たとえば、1@1,3@2 は、ノード 1 に負荷の 1/4 が割り当てられ、ノード 2 に負荷の 3/4 が割り当てられることを意味します。
Port_list - サーバーが通信するポートを識別します。このプロパティのデフォルト値は空の文字列です。ポートのリストは RTR ファイルに指定できます。このファイルで指定しない場合、クラスタ管理者は、リソースを作成するときに、実際のポートのリストを提供する必要があります。
スケーラブルとフェイルオーバーのどちらのモードでも動作するデータサービスを作成できます。このためには、データサービスの RTR ファイルで Scalable リソースプロパティを宣言します。このリソースプロパティは、値なしで宣言しても (デフォルト値は FALSE)、明示的に値を FALSE に設定してもかまいません。デフォルトでは、このリソースはフェイルオーバーモードで動作します。クラスタ管理者が管理ユーティリティで Scalable の値を TRUE に変更すれば、このリソースをスケーラブルモードで実行できます。
クラスタ管理者は、スケーラブルサービスリソースを含むようなスケーラブルリソースグループを作成できます。スケーラブルリソースは共有アドレスリソースを利用するので、クライアントには、スケーラブルサービスの複数のインスタンスが単一のサービスに見えます。スケーラブルリソースが利用する共有アドレスリソースは、異なるフェイルオーバーリソースグループに存在する必要があります。
クラスタ管理者は、RG_dependencies リソースグループプロパティを使用して、あるノード上でリソースグループがオンラインまたはオフラインになる順番を指定できます。スケーラブルリソースと (スケーラブルリソースが利用する) 共有アドレスリソースは異なるリソースグループに存在するので、この順番はスケーラブルサービスにとって重要になります。スケーラブルデータサービスが起動される前には、そのネットワークアドレス (共有アドレス) リソースが「起動」に構成されている必要があります。したがって、クラスタ管理者は、共有アドレスリソースを含むリソースグループを含むように RG_dependencies プロパティを設定する必要があります。
RG_mode プロパティを使用すると、クラスタ管理者はリソースグループがフェイルオーバーまたはスケーラブルのどちらであるかを識別できます。RG_mode が SCALABLE の場合、RGM は Maximum_primaries プロパティが 1 よりも大きな値を持つこと (つまり、複数のノードが同時にそのグループをマスターすること) を許可します。RGM は、Failover プロパティが TRUE であるリソースを、RG_mode が SCALABLE であるリソースグループでインスタンス化することを禁止します。
スケーラブルリソースについての詳細は、『Sun Cluster 3.0 の概念』を参照してください。
スケーラブルリソースが作成または更新されるとき、RGM は、さまざまなリソースプロパティの妥当性検査を行います。プロパティが正しく構成されていない場合、RGM は作成または更新を拒否します。RGM は次の検査を行います。
Network_resources_used プロパティは、空の文字列であってはならず、既存の共有アドレスリソースの名前を含む必要があります。スケーラブルリソースを含むリソースグループの Nodelist にあるすべてのノードは、指定した共有アドレスリソースの 1 つである NetIfList プロパティまたは AuxNodeList プロパティに存在する必要があります。
スケーラブルリソースを含むリソースグループの RG_dependencies プロパティは、スケーラブルリソースの Network_resources_used プロパティに存在する、すべての共有アドレスリソースのリソースグループを含む必要があります。
Port_list プロパティは、空の文字列であってはならず、ポートとプロトコル (tcp または udp) のペアのリストを含む必要があります。次に例を示します。
Port_list=80/tcp,40/udp |