Linux-HA Logo

Heartbeatリソースエージェント

クラシックなHeartbeat[1] リソース[2]エージェント(スクリプト)は、基本的にはLSB[3] initスクリプトで、ステータスオペレーションが若干変わったものです。リソーススクリプトに関して、Heartbeat[4]が実行するのは、以下のオペレーションだけです。

以下、これらのオペレーションについてご説明いたします。

start オペレーション

所定のリソース[2]をアクティブにします。

LSB[3]では、すでにアクティブになっているリソースをスタートすることは、決してエラーではありません。成功時は0で、失敗時は0以外で終了(Exit)します。Heartbeatは、カレントマシン上で実行したい場合で、ステータスが当該リソースをすでに実行中でないことを示す場合にしか、リソースをスタートしません。Heartbeatが、クラスタ内の異なるノードにおいて、同じリソースを同時にスタートすることは決してありません。

stop オペレーション

Deactivate the given resource.

所定のリソースをアクティブではない状態にします。 リソースが実行中でないことを確認したい場合に実行します。リソースをストップする前に実行中かどうか確認する場合もありますが、シャットダウン中はいずれにせよ、全てのリソースをストップします。

LSB[3]では、すでにストップしているリソースをストップすることは常に許容されています。Heartbeat[4]は、実行中という認識のないリソースは確実にストップします。ストップに失敗した場合には、エラーの処理に、結果的にマシンを再ブートすることになりかねません。一部のRed HatスクリプトはLSBに準拠しておらず、実行中ではないリソースをストップしようとすると、クレームが付けられますので注意してください。

status オペレーション

所定のリソースの実行状態を判断します。

statusオペレーションは、ステータス(状態)を正確にレポートするだけでなく、当該リソースがアクティブになっている場合には、OK または running(実行中)のいずれかをプリントしなければならません。また、アクティブになっていない場合には、どちらもプリントすることができませんstatusオペレーションにおいては、リターンコードは無視します。

多少不可解な印象がありますが、適切なステータス終了コードについては確実に与えなかったにもかかわらず、OKまたはrunningについては確実にプリントしたという、初期のLinuxとの互換性に関する伝説的なハングオーバーがあるためです。

Heartbeatは、さまざまな場所でstatusオペレーションをコールします。リソースをスタートする前にも行いますし、リソースを解放する(IIRC)ときにも行います。

stopに繰り返し失敗すると、当該リソースについてstatusオペレーションを実行します。当該リソースがなお実行中であるというレポートがあると、確実にストップしていることを確認するため、マシンを再ブートします。

同時実行性

Startstopstatus オペレーションは、任意のマシン上の、任意のリソースにおいては、オーバーラップすることは決してありません。あるリソースにおけるオペレーションの同時実行については、心配はありません。

パラメータ

LSBリソースエージェント[5]とは異なり、Heartbeatリソースエージェント[6]には、位置的パラメータのリストを引き渡すことができます。パラメータは以下のように、オペレーション名のにきます。

IPaddr 10.10.10.1 start

このパラメータセットに対応するharesources[7]ラインは次のようになり、

IPaddr::10.10.10.1

startオペレーションで呼び出されます。

ロケーション

Heartbeat[1]/etc/ha.d/resource.d および/etc/init.dresource[8]スクリプトを探します。

関連情報

ResourceAgent[9]Heartbeatプログラム[4]haresources[7]LSBリソースエージェント[5]OCFリソースエージェント[10]


References

[1]http://www.linux-ha.org/ja/Heartbeat_ja
[2]http://www.linux-ha.org/ja/resource_ja
[3]http://www.linux-ha.org/ja/LSB_ja
[4]http://www.linux-ha.org/ja/HeartbeatProgram_ja
[5]http://www.linux-ha.org/ja/LSBResourceAgent_ja
[6]http://www.linux-ha.org/ja/HeartbeatResourceAgent_ja
[7]http://www.linux-ha.org/ja/haresources_ja
[8]http://www.linux-ha.org/ja_resource
[9]http://www.linux-ha.org/ja/ResourceAgent_ja
[10]http://www.linux-ha.org/ja/OCFResourceAgent_ja


This information provided courtesy of the Linux-HA project at http://linux-ha.org/