Sun Cluster 3.0 5/02 補足情報

汎用データサービスの概要

汎用データサービス (GDS) とは、ネットワーク対応のシンプルなアプリケーションを Sun Cluster Resource Group Management フレームワークにプラグインすることによって、これらのアプリケーションを可用性の高いものにしたり、スケーラブルなものにするための機構です。この機構では、アプリケーションを可用性の高いものにしたり、スケーラブルなものにするために通常必要になるエージェントのコーディングは必要ありません。

GDS は、あらかじめコンパイルされた単一のデータサービスです。このアプローチでは、コールバックメソッド (rt_callbacks(1HA)) の実装やリソースタイプ登録ファイル (rt_reg(4)) など、コンパイル済みのデータサービスやそのコンポーネントを変更することはできません。

コンパイル済みリソースタイプ

汎用データサービスのリソースタイプ SUNW.gds は、 SUNWscgds パッケージに含まれています。このパッケージは、クラスタのインストール時に scinstall(1M) ユーティリティでインストールされます。SUNWscgds パッケージには次のファイルが格納されています。


# pkgchk -v SUNWscgds
 
/opt/SUNWscgds 
/opt/SUNWscgds/bin 
/opt/SUNWscgds/bin/gds_monitor_check 
/opt/SUNWscgds/bin/gds_monitor_start 
/opt/SUNWscgds/bin/gds_monitor_stop 
/opt/SUNWscgds/bin/gds_probe 
/opt/SUNWscgds/bin/gds_svc_start 
/opt/SUNWscgds/bin/gds_svc_stop 
/opt/SUNWscgds/bin/gds_update 
/opt/SUNWscgds/bin/gds_validate 
/opt/SUNWscgds/etc 
/opt/SUNWscgds/etc/SUNW.gds

GDS を使用する利点

GDS には、SunPlex Agent Builder が生成するソースコードモデル (scdscreate(1HA) のマニュアルページを参照) や標準的な Sun Cluster 管理コマンドを使用するのに比べ、次の利点があります。

GDS を使用するサービスの作成方法

GDS を使用するサービスの作成方法は 2 通りあります。

GDS と SunPlex Agent Builder

SunPlex Agent Builder を使用し、生成されるソースコードのタイプとして GDS を選択します。特定のアプリケーションのリソースを設定する起動スクリプト群を生成するためにユーザーの入力が必要です。

GDS と標準的な Sun Cluster 管理コマンド

この方法では SUNWscgds にあるコンパイル済みデータサービスコードを使用しますが、システム管理者は、標準的な Sun Cluster 管理コマンド (scrgadm(1M) と scswitch(1M)) を使って、リソースの作成と構成を行なう必要があります。

GDS ベースのサービスを作成する方法の選択

「標準的な Sun Cluster 管理コマンドを使って GDS ベースの高可用性サービスを作成する方法」「標準的な Sun Cluster 管理コマンドを使って GDS ベースのスケーラブルサービスを作成する方法」 の手順からわかるように、適切な scrgadmscswitch コマンドを実行するためには、かなりの分量の入力を行なう必要があります。

GDS と SunPlex Agent Builder を使用する方法では、この処理が簡単になります。この方法では、生成される起動スクリプトがユーザーに代わって scrgadmscswitch コマンドを出力するからです。

GDS の使用が適さない場合

GDS には多くの利点がありますが、GDS の使用が適さない場合もあります。GDS の使用が適切でないのは次のような場合です。

GDS の必須入力

次のプロパティを指定する必要があります。

Start_command

アプリケーションは、Start_command プロパティに指定された start コマンドで起動されます。このコマンドは、引数を備えた完全な UNIX コマンドでなければなりません。コマンドは、アプリケーションを起動するシェルに直接渡されます。

Port_list

Port_list は、アプリケーションが待機するポート群を指定したものです。Port_list プロパティは、SunPlex Agent Builder によって生成される start スクリプトか、scrgadm コマンド (標準的な Sun Cluster 管理コマンドを使用する場合) に指定されていなければなりません。

GDS の任意入力

GDS の任意入力には次のものがあります。

Network_resources_used

このプロパティのデフォルト値は Null です。 アプリケーションが 1 つ以上の特定のアドレスにバインドする必要がある場合は、このプロパティを指定する必要があります。このプロパティを省略するか、このプロパティが Null の場合、アプリケーションはすべてのアドレスに対して待機するものとみなされます。

GDS リソースを作成する場合は、 LogicalHostnameSharedAddress リソースがあらかじめ構成されていなければなりません。LogicalHostnameSharedAddress リソースの構成方法については、『Sun Cluster 3.0 12/01 データサービスのインストールと構成』を参照してください。

値を指定する場合は、1 つまたは複数のリソース名を指定します。個々のリソース名には、1 つ以上の論理ホスト名か 1 つ以上の共有アドレスを指定できます。詳細は、r_properties(5) のマニュアルページを参照してください。

Stop_command

stop コマンドは、アプリケーションを停止し、アプリケーションが完全に停止した後で終了します。 このコマンドは、アプリケーションを停止するシェルに直接渡される完全な UNIX コマンドでなければなりません。

Stop_command が指定されていると、GDS 停止メソッドは、停止タイムアウトの 80% を指定して停止コマンドを起動します。さらに、GDS 停止メソッドは、停止コマンドの起動結果がどうであれ、停止タイムアウトの 15% を指定して SIGKILL を送信します。タイムアウトの残り 5% は、処理のオーバーヘッドのために使用されます。

stop コマンドが省略されていると、GDS は、 Stop_signal に指定されたシグナルを使ってアプリケーションを停止します。

Probe_command

probe コマンドは、特定のアプリケーションの状態を周期的にチェックします。このコマンドは、引数を備えた完全な UNIX コマンドでなければなりません。コマンドは、アプリケーションの状態をチェックするシェルに直接渡されます。アプリケーションの状態が正常であれば、probe コマンドは終了ステータスとして 0 を返します。

probe コマンドの終了ステータスは、アプリケーションの障害の重大度を判断するために使用されます。終了ステータス (probe ステータス) は、0 (正常) から 100 (全面的な障害) までの整数でなければなりません。probe ステータスは 201 という特別な値をもつことがあります。この場合には、Failover_enabled が false に設定されている場合を除き、アプリケーションのフェイルオーバーが直ちに行なわれます。 GDS プローブアルゴリズム ( scds_fm_action(3HA) のマニュアルページを参照) は、この probe ステータスを使って、アプリケーションをローカルに再起動するか別のノードにフェイルオーバーするかを決定します。終了ステータス 201 なら、アプリケーションは直ちにフェイルオーバーされます。

probe コマンドが省略されていると、GDS は、Newtork_resources_used プロパティか、 scds_get_netaddr_list(3HA) の出力から得られる IP アドレス群を使ってアプリケーションに接続する独自の簡単な検証を行ないます。この検証では、接続に成功すると、接続を直ちに切り離します。接続と切り離しが両方とも正常なら、アプリケーションは正常に動作しているものとみなされます。


注 -

GDS 提供の検証は、全機能を備えたアプリケーション固有の検証を代替するものではありません。


Start_timeout

このプロパティでは、start コマンドの起動タイムアウトを指定します (詳細は、「Start_command」を参照)。Start_timeout のデフォルトは 300 秒です。

Stop_timeout

このプロパティでは、stop コマンドの停止タイムアウトを指定します (詳細は、「Stop_command」を参照)。Stop_timeout のデフォルトは 300 秒です。

Probe_timeout

このプロパティでは、probe コマンドのプローブタイムアウトを指定します (詳細は、「Probe_command」を参照)。Probe_timeout のデフォルトは 30 秒です。

Child_mon_level

このプロパティでは、PMF を通してどのプロセスを監視するかを制御します。 このプロパティは、フォークされた子プロセスをどのようなレベルで監視するかを表します。これは、pmfadm(1M) コマンドの -C 引数と同等です。

このプロパティを省略するか、このプロパティにデフォルト値の -1 を指定することは、pmfadm コマンドで -C オプションを省略するのと同じ効果があります。つまり、すべての子プロセスとその子孫プロセスが監視されます。 詳細は、pmfadm(1M) のマニュアルページを参照してください。


注 -

このオプションは、標準的な Sun Cluster 管理コマンドを使用するときだけ指定できます。SunPlex Agent Builder を使用するときには指定できません。


Failover_enabled

ブール値のこの拡張プロパティでは、リソースのフェイルオーバー動作を制御します。この拡張プロパティに true を設定すると、アプリケーションは、再起動回数が retry_interval 秒間に retry_count を超えるとフェイルオーバーされます。

この拡張プロパティに false を設定すると、再起動回数が retry_interval 秒間に retry_count を超えてもアプリケーションの再起動やフェイルオーバーは行なわれません。

この拡張プロパティを使用すれば、アプリケーションリソースがリソースグループのフェイルオーバーを引き起こすことを防止できます。デフォルトは true です。

Stop_signal

GDS は、整数値のこの拡張プロパティを使って、PMF によるアプリケーションの停止に使用するシグナルを判別します。 指定できる整数値については、signal(3head) のマニュアルページを参照してください。デフォルトは 15 (SIGTERM) です。