
OCF仕様は、基本的にLSBリソースエージェント[1]の定義を拡張したものです。
OCFリソースエージェントとは、/usr/lib/ocf/resource.d/{provider} に用意されているものです。
OCF仕様(リソースエージェント[2]関連)については、以下をご参照ください。
http://www.opencf.org/cgi-bin/viewcvs.cgi/specs/ra/resource-agent-api.txt?rev=HEAD[3]
/usr/lib/ocf/resource.d/heartbeatに用意されているものはすべて、バージョン2.0.0でサポートされており、Heartbeatパッケージの一環として提供されています。独自のエージェントを作成する場合には、/usr/lib/ocf/resource.d/の下に新しいディレクトリを作成し、provider={your subdirectory name} を使用することをお勧めします。そこで、例えば自分のプロバイダ名をdubrouskiとして、sergeという名前のリソースを作成したい場合、/usr/lib/ocf/resource.d/dubrouskiというディレクトリを作成し、リソーススクリプトを /usr/lib/ocf/resource.d/dubrouski/sergeと命名します。
便宜上、リターンコード、デフォルト、その他のOCFユーティリティ機能の多くは、カスタムOCFエージェントによって追加できるよう、 /usr/lib/heartbeat/ocf-shellfuncsに用意されています。
注意:: Linux-HAインプレメンテーションは、OCF仕様を多少拡張したものですが、そうした変更内容もすべてOCF仕様と互換性を保っています。独自のリソースエージェント[2]を書く/テストしていただければ、OCFテスタースクリプトが非常に有用であることがお分かりいただけるでしょう。これについては、下記URLのcvsに用意されています。
http://hg.linux-ha.org/heartbeat/raw-file/tip/tools/ocf-tester[4]
通常のOCFリソースエージェントには、以下のアクションが要求されます。
start - リソースを開始します。リソースが正しく実行されている(サービスを提供している)場合、およびその他失敗して7になる場合以外は0で終了
stop - リソースを停止します。リソースが正しく停止した場合、およびその他失敗して7になる場合以外は0で終了
monitor - リソースの健全性を監視します。リソースが実行中である場合は0で終了、停止している場合、およびその他失敗した場合は7
meta-data - 当該リソースに関する情報をXMLの断片(snippet)として提供します。0で終了
注記: OCF仕様には、終了コードアクションが返さなければならない内容について、厳密な定義があります。当プロジェクトもこの仕様に従っていますので、間違った終了コードで終了した場合には、 Heartbeat[5]を快適と感じられないことがあるかもしれません。とりわけ、Heartbeat[5]としては、完全に停止したリソースと、何らかの間違った、不確定な状態にあるリソースを識別する必要があります。
OCFリソースエージェントは、以下のアクションをサポートする必要があります。
validate-all - 当該環境において与えられている一連の設定パラメータを確認します。パラメータが有効である場合は0で終了、無効の場合は2、リソースが設定されていない場合は6。
クローン[6]およびマルチ・ステート[7]・リソースに対して使われるエージェントには、追加要件(OCF仕様の一部ではない)が課せられます。
promote - リソースのローカルインスタンスをマスター/プライマリステートに昇格します。0で終了すること。
demote - リソースのローカルインスタンスをスレーブ/セカンダリステートに降格します。0で終了すること。
notify - Heartbeat[5]がエージェントに対して、プレおよびポスト 通知イベントを送るために使用するもので、リソースに何が起こっているのか、あるいは何が起こったところなのかを知らせます。0で終了しなければなりません。
SOCF仕様に指定されている一部のアクションは、現時点でHeartbeat[5]には使われていません。
reload - サービスを中断せずに、リソースインスタンスの設定をリロードします。
recover - startアクションの変種で、ローカルでリソースの修復を試みます。
より多くのアクションに対応する以外にも、独自のOCFリソースエージェントには、リソースのうち、どのインスタントのコントロールを求められているのかを告げるパラメータや、何をすべきか、正確にはそれがどのように行われるべきなのかを告げるのに必要な、単純な設定パラメータを持つことが認められています。
これらについては、特殊なプレフィックスOCF_RESKEY_を伴って、環境変数としてスクリプトに渡されます。そのため、いわゆるipのようなパラメータが必要な場合はスクリプトには、OCF_RESKEY_ipとして渡されます。
OCFリソースエージェント[2]を実装する際に起こりうる問題には以下のものが挙げられます。
リソースエージェント[2]
| [1] | http://www.linux-ha.org/ja/LSBResourceAgent_ja |
| [2] | http://www.linux-ha.org/ja/ResourceAgent_ja |
| [3] | http://www.opencf.org/cgi-bin/viewcvs.cgi/specs/ra/resource-agent-api.txt?rev=HEAD |
| [4] | http://hg.linux-ha.org/heartbeat/raw-file/tip/tools/ocf-tester |
| [5] | http://www.linux-ha.org/ja/Heartbeat_ja |
| [6] | http://www.linux-ha.org/ja/v2/Concepts/Clones_ja |
| [7] | http://www.linux-ha.org/ja/v2/Concepts/MultiState_ja |
This information provided courtesy of the Linux-HA project at http://linux-ha.org/