Sun Cluster データサービス開発ガイド (Solaris OS 版)

スケーラブルリソースの実装

スケーラブルリソースは、同時に複数のノードでオンラインになることができます。スケーラブルリソース (ネットワーク負荷分散を使用) は、グローバルクラスタ非投票ノードでも動作するように構成できます。ただし、そのようなスケーラブルリソースを実行できるのは、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_modeSCALABLE の場合は、RGM では Maximum_primaries を 1 より大きな値に設定できます。つまり、リソースグループを同時に複数のノードでマスターすることが可能になります。RGM は、Failover プロパティーが FALSE であるリソースが、RG_modeSCALABLE であるリソースグループ内でインスタンス化されることを許可します。

クラスタ管理者は、スケーラブルサービスリソースを含めるためのスケーラブルリソースグループを作成します。また、スケーラブルリソースが依存する共有アドレスリソースを含めるためのフェイルオーバーリソースグループも別に作成します。

クラスタ管理者は、RG_dependencies リソースグループプロパティーを使用して、あるノード上でリソースグループをオンラインまたはオフラインにする順番を指定します。スケーラブルリソースとそれらが依存する共有アドレスリソースは異なるリソースグループに存在するので、この順番はスケーラブルサービスにとって重要です。スケーラブルデータサービスが起動する前に、そのネットワークアドレス (共有アドレス) リソースが構成されていることが必要です。したがって、クラスタ管理者は (スケーラブルサービスが属するリソースグループの) RG_dependencies プロパティーを設定して、共有アドレスリソースが属するリソースグループを組み込む必要があります。

リソースの RTR ファイルで Scalable プロパティーを宣言した場合、RGM はそのリソースに対して、次のようなスケーラブルプロパティーのセットを自動的に作成します。

Network_resources_used

このリソースが依存関係を有する共有アドレスリソースを特定します。このリストには、プロパティー Resource_dependenciesResource_dependencies_weakResource_dependencies_restart、または Resource_dependencies_offline_restart に現れるすべてのネットワークアドレスリソースが含まれます。

RTR ファイルに Scalable プロパティーが宣言されている場合、RGM は自動的にこのプロパティーを作成します。Scalable プロパティーが RTR ファイルで宣言されていない場合、Network_resources_used は RTR ファイルで明示的に宣言されていないかぎり使用できません。

ユーザーが Network_resources_used プロパティーに値を割り当てていない場合、その値は、リソース依存関係のプロパティーの設定に基づいて、RGM によって自動的に更新されます。このプロパティーを直接設定する必要はありません。その代わりに、Resource_dependenciesResource_dependencies_offline_restartResource_dependencies_restart、または Resource_dependencies_weak プロパティーを設定します。

Load_balancing_policy

リソースの負荷均衡ポリシーを指定します。このポリシーは RTR ファイルに明示的に設定できます (デフォルトの LB_WEIGHTED を使用してもかまいません)。どちらの場合でも、クラスタ管理者はリソースを作成するときに値を変更できます (RTR ファイルで Load_balancing_policyTunableNONE または FALSE に設定していない場合)。使用できる有効な値は次のとおりです。

LB_WEIGHTED

Load_balancing_weights プロパティーに設定されている重みにより、さまざまなノードに負荷が分散されます。

LB_STICKY

スケーラブルサービスの指定のクライアント (クライアントの IP アドレスで識別される) は、常に同じクラスタノードに送信されます。

LB_STICKY_WILD

指定のクライアント (クライアントの IP アドレスで識別される) はワイルドカードスティッキーサービスの IP アドレスに接続され、送信時に使用されるポート番号とは無関係に、常に同じクラスタノードに送信されます。

LB_STICKY または LB_STICKY_WILDLoad_balancing_policy を持つスケーラブルサービスの場合、サービスがオンラインの状態で 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 ファイルにおいて、Failover リソースタイププロパティーと Scalable リソースプロパティーの両方を FALSE に宣言します。Scalable プロパティーは作成時に調整できるように指定します。

Failover プロパティーの値が FALSE の場合、リソースはスケーラブルリソースグループに構成できます。クラスタ管理者はリソースを作成するときにScalable の値を TRUE に変更し、スケーラブルサービスを作成することによって、共有アドレスを有効にできます。

一方、FailoverFALSE に設定されている場合でも、クラスタ管理者はリソースをフェイルオーバーリソースグループに構成して、フェイルオーバーサービスを実装できます。クラスタ管理者は Scalable の値 (FALSE) は変更しません。このような状況に対処するために、Scalable プロパティーの Validate メソッドで妥当性を検査する必要があります。ScalableFALSE の場合、リソースがフェイルオーバーリソースグループに構成されていることを確認します。

スケーラブルリソースについては、『Sun Cluster の概念 (Solaris OS 版)』を参照してください。

スケーラブルサービスの妥当性検査

Scalable プロパティーが TRUE であるリソースを作成または更新するたびに、RGM は、さまざまなリソースプロパティーの妥当性を検査します。プロパティーの構成が正しく行われていないと、RGM は更新や作成の試行を拒否します。

RGM は次の検査を行います。