This site best when viewed with a modern standards-compliant browser. We recommend Firefox Get Firefox!.

Linux-HA project logo
Providing Open Source High-Availability Software for Linux and other OSes since 1999.

USA Flag UK Flag

Japanese Flag

ホームページ

サイトについて

コンタクト情報

使用条件

協力方法

セキュリティ

This web page is no longer maintained. Information presented here exists only to avoid breaking historical links.
The Project stays maintained, and lives on: see the Linux-HA Reference Documentation.
To get rid of this notice, you may want to browse the old wiki instead.

2010.1.28
追加パッケージ集リニューアル
追加パッケージ集は、こちらから

2008.8.28
RHEL用rpm更新
更新情報はこちらから

2008.8.18
Heartbeat 2.1.4
リリース!
Downloadはこちらから

2007.11.13
Linux-ha-japan日本語ML移植しました

2007.10.5
日本語サイトOPEN
日本語MLも開設しました

2007.10.5
OSC2007 Tokyo/Fall で Heartbeat紹介
発表資料を公開しました

Last site update:
2017-12-13 11:48:09

背景

LSBリソースエージェントは、/etc/init.dに用意されているものです。一般的には、OS/ディストリビューションによって提供され、Heartbeatのバージョン2と併せて使用するには、LSB仕様に合致していなければなりません。

LSB 仕様(initスクリプト関連)については、以下をご参照ください。http://www.linuxbase.org/spec/refspecs/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html

多くのディストリビューションがLSB準拠を唱えていますが、ブロークンなinitスクリプトを使っています。よくある問題には以下のものが挙げられます。

  • Statusオペレーションをまったく実装していない。
  • Start/stop/statusアクションに関して正しい終了(Exit)ステータスコードを守っていない。
  • 開始済みのリソースをstartするとエラーを返す(これはLSB仕様の違反になる)。
  • 停止済みのリソースをstopするとエラーを返す(これはLSB仕様の違反になる)。

注記: パラメータとオプションは、LSBリソースエージェントに渡すことはできません

Init スクリプト (LSB) 互換性チェック

some_serviceが正しく設定がされていて、現時点ではアクティブになっていないと仮定します。以下のシーケンスは、LSBと互換性があるかどうかの判断に役立ちます。

  1. Start (ストップ済み)
    • /etc/init.d/some_service start ; echo "result: $?"

    • サービスは開始しましたか?
    • コマンドは(標準出力以外に)、result: 0をプリントしましたか?

  2. Status (実行中)
    • /etc/init.d/some_service status ; echo "result: $?"

    • スクリプトはコマンドを受け付けましたか?
    • スクリプトはサービスが実行中であることを示しましたか?
    • コマンドは(標準出力以外に)、result: 0をプリントしましたか?

  3. Start (実行中)
    • /etc/init.d/some_service start ; echo "result: $?"

    • サービスはまだ実行中ですか?
    • コマンドは(標準出力以外に)、result: 0をプリントしましたか?

  4. Stop (実行中)
    • /etc/init.d/some_service stop ; echo "result: $?"

    • サービスは停止しましたか?
    • コマンドは(標準出力以外に)、result: 0をプリントしましたか?

  5. Status (ストップ済み)
    • /etc/init.d/some_service status ; echo "result: $?"

    • スクリプトはコマンドを受け付けましたか?
    • スクリプトはサービスが実行中ではないことを示しましたか?

    • コマンドは(標準出力以外に)、result: 3をプリントしましたか?

  6. Stop (ストップ済み)
    • /etc/init.d/some_service stop ; echo "result: $?"

    • サービスはまだ停止したままですか?
    • コマンドは(標準出力以外に)、result: 0をプリントしましたか?

  7. Status (失敗)
    • このステップは簡単にテストできるものではなく、手作業によるスクリプトの点検を行わなければなりません。
      スクリプトにはオプションで、アクティブにはなっていながら失敗したことを示すために、LSB仕様に掲げられている、その他のコードを1つ使うことができます。その場合、Heartbeatには、リソースを別のノードに移す前に、まず既存のノードでストップすべきであることを告げます。こうした追加の終了コードを利用することをお勧めします。

上記の質問のいずれかに対する答えが「いいえ」である場合、そのinitスクリプトはLSBには従っていません。

Heartbeat のバージョン2をお使いで、crm yesを指定している場合、この時点での選択肢は以下のとおりです。

  1. 当該initスクリプトを修正する
  2. 既存のinitスクリプトに基づいて、OCFリソースエージェント を書く

Heartbeat のバージョン 1をお使いで、crm yesを指定していない場合には、Heartbeatリソースエージェントに関するルールに従っている限り、当該スクリプトは機能する可能性があります。

関連情報

リソースエージェント