LifeKeeper のエラー検出と通知は、イベント警報メカニズム sendevent をベースにしています。 sendevent メカニズムの重要な概念は、独立したアプリケーションが重要なコンポーネントについて警報を受信できるように登録できることです。警報を開始する側のコンポーネントと受信する側のアプリケーションのいずれも、他のアプリケーションの存在を知るように変更する必要はありません。アプリケーションに固有のエラーが、 sendevent 機能経由で LifeKeeper のリカバリメカニズムをトリガできます。
このセクションでは、警報クラス、警報の処理、および警報ディレクトリのレイアウトを含む警報に関連するトピックを説明し、次に警報の概念を示す処理シナリオを示します。
警報クラス
/opt/LifeKeeper/events ディレクトリには、アラームクラスのセットがリストされます。これらのクラスは、イベントを生成するシステムの特定サブコンポーネントに対応します (例: filesys )。各警報クラスのサブディレクトリには、可能性のある警報のセットがあります (例: badmount 、 diskfull )。shell スクリプトまたはプログラムを適切なディレクトリに入れることで、これらの警報を受信するようにアプリケーションを登録できます。
LifeKeeper は基本的な警報通知機能を使用しています。この警報機能により、イベントについて登録されたすべてのアプリケーションで、該当する警報の発生時に sendevent により処理プログラムが非同期で実行されます。LifeKeeper が存在する場合、 sendevent プロセスははじめに、LifeKeeper のリソースオブジェクトがクラスとイベントを処理できるかどうかを判断します。LifeKeeper がクラス/イベントの一致を検出した場合、適切な復旧シナリオが実行されます。
sendevent 警報機能の追加スクリプトを定義することは任意です。LifeKeeper リソースを定義すると、LifeKeeper が基本的な警報機能を提供します。その詳細は、この章の処理シナリオで後述します。
注記: リソースインスタンスのローカルリカバリは、LifeKeeper の制御下にあるアプリケーションが、中断されたリソースサービスを、イベントが発生したシステムのエンドユーザに返そうとする試行です。サーバ間リカバリでは、アプリケーションはバックアップシステムに移行できます。この種のリカバリは、ローカルリカバリが失敗したか、ローカルリカバリが不可能である場合に試行されます。
警報の処理
LifeKeeper の注意が必要な可能性のあるイベントを検出するアプリケーションまたはプロセスは、 sendevent プログラムを実行し、各エラークラス、エラー名、および障害のあるインスタンスの引数を渡すことにより、イベントを報告できます。必須の詳細、オプションのパラメータ、および構文については、sendevent (5) のマニュアルページを参照してください。
警報ディレクトリのレイアウト
/opt/LifeKeeper/events ディレクトリには、2 種類の内容があります。
- LifeKeeper の指定クラス 。LifeKeeper は、 events ディレクトリの下に lifekeeper と filesys の 2 つの警報クラスを用意しています。警報イベントの例としては、 diskfull などがあります。警報クラスは、 sendevent コマンドの -C オプションで渡される文字列に対応し、警報イベントは -E オプションで渡される文字列に対応します。Lifekeeper の警報クラスは、LifeKeeper のサブシステム内のイベント報告用に内部的に使用されます。
- LifeKeeper の指定クラス 。LifeKeeper は、 events ディレクトリの下に lifekeeper と filesys の 2 つの警報クラスを用意しています。警報イベントの例としては、 diskfull などがあります。警報クラスは、 sendevent コマンドの -C オプションで渡される文字列に対応し、警報イベントは -E オプションで渡される文字列に対応します。Lifekeeper の警報クラスは、LifeKeeper のサブシステム内のイベント報告用に内部的に使用されます。
- アプリケーションに固有のクラス 。特定のアプリケーションで警報クラスの定義が必要な場合、 events ディレクトリに他のサブディレクトリが追加されます。アプリケーションは shell スクリプトまたはバイナリプログラムをそのサブディレクトリに入れることで、これらの警報を受信するように登録します。これらのプログラムの名前は、属するアプリケーションパッケージの名前に由来します。
- アプリケーションに固有のクラス 。特定のアプリケーションで警報クラスの定義が必要な場合、 events ディレクトリに他のサブディレクトリが追加されます。アプリケーションは shell スクリプトまたはバイナリプログラムをそのサブディレクトリに入れることで、これらの警報を受信するように登録します。これらのプログラムの名前は、属するアプリケーションパッケージの名前に由来します。
このトピックへフィードバック