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

GDS の概要

汎用データサービス (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 拡張プロパティに指定される起動コマンドは、アプリケーションの起動を行います。 このコマンドは、引数を備えた完全な UNIX コマンドでなければなりません。コマンドは、アプリケーションを起動するシェルに直接渡されます。

Port_list プロパティ

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

GDS のオプションプロパティ

GDS のオプションプロパティには次のものがあります。

Network_resources_used プロパティ

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

GDS リソースを作成する場合は、 LogicalHostnameSharedAddress リソースがあらかじめ構成されていなければなりません。 LogicalHostname または SharedAddress リソースの構成方法については、『Sun Cluster データサービスの計画と管理 (Solaris OS 版)』を参照してください。

値を指定する場合は、1 つまたは複数のリソース名を指定します。個々のリソース名には、1 つ以上の LogicalHostname か 1 つ以上の SharedAddress を指定できます。 詳細は、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 ステータス) は、0 (正常) から 100 (全面的な障害) までの整数でなければなりません。 probe ステータスは 201 という特別な値をもつことがあります。この場合には、Failover_enabled が false に設定されている場合を除き、アプリケーションのフェイルオーバーが直ちに行なわれます。 GDS プローブアルゴリズム (scds_fm_action(3HA) のマニュアルページを参照) は、この検証状態を使って、アプリケーションをローカルに再起動するか別のノードにフェイルオーバーするかを決定します。終了ステータス 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 オプションを省略するのと同じ効果があります。


注 –

このオプションは、標準的な 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) です。