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

第 6 章 Data Service Development Library

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

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

DSDL の概要

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

構成プロパティーの管理

すべてのコールバックメソッドは構成プロパティーにアクセスする必要があります。

DSDL は、次の手段により、プロパティーへのアクセスをサポートします。

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


注 –

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


DSDL は、リソース、リソースタイプ、リソースグループのプロパティー、および、よく使用される拡張プロパティーを取得するための関数セットを提供します。

これらの関数は、次のような規則を使用して、プロパティーへのアクセスを標準化しています。

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

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

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

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

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

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

障害モニターの実装

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

次に、DSDL 障害モニターのロジックの概要を示します。

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

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

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

TCP ベースの障害監視の例については、xfnts_validate メソッド」を参照してください。

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

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

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

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

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

高可用性ローカルファイルシステムの有効化

HAStoragePlus リソースタイプを使用すると、ローカルファイルシステムを SunCluster 環境内で高可用性にすることができます。


注 –

ローカルファイルシステムには、UNIX File System (UFS)、Quick File System (QFS)、Veritas File System (VxFS)、Solaris ZFS (Zettabyte File System) などがあります。


このためには、ローカルファイルシステムのパーティションをグローバルディスクグループ内に配置しなければなりません。また、アフィニティースイッチオーバーを有効にし、Sun Cluster 環境をフェイルオーバー用に構成する必要もあります。この設定によって、クラスタ管理者は、多重ホストディスクに直接接続された任意のホストから、多重ホストディスク上の任意のファイルシステムにアクセスできるようになります。I/O に負荷が集中する、一部のデータサービスに対しては、高可用性ローカルファイルシステムを使用します。HAStoragePlus リソースタイプの構成については、『Sun Cluster データサービスの計画と管理 (Solaris OS 版)』「高可用性ローカルファイルシステムの有効化」を参照してください。