GDS とは、簡単なネットワーク対応や非ネットワーク対応のアプリケーションを高可用性にしたり、スケーラブルにしたりするためのメカニズムです。そのためには、これらのアプリケーションを Sun Cluster Resource Group Management (RGM) フレームワークに組み込む必要があります。この機構では、アプリケーションを高可用性にしたり、スケーラブルにしたりするために通常必要になるエージェントのコーディングは必要ありません。
GDS は、あらかじめコンパイルされた単一のデータサービスです。このアプローチでは、コールバックメソッド (rt_callbacks(1HA)) の実装やリソースタイプ登録ファイル (rt_reg(4)) など、コンパイル済みのデータサービスやそのコンポーネントを変更することはできません。
汎用データサービスのリソースタイプ 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 には、SunPlex Agent Builder が生成するソースコードモデル (scdscreate (1HA) のマニュアルページを参照) や標準的な Sun Cluster 管理コマンドを使用するのに比べ、次の利点があります。
GDS は使い易いデータサービスです。
GDS とそのメソッドはコンパイル済みであるため、変更できません。
SunPlex Agent Builder を使って、アプリケーション用のスクリプトを生成できます。これらのスクリプトは、複数のクラスタ間で再利用できる Solaris パッケージに含まれています。
GDS には多くの利点がありますが、GDS 機構の使用が適さない場合もあります。次のような場合は、GDS を使用すべきではありません。
コンパイル済みリソースタイプを使用する場合よりも高度な制御が必要な場合。たとえば拡張プロパティを追加する場合や、デフォルト値を変更する場合など
特別な機能を追加するためにソースコードを変更する必要がある場合
SunPlex Agent Builder を使用
標準的な Sun Cluster 管理コマンドを使用
SunPlex Agent Builder を使用します。生成するソースコードのタイプとして GDS を選択します。特定のアプリケーションのリソースを設定するスクリプト群を生成するためにユーザーの入力が必要です。
この方法では、SUNWscgds に含まれているコンパイル済みデータサービスコードを使用します。システム管理者は、標準的な Sun Cluster 管理コマンドを使ってリソースの作成と構成を行う必要があります。詳細は、scrgadm(1M) と scswitch(1M) のマニュアルページを参照してください。
「Sun Cluster 管理コマンドを使って GDS ベースの高可用性サービスを作成する方法」や 「Sun Cluster 管理コマンドを使って GDS ベースのスケーラブルサービスを作成する方法」の手順からわかるように、適切な scrgadm や scswitch コマンドを実行するためには、かなりの分量の入力を行う必要があります。
GDS と SunPlex Agent Builder を使用する方法では、この処理が簡単になります。この方法では、生成されるスクリプトがユーザーに代わって scrgadm と scswitch コマンドを出力するからです。
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 には、次のようなメッセージが書き込まれます。
10/20/2004 12:38:05 phys-node-1 START-INFO> Start succeeded. [/home/brianx/sc/start_cmd] 10/20/2004 12:42:11 phys-node-1 STOP-INFO> Successfully stopped the application
probe_log.txt には、次のようなメッセージが書き込まれます。
10/20/2004 12:38:15 phys-node-1 PROBE-INFO> The GDS monitor (gds_probe) has been started 10/20/2004 12:39:15 phys-node-1 PROBE-INFO> The probe result is 0 10/20/2004 12:40:15 phys-node-1 PROBE-INFO> The probe result is 0 10/20/2004 12:41:15 phys-node-1 PROBE-INFO> The probe result is 0
アプリケーションが非ネットワーク対応の場合は、Start_command 拡張プロパティと Port_list プロパティを両方とも指定する必要があります。アプリケーションがネットワーク対応の場合は、Port_list プロパティだけが必須です。
Start_command 拡張プロパティに指定される起動コマンドは、アプリケーションの起動を行います。このコマンドは、引数を備えた UNIX コマンドでなければなりません。コマンドは、アプリケーションを起動するシェルに直接渡されます。
Port_list プロパティは、アプリケーションが待機するポート群を指定したものです。Port_list プロパティは、SunPlex Agent Builder によって生成される start スクリプトか、scrgadm コマンド (標準的な Sun Cluster 管理コマンドを使用する場合) に指定されていなければなりません。
Network_resources_used
Stop_command (拡張プロパティ)
Probe_command (拡張プロパティ)
Start_timeout
Stop_timeout
Probe_timeout (拡張プロパティ)
Child_mon_level (標準的な管理コマンドだけで使用される拡張プロパティ)
Failover_enabled (拡張プロパティ)
Stop_signal (拡張プロパティ)
Log_level (拡張プロパティ)
このプロパティのデフォルト値は Null です。アプリケーションが 1 つ以上の特定のアドレスにバインドする必要がある場合は、このプロパティを指定する必要があります。このプロパティを省略するか、このプロパティが Null の場合、アプリケーションはすべてのアドレスに対して待機するものとみなされます。
GDS リソースを作成する場合は、 LogicalHostname か SharedAddress リソースがあらかじめ構成されていなければなりません。LogicalHostname または SharedAddress リソースの構成方法については、『Sun Cluster データサービスの計画と管理 (Solaris OS 版)』を参照してください。
値を指定する場合は、1 つまたは複数のリソース名を指定します。個々のリソース名には、1 つ以上の LogicalHostname か 1 つ以上の SharedAddress を指定できます。詳細は、r_properties(5) のマニュアルページを参照してください。
stop コマンドは、アプリケーションを停止し、アプリケーションが完全に停止した後で終了します。このコマンドは、アプリケーションを停止するシェルに直接渡される完全な UNIX コマンドでなければなりません。
Stop_command 拡張プロパティが指定されていると、GDS 停止メソッドは、停止タイムアウトの 80% を指定して停止コマンドを起動します。さらに、GDS 停止メソッドは、停止コマンドの起動結果がどうであれ、停止タイムアウトの 15% を指定して SIGKILL を送信します。タイムアウトの残り 5% は、処理のオーバーヘッドのために使用されます。
stop コマンドが省略されていると、GDS は、 Stop_signal に指定されたシグナルを使ってアプリケーションを停止します。
probe コマンドは、特定のアプリケーションの状態を周期的にチェックします。このコマンドは、引数を備えた UNIX コマンドでなければなりません。コマンドは、アプリケーションを検証するシェルに直接渡されます。アプリケーションの状態が正常であれば、検証コマンドは終了ステータスとして 0 を返します。
検証コマンドの終了ステータスは、アプリケーションの障害の重大度を判断するために使用されます。終了ステータス (検証ステータス) は、0 (正常) から 100 (全面的な障害) までの整数でなければなりません。ただし、検証ステータスは、特殊な値として 201 をとることがあります。この場合、アプリケーションは、Failover_enabled が FALSE に設定されている場合を除き、直ちにフェイルオーバーされます。GDS プローブアルゴリズム (scds_fm_action(3HA) のマニュアルページを参照) は、この probe ステータスを使って、アプリケーションをローカルに再起動するか別のノードにフェイルオーバーするかを決定します。終了ステータス 201 なら、アプリケーションは直ちにフェイルオーバーされます。
検証コマンドを省略するると、GDS はそれ自身の簡単な検証を行います。つまり、Network_resources_used プロパティや scds_get_netaddr_list の出力から得られる一連の IP アドレスを使ってアプリケーションに接続します (scds_get_netaddr_list(3HA) のマニュアルページを参照)。この検証では、接続に成功すると、接続を直ちに切り離します。接続と切り離しが両方とも正常なら、アプリケーションは正常に動作しているものとみなされます。
GDS 提供の検証は、全機能を備えたアプリケーション固有の検証を代替するものではありません。
このプロパティでは、起動コマンドの起動タイムアウトを指定します。詳細は、「Start_command 拡張プロパティ」を参照してください。Start_timeout のデフォルトは 300 秒です。
このプロパティでは、停止コマンドの停止タイムアウトを指定します。詳細は、「Stop_command プロパティ」を参照してください。Stop_timeout のデフォルトは 300 秒です。
このプロパティでは、検証コマンドのタイムアウト値を指定します。詳細は、「Probe_command プロパティ」を参照してください。Probe_timeout のデフォルトは 30 秒です。
標準的な Sun Cluster 管理コマンドを使用する場合は、このオプションを使用できます。SunPlex Agent Builder を使用する場合は、このオプションを使用できません。
このプロパティを使用すれば、Process Monitor Facility (PMF) を通して監視するプロセスを制御できます。このプロパティは、フォークされた子プロセスをどのようなレベルで監視するかを表します。このプロパティは、pmfadm コマンドの -C 引数と同等の働きをします。詳細は、pmfadm(1M) のマニュアルページを参照してください。
このプロパティを省略するか、このプロパティにデフォルト値の -1 を指定することは、pmfadm コマンドで --C オプションを省略するのと同じ効果があります。つまり、すべての子プロセスとその子孫プロセスが監視されます。
ブール値のこの拡張プロパティでは、リソースのフェイルオーバー動作を制御します。この拡張プロパティに true を設定すると、アプリケーションは、再起動回数が retry_interval 秒間に retry_count を超えるとフェイルオーバーされます。
このプロパティに false を設定すると、再起動回数が retry_interval 秒間に retry_count を超えてもアプリケーションの再起動やフェイルオーバーは行なわれません。
このプロパティにより、アプリケーションリソースによるリソースグループのフェイルオーバーを防ぐことができます。このプロパティのデフォルトの値は true です。
GDS は、整数値のこの拡張プロパティを使って、PMF によるアプリケーションの停止に使用するシグナルを判別します。指定可能な整数値については、signal(3HEAD) のマニュアルページを参照してください。デフォルト値は 15 (SIGTERM) です。
このプロパティでは、GDS でロギングする診断メッセージのレベル (タイプ) を指定します。このプロパティには、 NONE、INFO、または ERR を指定できます。NONE を指定すると、診断メッセージはロギングされません。INFO を指定すると、情報メッセージだけがロギングされます。ERR を指定すると、エラーメッセージだけがロギングされます。デフォルトでは、診断メッセージはロギングされません (NONE)。