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 を使用すると、Agent Builder のソースコード (scdscreate(1HA)のマニュアルページを参照) や Sun Cluster 管理コマンドを使用するのに比べ、次の利点があります。
GDS は使い易いデータサービスです。
GDS とそのメソッドはコンパイル済みであるため、変更できません。
Agent Builder を使って、アプリケーション用のスクリプトを生成できます。これらのスクリプトは、複数のクラスタで再利用できる Solaris パッケージになっています。
GDS を使用すると多くの利点もありますが、GDS 機構の使用が適さない場合もあります。
コンパイル済みリソースタイプを使用する場合よりも高度な制御が必要な場合。たとえば拡張プロパティーを追加する場合や、デフォルト値を変更する場合など
特別な機能を追加するためにソースコードを変更する必要がある場合
Agent Builder
Sun Cluster 管理コマンド
Agent Builder を使用し、生成するソースコードのタイプとして GDS を選択します。特定のアプリケーションのリソースを設定するスクリプト群を生成するためにユーザーの入力が必要です。
この方法では、SUNWscgds に含まれているコンパイル済みデータサービスコードを使用します。ただし、クラスタ管理者は、Sun Cluster 管理コマンドを使ってリソースの作成と構成を行う必要があります。詳細は、clresource(1CL)を参照してください。 のマニュアルページを参照してください。
Sun Cluster のコマンドを発行するためには相当量の入力作業が必要になります。例として、「Sun Cluster 管理コマンドを使って GDS ベースの高可用性サービスを作成する方法」や「Sun Cluster 管理コマンドを使って GDS ベースのスケーラブルサービスを作成する方法」を参照してください。
GDS と Agent Builder を使用する方法では、この処理が簡単になります。この方法では、生成されるスクリプトがユーザーに代わって scrgadm と scswitch コマンドを出力するからです。
GDS を使用すると、GDS から渡される関連情報を、GDS が起動するスクリプトにロギングできます。この情報には、起動、検証、確認、停止の各メソッドの状態やプロパティー変数が含まれます。この情報を使ってスクリプトの問題やエラーを診断したり、この情報をほかの目的に適用することができます。
GDS でロギングすべきメッセージのレベル (つまり、タイプ) の指定には、Log_level プロパティーを使用します (詳細は「Log_level プロパティー」を参照)。NONE、INFO、ERR を指定できます。
次の 2 つの GDS ログファイルは、ディレクトリ /var/cluster/logs/DS/ resource-group-name/resource-name に配置されています。
start_stop_log.txt には、リソース起動メソッドや停止メソッドによって生成されるメッセージが含まれています。
probe_log.txt には、リソースモニターによって生成されるメッセージが含まれています。
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 プロパティーについて説明します。
Port_list プロパティーは、アプリケーションが待機するポートのリストを指定します。Port_list プロパティーは、Agent Builder によって作成される起動スクリプト内、または clresource コマンドで指定する必要があります。
このプロパティーの指定が必要かどうかは、アプリケーションがネットワーク対応かどうかによって決まります。アプリケーションがネットワーク対応であると指定した場合、つまり Network_aware プロパティーをデフォルトの TRUE に設定した場合は、Start_command 拡張プロパティーと Port_list プロパティーの両方を指定する必要があります。アプリケーションがネットワーク対応ではないと指定した場合、つまり Network_aware プロパティーを FALSE に設定した場合は、Start_command 拡張プロパティーのみを指定します。Port_list プロパティーの指定は任意です。
Start_command 拡張プロパティーで指定する起動コマンドによって、アプリケーションが起動されます。このコマンドは、引数を備えた UNIX コマンドでなければなりません。コマンドは、アプリケーションを起動するシェルに直接渡すことができます。
アプリケーションがネットワーク対応の場合は、Start_command 拡張プロパティーと Port_list プロパティーの両方を指定する必要があります。アプリケーションがネットワーク非対応の場合は、Start_command 拡張プロパティーだけを指定します。
任意の GDS プロパティーには、「システム定義プロパティー」と「拡張プロパティー」の両方が含まれます。システム定義プロパティーは、Sun Cluster により提供されるプロパティーの標準セットです。RTR ファイルで定義されているプロパティーは、拡張プロパティーと呼ばれます。
任意の GDS プロパティーには次のものがあります。
Child_mon_level 拡張プロパティー (管理コマンドでのみ使用)
Failover_enabled 拡張プロパティー
Log_level 拡張プロパティー
Network_aware 拡張プロパティー
Network_resources_used プロパティー
Probe_command 拡張プロパティー
Probe_timeout 拡張プロパティー
Start_timeout プロパティー
Stop_command 拡張プロパティー
Stop_signal 拡張プロパティー
Stop_timeout プロパティー
Validate_command 拡張プロパティー
Validate_timeout プロパティー
Sun Cluster 管理コマンドを使用する場合は、Child_mon_level プロパティーを使用できます。Agent Builder を使用する場合、このプロパティーは使用できません。
このプロパティーは、プロセスモニター機能 (Process Monitor Facility、PMF) を通じて監視されるプロセスを制御します。このプロパティーは、フォークされた子プロセスをどのようなレベルで監視するかを表します。このプロパティーは、pmfadm コマンドの -C 引数と同等の働きをします。詳細は、pmfadm(1M)のマニュアルページを参照してください。
このプロパティーを省略するか、このプロパティーにデフォルト値の -1 を指定することは、pmfadm コマンドで --C オプションを省略するのと同じ効果があります。つまり、すべての子プロセスとその子孫プロセスが監視されます。
この拡張プロパティーは、リソースのフェイルオーバー動作を制御します。この拡張プロパティーに TRUE を設定すると、アプリケーションは、再起動回数が Retry_interval 秒間に Retry_count を超えるとフェイルオーバーされます。
このプロパティーに FALSE を設定すると、再起動回数が Retry_interval 秒間に Retry_count を超えても、アプリケーションの再起動や別のノードへのフェイルオーバーは行われません。
このプロパティーを使用すると、アプリケーションリソースによるリソースグループのフェイルオーバーを防ぐことができます。このプロパティーのデフォルト値は TRUE です。
Failover_mode のほうがフェイルオーバー動作をよりよく制御できるので、将来的には Failover_enabled 拡張プロパティーの代わりに Failover_mode プロパティーを使用します。詳細は、r_properties(5)のマニュアルページで、Failover_mode の LOG_ONLY および RESTART_ONLY の値の説明を参照してください。
このプロパティーは、GDS によって記録される診断メッセージのレベル (つまり、タイプ) を指定します。このプロパティーには、NONE、INFO、または ERR を指定できます。NONE を指定すると、診断メッセージはロギングされません。INFO を指定すると、情報メッセージだけがロギングされます。ERR を指定すると、エラーメッセージだけがロギングされます。デフォルトでは、診断メッセージはロギングされません (NONE)。
このプロパティーでは、アプリケーションがネットワークを使用するかどうかを指定します。デフォルトでは、GDS はアプリケーションがネットワーク対応である、つまりネットワークを使用すると見なします (Network_aware の設定は TRUE)。
アプリケーションがネットワーク対応の場合は、Start_command 拡張プロパティーと Port_list プロパティーの両方を指定する必要があります。アプリケーションがネットワーク非対応の場合は、Start_command 拡張プロパティーだけを指定します。
このプロパティーは、リソースによって使用される論理ホスト名と共有アドレスネットワークリソースのリストを指定します。このプロパティーのデフォルト値は、空のリストです。アプリケーションを 1 つ以上の特定のアドレスにバインドする必要がある場合は、このプロパティーを指定してください。このプロパティーを省略するか Null を指定すると、アプリケーションはすべてのアドレスで待機します。
GDS リソースを作成する前には、LogicalHostname または SharedAddress リソースがすでに構成されている必要があります。LogicalHostname または SharedAddress リソースの構成方法については、『Sun Cluster データサービスの計画と管理 (Solaris OS 版)』を参照してください。
値を指定する場合は、1 つまたは複数のリソース名を指定します。個々のリソース名には、1 つ以上の LogicalHostnameリソースか 1 つ以上の SharedAddress リソースを含めることができます。詳細は、r_properties(5)のマニュアルページを参照してください。
このプロパティーは、特定のアプリケーションの状態を周期的にチェックする検証コマンドを指定します。このコマンドは、引数を備えた UNIX コマンドでなければなりません。コマンドは、アプリケーションを検証するシェルに直接渡されます。アプリケーションが正常に実行されていれば、検証コマンドは終了ステータスとして 0 を返します。
検証コマンドの終了ステータスは、アプリケーションの障害の重大度を判断するために使用されます。終了状態 (検証状態) は、0 (正常) から 100 (全面的な障害) までの整数である必要があります。検証ステータスは、特殊な値として 201 をとることがあります。この場合、アプリケーションは、Failover_enabled が FALSE に設定されている場合を除き、直ちにフェイルオーバーされます。GDS 検証アルゴリズムは、この検証ステータスを使って、アプリケーションをローカルに再起動するか、フェイルオーバーするかを決定します。詳細は、scds_fm_action(3HA)のマニュアルページを参照してください。終了ステータスが 201 の場合には、アプリケーションは直ちにフェイルオーバーされます。
検証コマンドを省略すると、GDS はそれ自身の簡単な検証を行います。この検証は、Network_resources_used プロパティーや scds_get_netaddr_list() 関数の出力から得られる一連の IP アドレスに対してアプリケーションに接続します。詳細は、scds_get_netaddr_list(3HA)のマニュアルページを参照してください。接続に成功すると、接続が直ちに切断されます。接続と切断が両方とも成功すれば、アプリケーションは正常に動作しているものとみなされます。
GDS で提供される検証は、全機能を備えたアプリケーション固有の検証の単純な代替物ではありません。
このプロパティーは、検証コマンドのタイムアウト値を指定します。詳細は、「Probe_command プロパティー」を参照してください。Probe_timeout のデフォルトは 30 秒です。
このプロパティーは、起動コマンドの起動タイムアウトを指定します。詳細は、「Start_command プロパティー」を参照してください。Start_timeout のデフォルトは 300 秒です。
このプロパティーは、アプリケーションを停止し、アプリケーションが完全に停止したあとでのみ戻る必要があるコマンドを指定します。このコマンドは、アプリケーションを停止するシェルに直接渡すことができる完全な UNIX コマンドでなければなりません。
Stop_command 拡張プロパティーが指定されていると、GDS 停止メソッドは、停止タイムアウトの 80% を指定して停止コマンドを起動します。さらに、GDS 停止メソッドは、停止コマンドの起動結果がどうであれ、停止タイムアウトの 15% を指定して SIGKILL を送信します。タイムアウトの残り 5% は、処理のオーバーヘッドのために使用されます。
停止コマンドが省略されていると、GDS は、Stop_signal に指定されたシグナルを使ってアプリケーションを停止しようとします。
このプロパティーは、PMF を通じてアプリケーションを停止するためのシグナルを識別する値を指定します。指定できる整数値のリストについては、signal(3HEAD)のマニュアルページを参照してください。デフォルト値は 15 です (SIGTERM )。
このプロパティーは、停止コマンドのタイムアウトを指定します。詳細は、「Stop_command プロパティー」を参照してください。Stop_timeout のデフォルトは 300 秒です。
このプロパティーは、アプリケーションを検証するために呼び出されるコマンドへの絶対パスを指定します。絶対パスを指定しない場合、アプリケーションは検証されません。
このプロパティーは、検証コマンドのタイムアウトを指定します。詳細は、「Validate_command プロパティー」 を参照してください。Validate_timeout のデフォルトは 300 秒です。