スケーラブルリソースは、同時に複数のノードでオンラインになることができます。スケーラブルリソース (ネットワーク負荷分散を使用) は、グローバルクラスタ非投票ノードでも動作するように構成できます。ただし、そのようなスケーラブルリソースを実行できるのは、Solaris ホストごとに 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 はそのリソースに対して、次のようなスケーラブルプロパティーのセットを自動的に作成します。
このリソースが依存関係を有する共有アドレスリソースを特定します。このリストには、プロパティー Resource_dependencies、Resource_dependencies_weak、Resource_dependencies_restart、または Resource_dependencies_offline_restart に現れるすべてのネットワークアドレスリソースが含まれます。
RTR ファイルに Scalable プロパティーが宣言されている場合、RGM は自動的にこのプロパティーを作成します。Scalable プロパティーが RTR ファイルで宣言されていない場合、Network_resources_used は RTR ファイルで明示的に宣言されていないかぎり使用できません。
ユーザーが Network_resources_used プロパティーに値を割り当てていない場合、その値は、リソース依存関係のプロパティーの設定に基づいて、RGM によって自動的に更新されます。このプロパティーを直接設定する必要はありません。その代わりに、Resource_dependencies、Resource_dependencies_offline_restart、Resource_dependencies_restart、または Resource_dependencies_weak プロパティーを設定します。
リソースの負荷均衡ポリシーを指定します。このポリシーは 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 は次の検査を行います。
スケーラブルリソースは、1 つ以上の既存の共有アドレスリソースに対するリソースの依存関係を宣言する必要があります。
スケーラブルリソースを含むリソースグループに関する Nodelist 内のすべてのノードは、SharedAddress リソースの NetIfList プロパティーに表示されている必要があります。
スケーラブルリソースグループの Nodelist は、次に示す 2 つのノードリストのサブセット、組み合わせ、または結合したものであるか、あるいはこれらのノードリストと同一であることが必要です。
SharedAddress リソースを含むリソースグループの Nodelist。
SharedAddress リソースの AuxNodeList プロパティーに一覧表示されている Nodelist。
共有アドレスのリソースグループのノードリストにスケーラブルリソースのリソースグループに関するノードリストのすべてのノードを含める場合は、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)