スケーラブルリソースは、同時に複数のノード上でオンラインになることができます。スケーラブルなリソース (ネットワーク負荷分散を使用) を、非大域ゾーンでも動作するよう構成することができます。ただし、そのようなスケーラブルなリソースを実行できるのは、物理ノードごとに 1 つのゾーン内だけです。スケーラブルリソースには、Sun Cluster HA for Sun Java System Web Server (以前の Sun Cluster HA for Sun ONE Web Server) や Sun Cluster HA for Apache などのデータサービスがあります。
RGM は、スケーラブルリソースの実装をサポートするプロパティーをいくつか提供します。
ブール型の Failover リソースタイププロパティーを FALSE に設定し、一度に複数のノードでオンラインにできるリソースグループ内でリソースが構成されるようにします。
Scalable リソースプロパティーは、リソースがクラスタ共有アドレス機能を使用するかどうかを決定します。スケーラブルサービスは共有アドレスリソースを使用するので (スケーラブルサービスの複数のインスタンスが単一のサービスであるかのようにクライアントに見せるため)、Scalable には TRUE を設定します。
RG_mode プロパティーを使用すると、クラスタ管理者はリソースグループがフェイルオーバーまたはスケーラブルのどちらであるかを識別できます。RG_mode が SCALABLE の場合、RGM は Maximum_primaries に 1 より大きな値が割り当てられることを許可します。同時に複数のノードまたはゾーンがリソースグループをマスターできます。RGM は、Failover プロパティーが FALSE であるリソースが、RG_mode が SCALABLE であるリソースグループ内でインスタンス化されることを許可します。
クラスタ管理者は、スケーラブルサービスリソースを含めるためのスケーラブルリソースグループを作成します。また、スケーラブルリソースが依存する共有アドレスリソースを含めるためのフェイルオーバーリソースグループも別に作成します。
クラスタ管理者は、RG_dependencies リソースグループプロパティーを使用して、あるノードまたはゾーン上でリソースグループをオンラインまたはオフラインにする順番を指定します。スケーラブルリソースとそれらが依存する共有アドレスリソースは異なるリソースグループに存在するので、この順番はスケーラブルサービスにとって重要です。スケーラブルデータサービスが起動する前に、そのネットワークアドレス (共有アドレス) リソースが構成されていることが必要です。したがって、クラスタ管理者は (スケーラブルサービスが属するリソースグループの) RG_dependencies プロパティーを設定して、共有アドレスリソースが属するリソースグループを組み込む必要があります。
リソースの RTR ファイルで Scalable プロパティーを宣言した場合、RGM はそのリソースに対して、次のようなスケーラブルプロパティーのセットを自動的に作成します。
このリソースによって使用される共有アドレスリソースを特定します。このプロパティーのデフォルト値は空の文字列です。したがって、クラスタ管理者はリソースを作成するときに、スケーラブルサービスが使用する共有アドレスの実際のリストを提供する必要があります。clsetup コマンドと Sun Cluster Manager は、スケーラブルサービスに必要なリソースとリソースグループを自動的に設定する機能を提供します。
リソースの負荷均衡ポリシーを指定します。このポリシーは RTR ファイルに明示的に設定できます (デフォルトの LB_WEIGHTED を使用してもかまいません)。どちらの場合でも、クラスタ管理者はリソースを作成するときに値を変更できます (RTR ファイルで Load_balancing_policy の Tunable を NONE または FALSE に設定していない場合)。使用できる有効な値は次のとおりです。
Load_balancing_weights プロパティーに設定されている重みにより、さまざまなノードに負荷が分散されます。
スケーラブルサービスの指定のクライアント (クライアントの IP アドレスで識別される) は、常に同じクラスタノードに送信されます。
指定のクライアント (クライアントの IP アドレスで識別される) はワイルドカードスティッキーサービスの IP アドレスに接続され、送信時に使用されるポート番号とは無関係に、常に同じクラスタノードに送信されます。
LB_STICKY または LB_STICKY_WILD の Load_balancing_policy を持つスケーラブルサービスの場合、サービスがオンラインの状態で Load_balancing_weights を変更すると、既存のクライアントとの関連がリセットされることがあります。その場合、そのクラスタ内にある別のノードまたはゾーンによりクライアントが以前にサービスを受けていた場合であっても、別のノードまたはゾーンが後続のクライアント要求にサービスを提供する場合があります。
同様に、サービスの新しいインスタンスをクラスタ上で起動すると、既存のクライアントとの関連がリセットされることがあります。
個々のノードへ送信される負荷を指定します。「weight@node,weight@node」という形式で指定します。weight は、指定された node に分散される負荷の相対的な割合を反映した整数です。ノードに分散される負荷の割合は、アクティブなインスタンスのすべてのウェイトの合計でこのノードのウェイトを割った値になります。たとえば、 1@1,3@2 はノード 1 に負荷の 1/4 が割り当てられ、ノード 2 に負荷の 3/4 が割り当てられることを指定します。
サーバーが待機するポートです。このプロパティーのデフォルト値は空の文字列です。ポートのリストは RTR ファイルに指定できます。このファイルで指定しない場合、クラスタ管理者は、リソースを作成するときに、実際のポートのリストを提供する必要があります。
クラスタ管理者がスケーラブルかフェイルオーバーのどちらかとなるように構成することが可能な、データサービスを作成できます。このためには、データサービスの RTR ファイルにおいて、Failover リソースタイププロパティーと Scalable リソースプロパティーの両方を FALSE に宣言します。Scalable プロパティーは作成時に調整できるように指定します。
Failover プロパティーの値が FALSE の場合、リソースはスケーラブルリソースグループに構成できます。クラスタ管理者はリソースを作成するときにScalable の値を TRUE に変更し、スケーラブルサービスを作成することによって、共有アドレスを有効にできます。
一方、Failover が FALSE に設定されている場合でも、クラスタ管理者はリソースをフェイルオーバーリソースグループに構成して、フェイルオーバーサービスを実装できます。クラスタ管理者は Scalable の値 (FALSE) は変更しません。このような状況に対処するために、Scalable プロパティーの Validate メソッドで妥当性を検査する必要があります。Scalable が FALSE の場合、リソースがフェイルオーバーリソースグループに構成されていることを確認します。
スケーラブルリソースの詳細については、『Sun Cluster の概念 (Solaris OS 版)』を参照してください。
Scalable プロパティーが TRUE に設定されているリソースが作成または更新されるたびに、RGM は、さまざまなリソースプロパティーのを妥当性を検査します。プロパティーの構成が正しく行われていないと、RGM は更新や作成の試行を拒否します。
RGM は次の検査を行います。
Network_resources_used プロパティーは、空であってはならず、既存の共有アドレスリソースの名前を含む必要があります。スケーラブルリソースを含むリソースグループの Nodelist にあるすべてのノードは、指定した共有アドレスリソースのそれぞれの NetIfList プロパティーまたは AuxNodeList プロパティーに存在する必要があります。
スケーラブルリソースを含むリソースグループの RG_dependencies プロパティーは、スケーラブルリソースの Network_resources_used プロパティーに存在する、すべての共有アドレスリソースのリソースグループを含む必要があります。
Port_list プロパティーは空であってはならず、ポートとプロトコルのペアのリストを含む必要があります。各ポート番号にはスラッシュ (/) を追加し、そのあとにはそのポートにより使用されているプロトコルを付けます。次に例を示します。
Port_list=80/tcp6,40/udp6
プロトコルには、次のものを指定できます。
tcp (TCP IPv4)
tcp6 (TCP IPv6)
udp (UDP IPv4)
udp6 (UDP IPv6)