Linux-HA Logo

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]

独自のOCFリソースエージェントを書く

/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リソースエージェントには、以下のアクションが要求されます。

注記: OCF仕様には、終了コードアクションが返さなければならない内容について、厳密な定義があります。当プロジェクトもこの仕様に従っていますので、間違った終了コードで終了した場合には、 Heartbeat[5]を快適と感じられないことがあるかもしれません。とりわけ、Heartbeat[5]としては、完全に停止したリソースと、何らかの間違った、不確定な状態にあるリソースを識別する必要があります。

OCFリソースエージェントは、以下のアクションをサポートする必要があります。

クローン[6]およびマルチ・ステート[7]・リソースに対して使われるエージェントには、追加要件(OCF仕様の一部ではない)が課せられます。

SOCF仕様に指定されている一部のアクションは、現時点でHeartbeat[5]には使われていません。

パラメータ

より多くのアクションに対応する以外にも、独自のOCFリソースエージェントには、リソースのうち、どのインスタントのコントロールを求められているのかを告げるパラメータや、何をすべきか、正確にはそれがどのように行われるべきなのかを告げるのに必要な、単純な設定パラメータを持つことが認められています。

これらについては、特殊なプレフィックスOCF_RESKEY_を伴って、環境変数としてスクリプトに渡されます。そのため、いわゆるipのようなパラメータが必要な場合はスクリプトには、OCF_RESKEY_ipとして渡されます。

OCFリソースエージェントのデバッグ

OCFリソースエージェント[2]を実装する際に起こりうる問題には以下のものが挙げられます。

関連情報

リソースエージェント[2]


References

[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/