Sun Cluster 3.0 12/01 データサービス開発ガイド

第 5 章 DSDL (データサービス開発ライブラリ)

この章では、DSDL (Data Service Development Library (データサービス開発ライブラリ)) を構成する API (アプリケーションプログラミングインタフェース) の概要について説明します。DSDL は libdsdev.so ライブラリとして実装されており、Sun Cluster パッケージに含まれています。

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

DSDL の概要

DSDL API は、RMAPI の最上位の階層を形成します。したがって、これは は RMAPI に置き換るものではなく、RMAPI 機能をカプセル化および拡張するためのものです。DSDL は、特定の Sun Cluster 統合問題に対する事前定義されたソリューションを提供することによって、データサービスの開発を簡素化します。その結果、アプリケーションに本来求められている高可用性とスケーラビリティの実現に、より多くの開発時間を割くことが可能になります。また、アプリケーションの起動、シャットダウン、および監視機能を Sun Cluster に統合する際に、多くの時間を費やすこともありません。

構成プロパティの管理

すべてのコールバックメソッドは構成プロパティにアクセスする必要があります。DSDL は、以下により、プロパティへのアクセスを容易にします。

scds_initialize 関数 (各コールバックメソッドの開始時に呼び出す必要がある) は、次の処理を行います。


注 -

VALIDATE メソッドの場合、scds_initialize はコマンド行で渡されたプロパティ値を解析します。そのため、VALIDATE 用の解析関数を作成する必要はありません。


また、scds_initialize 関数はロギング環境を初期化して、障害モニターの検証設定の妥当性を検査します。

DSDL は、リソース、リソースタイプ、リソースグループのプロパティ、および、よく使用される拡張プロパティを取得するための関数セットを提供します。これらの関数は、次のような規則に従って、プロパティへのアクセスを標準化しています。

データサービスの起動と停止

START メソッドは、クラスタノード上でデータサービスを起動するために必要なアクションを実行します。通常、このようなアクションには、リソースプロパティの取得、アプリケーション固有の実行可能ファイルおよび構成ファイルの格納先の特定、および適切なコマンド行引数を用いたアプリケーションの起動が含まれます。

scds_initialize 関数はリソース構成を取得します。START メソッドはプロパティ用の DSDL 関数を使用して、アプリケーションを起動するのに必要な構成ディレクトリや構成ファイルを識別するための特定のプロパティ (Confdir_list など) の値を取得します。

START メソッドは、scds_pmf_start を呼び出して、プロセス監視機能 (PMF) の制御下でアプリケーションを起動します。PMF を使用すると、プロセスに適用する監視レベルを指定したり、異常終了したプロセスを再起動したりできます。DSDL で実装する START メソッドの例については、xfnts_start メソッド」を参照してください。

STOP メソッドは呼び出し回数に依存しないように実装されていなければなりません。つまり、アプリケーションが動作していないときにノード上で呼び出された場合でも、正常終了する必要があります。STOP メソッドが失敗した場合、停止するリソースが STOP_FAILED 状態に設定され、クラスタの再起動を招いてしまう可能性があります。

リソースが STOP_FAILED 状態になるのを防止するために、STOP メソッドはあらゆる手段を構じてリソースを停止する必要があります。scds_pmf_stop 関数は、段階的にリソースを停止しようとします。まず、SIGTERM シグナルを使用してリソースを停止しようとします。これに失敗した場合は、SIGKILL シグナルを使用します。詳細については、scds_pmf_stop のマニュアルページを参照してください。

障害モニターの実装

DSDL は、事前に定義されたモデルを提供することによって、障害モニターを実装する際の煩雑さをほとんど取り除きます。リソースがノード上で起動すると、MONITOR_START メソッドは PMF の制御下で障害モニターを起動します。リソースがノード上で動作している間、障害モニターは無限ループを実行します。次に、DSDL 障害モニターのロジックの概要を示します。

ネットワークアドレス情報へのアクセス

DSDL は、リソースおよびリソースグループのネットワークアドレス情報を戻す関数を提供します。たとえば、scds_get_netaddr_list は、リソースが使用するネットワークアドレスリソースを取得して、障害モニターがアプリケーションを検証できるようにします。

また、DSDL は TCP ベースの監視を行う関数セットも提供します。通常、このような関数はサービスとの間に単純なソケット接続を確立し、サービスのデータを読み書きした後で、サービスとの接続を切断します。検証の結果を DSDL の scds_fm_action 関数に送信し、次に実行すべき処理を決定できます。

TCP ベースの障害監視の例については、svc_probe 関数」を参照してください。

実装したリソースタイプのデバッグ

DSDL は、データサービスをデバッグするときに役立つ組み込み機能を提供します。

DSDL の scds_syslog_debug() ユーティリティーは、実装したリソースタイプにデバッグ文を追加するための基本的なフレームワークを提供します。デバッグレベル (1 から 9 までの数字) は、各クラスタノード上のリソースタイプごとに動的に設定できます。ファイル /var/cluster/rgm/rt/<rtname>/loglevell は、1 から 9 までの整数だけが含まれているファイルであり、すべてのリソースタイプコールバックメソッドはこのファイルを読み取ります。DSDL の scds_initialize() ルーチンはこのファイルを読み取って、内部デバッグレベルを指定されたレベルに設定します。デフォルトのデバッグレベルは 0 であり、この場合、データサービスはデバッグメッセージを記録しません。

scds_syslog_debug() 関数は、LOG_DEBUG の優先順位において、scha_cluster_getlogfacility(3HA) 関数から戻された機能を使用します。このようなデバッグメッセージは /etc/syslog.conf で構成できます。

scds_syslog ユーティリティーを使用すると、いくつかのデバッグメッセージをリソースタイプの通常の動作 (おそらくは LOG_INFO 優先順位) における情報メッセージとして使用することができます。第 7 章「サンプル DSDL リソースタイプの実装」のサンプル DSDL アプリケーションでは、scds_syslog_debugscds_syslog 関数が多用されています。