
クラシックなHeartbeat[1] リソース[2]エージェント(スクリプト)は、基本的にはLSB[3] initスクリプトで、ステータスオペレーションが若干変わったものです。リソーススクリプトに関して、Heartbeat[4]が実行するのは、以下のオペレーションだけです。
以下、これらのオペレーションについてご説明いたします。
所定のリソース[2]をアクティブにします。
LSB[3]では、すでにアクティブになっているリソースをスタートすることは、決してエラーではありません。成功時は0で、失敗時は0以外で終了(Exit)します。Heartbeatは、カレントマシン上で実行したい場合で、ステータスが当該リソースをすでに実行中でないことを示す場合にしか、リソースをスタートしません。Heartbeatが、クラスタ内の異なるノードにおいて、同じリソースを同時にスタートすることは決してありません。
Deactivate the given resource.
所定のリソースをアクティブではない状態にします。 リソースが実行中でないことを確認したい場合に実行します。リソースをストップする前に実行中かどうか確認する場合もありますが、シャットダウン中はいずれにせよ、全てのリソースをストップします。
LSB[3]では、すでにストップしているリソースをストップすることは常に許容されています。Heartbeat[4]は、実行中という認識のないリソースは確実にストップします。ストップに失敗した場合には、エラーの処理に、結果的にマシンを再ブートすることになりかねません。一部のRed HatスクリプトはLSBに準拠しておらず、実行中ではないリソースをストップしようとすると、クレームが付けられますので注意してください。
所定のリソースの実行状態を判断します。
statusオペレーションは、ステータス(状態)を正確にレポートするだけでなく、当該リソースがアクティブになっている場合には、OK または running(実行中)のいずれかをプリントしなければならません。また、アクティブになっていない場合には、どちらもプリントすることができません。statusオペレーションにおいては、リターンコードは無視します。
多少不可解な印象がありますが、適切なステータス終了コードについては確実に与えなかったにもかかわらず、OKまたはrunningについては確実にプリントしたという、初期のLinuxとの互換性に関する伝説的なハングオーバーがあるためです。
Heartbeatは、さまざまな場所でstatusオペレーションをコールします。リソースをスタートする前にも行いますし、リソースを解放する(IIRC)ときにも行います。
stopに繰り返し失敗すると、当該リソースについてstatusオペレーションを実行します。当該リソースがなお実行中であるというレポートがあると、確実にストップしていることを確認するため、マシンを再ブートします。
Start、stop 、status オペレーションは、任意のマシン上の、任意のリソースにおいては、オーバーラップすることは決してありません。あるリソースにおけるオペレーションの同時実行については、心配はありません。
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.dでresource[8]スクリプトを探します。
ResourceAgent[9]、Heartbeatプログラム[4]、 haresources[7]、LSBリソースエージェント[5]、OCFリソースエージェント[10]
| [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/