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

GDS の概念

GDS とは、簡単なネットワーク対応や非ネットワーク対応のアプリケーションを高可用性にしたり、スケーラブルにしたりするための機構です。そのためには、これらのアプリケーションを Sun Cluster Resource Group Management (RGM) フレームワークに組み込みます。この機構では、アプリケーションの可用性やスケーラビリティーを高めるために一般的に行う必要がある、データサービスのコーディングは必要ありません。

GDS ベースのデータサービスを非大域ゾーンで実行するように構成できるのは、関連するアプリケーションも非大域ゾーンで実行するように構成する場合です。

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

この節の内容は、次のとおりです。

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

汎用データサービスのリソースタイプ SUNW.gds は、SUNWscgds パッケージに含まれています。このパッケージは、クラスタのインストール時に scinstall ユーティリティーでインストールされます。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 を使用すると、Agent Builder のソースコード (scdscreate(1HA) のマニュアルページを参照) や Sun Cluster 管理コマンドを使用するのに比べ、次の利点があります。

GDS を使用すると多くの利点もありますが、GDS 機構の使用が適さない場合もあります。

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

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

GDS と Agent Builder

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

GDS と Sun Cluster 管理コマンド

この方法では、SUNWscgds に含まれているコンパイル済みデータサービスコードを使用します。ただし、クラスタ管理者は、Sun Cluster 管理コマンドを使ってリソースの作成と構成を行う必要があります。詳細は、clresource(1CL) のマニュアルページを参照してください。

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

Sun Cluster のコマンドを発行するためには相当量の入力作業が必要になります。たとえば、「Sun Cluster 管理コマンドを使って GDS ベースの高可用性サービスを作成する方法」「Sun Cluster 管理コマンドを使って GDS ベースのスケーラブルサービスを作成する方法」を参照してください。

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

GDS によるイベントのロギング

GDS を使用すると、GDS から渡される関連情報を、GDS が起動するスクリプトにロギングできます。この情報には、起動、検証、確認、停止の各メソッドの状態やプロパティー変数が含まれます。この情報を使ってスクリプトの問題やエラーを診断したり、この情報をほかの目的に適用することができます。

GDS でロギングすべきメッセージのレベル (つまり、タイプ) の指定には、Log_level プロパティーを使用します (詳細は Log_level プロパティー」を参照)。NONEINFOERR を指定できます。

GDS ログファイル

次の 2 つの GDS ログファイルは、ディレクトリ /var/cluster/logs/DS/ resource-group-name/resource-name に配置されています。

start_stop_log.txt に含まれる情報のタイプを、次の例に示します。

06/12/2006 12:38:05 phys-node-1 START-INFO> Start succeeded. [/home/brianx/sc/start_cmd]
06/12/2006 12:42:11 phys-node-1 STOP-INFO> Successfully stopped the application

probe_log.txt に含まれる情報のタイプを、次の例に示します。

06/12/2006 12:38:15 phys-node-1 PROBE-INFO> The GDS monitor (gds_probe) has been started
06/12/2006 12:39:15 phys-node-1 PROBE-INFO> The probe result is 0
06/12/2006 12:40:15 phys-node-1 PROBE-INFO> The probe result is 0
06/12/2006 12:41:15 phys-node-1 PROBE-INFO> The probe result is 0

必須の GDS プロパティー

アプリケーションがネットワーク対応の場合は、Start_command 拡張プロパティーと Port_list プロパティーの両方を指定する必要があります。アプリケーションがネットワーク非対応の場合は、Start_command 拡張プロパティーだけを指定します。

Start_command プロパティー

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

Port_list プロパティー

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

任意の GDS プロパティー

任意の GDS プロパティーには、「システム定義プロパティー」と「拡張プロパティー」の両方が含まれます。システム定義プロパティーは、Sun Cluster により提供されるプロパティーの標準セットです。RTR ファイルで定義されているプロパティーは、拡張プロパティーと呼ばれます。

任意の GDS プロパティーには次のものがあります。

Child_mon_level プロパティー


注 –

Sun Cluster 管理コマンドを使用する場合は、Child_mon_level プロパティーを使用できます。Agent Builder を使用する場合、このプロパティーは使用できません。


このプロパティーは、プロセスモニター機能 (PMF) を通じて監視されるプロセスを制御します。このプロパティーは、フォークされた子プロセスをどのようなレベルで監視するかを表します。このプロパティーは、pmfadm コマンドの -C 引数と同等の働きをします。詳細は、pmfadm(1M) のマニュアルページを参照してください。

このプロパティーを省略するか、このプロパティーにデフォルト値の -1 を指定することは、pmfadm コマンドで --C オプションを省略するのと同じ効果があります。つまり、すべての子プロセスとその子孫プロセスが監視されます。

Failover_enabled プロパティー

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

このプロパティーに FALSE を設定すると、再起動回数が Retry_interval 秒間に Retry_count を超えてもアプリケーションの再起動や、別のノードまたはゾーンへのフェイルオーバーは行われません。

このプロパティーを使用すると、アプリケーションリソースによるリソースグループのフェイルオーバーを防ぐことができます。このプロパティーのデフォルト値は TRUE です。


注 –

Failover_mode のほうがフェイルオーバー動作をよりよく制御できるので、将来的には Failover_enabled 拡張プロパティーの代わりに Failover_mode プロパティーを使用します。詳細は、r_properties(5) のマニュアルページで、Failover_modeLOG_ONLY および RESTART_ONLY の値の説明を参照してください。


Log_level プロパティー

このプロパティーは、GDS によって記録される診断メッセージのレベル (つまり、タイプ) を指定します。このプロパティーには、NONEINFO、または ERR を指定できます。NONE を指定すると、診断メッセージはロギングされません。INFO を指定すると、情報メッセージだけがロギングされます。ERR を指定すると、エラーメッセージだけがロギングされます。デフォルトでは、診断メッセージはロギングされません (NONE)。

Network_resources_used プロパティー

このプロパティーは、リソースによって使用される論理ホスト名と共有アドレスネットワークリソースのリストを指定します。このプロパティーのデフォルト値は null です。アプリケーションを 1 つ以上の特定のアドレスにバインドする必要がある場合は、このプロパティーを指定してください。このプロパティーを省略するか Null を指定すると、アプリケーションはすべてのアドレスで待機します。

GDS リソースを作成する前には、LogicalHostname または SharedAddress リソースがすでに構成されている必要があります。LogicalHostname または SharedAddress リソースの構成方法については、『Sun Cluster データサービスの計画と管理 (Solaris OS 版)』を参照してください。

値を指定する場合は、1 つまたは複数のリソース名を指定します。個々のリソース名には、1 つ以上の LogicalHostnameリソースか 1 つ以上の SharedAddress リソースを含めることができます。詳細は、r_properties(5) のマニュアルページを参照してください。

Probe_command プロパティー

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

検証コマンドの終了ステータスは、アプリケーションの障害の重大度を判断するために使用されます。終了状態 (検証状態) は、0 (正常) から 100 (全面的な障害) までの整数である必要があります。検証ステータスは、特殊な値として 201 をとることがあります。この場合、アプリケーションは、Failover_enabledFALSE に設定されている場合を除き、直ちにフェイルオーバーされます。GDS 検証アルゴリズムは、この検証ステータスを使って、アプリケーションをローカルに再起動するか、フェイルオーバーするかを決定します。詳細は、scds_fm_action(3HA) のマニュアルページを参照してください。終了ステータスが 201 の場合には、アプリケーションは直ちにフェイルオーバーされます。

検証コマンドを省略すると、GDS はそれ自身の簡単な検証を行います。この検証は、Network_resources_used プロパティーや scds_get_netaddr_list() 関数の出力から得られる一連の IP アドレスに対してアプリケーションに接続します。詳細は、scds_get_netaddr_list(3HA) のマニュアルページを参照してください。接続に成功すると、接続が直ちに切断されます。接続と切断が両方とも成功すれば、アプリケーションは正常に動作しているものとみなされます。


注 –

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


Probe_timeout プロパティー

このプロパティーは、検証コマンドのタイムアウト値を指定します。詳細は、Probe_command プロパティー」を参照してください。Probe_timeout のデフォルトは 30 秒です。

Start_timeout プロパティー

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

Stop_command プロパティー

このプロパティーは、アプリケーションを停止し、アプリケーションが完全に停止したあとでのみ戻る必要があるコマンドを指定します。このコマンドは、アプリケーションを停止するシェルに直接渡すことができる完全な UNIX コマンドでなければなりません。

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

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

Stop_signal プロパティー

このプロパティーは、PMF を通じてアプリケーションを停止するためのシグナルを識別する値を指定します。指定可能な整数値のリストについては、signal(3HEAD) のマニュアルページを参照してください。デフォルト値は 15 です (SIGTERM )。

Stop_timeout プロパティー

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

Validate_command プロパティー

このプロパティーは、アプリケーションを検証するために呼び出されるコマンドへの絶対パスを指定します。絶対パスを指定しない場合、アプリケーションは検証されません。

Validate_timeout プロパティー

このプロパティーは、検証コマンドのタイムアウトを指定します。詳細は、Validate_command プロパティー」 を参照してください。Validate_timeout のデフォルトは 300 秒です。