クラスタがノードの1つの誤動作を検出し、そのノードの削除が必要となることがあります。これをフェンシングと呼び、一般にSTONITHリソースで実行されます。
SSHが他のシステムの問題にどのように反応するのかを知る方法はありません。このため、外部SSH/STONITHエージェント(stonith:external/ssh
など)は、運用環境ではサポートされていません。テスト目的でこのようなエージェントをまだ使用する場合は、libglue-devel
パッケージをインストールしてください。
現在使用可能なすべてのSTONITHデバイス(ソフトウェア側から)のリストを入手するには、crm ra list stonith
コマンドを使用します。お気に入りのエージェントが見つからない場合は、-devel
パッケージをインストールしてください。STONITHデバイスおよびリソースエージェントの詳細については、第10章 「フェンシングとSTONITH」を参照してください。
今のところ、STONITHエージェントの作成に関するマニュアルはありません。新しいSTONITHエージェントを作成する場合は、cluster-glue
パッケージのソースに提供されている例を参照してください。
/usr/lib/ocf/resource.d/
で提供されているすべてのOCFリソースエージェントの詳細については、6.3.2項 「サポートされるリソースエージェントクラス」を参照してください。各リソースエージェントは、それを制御する次の操作をサポートしている必要があります。
start
リソースを開始または有効化します。
stop
リソースを中止または無効化します。
status
リソースのステータスを返します。
monitor
status
と同様ですが、予期しない状態もチェックします。
validate
リソースの設定を検証します。
meta-data
リソースエージェントの情報をXMLで返します。
OCF RAの作成方法の一般的な手順は、次のとおりです。
テンプレートとして、/usr/lib/ocf/resource.d/pacemaker/Dummy
ファイルをロードします。
新しいリソースエージェントごとに新しいサブディレクトリを作成して、名前が競合しないようにします。たとえばリソースグループkitchen
にリソースcoffee_machine
がある場合、このリソースを/usr/lib/ocf/resource.d/kitchen/
ディレクトリに追加します。このRAにアクセスするには、コマンドcrm
を実行します。
root #
crm
configure primitive coffee_1 ocf:coffee_machine:kitchen ...
異なるシェル関数を実装し、異なる名前でファイルを保存します。
OCFリソースエージェントの作成についての詳細は、https://github.com/ClusterLabs/resource-agents/blob/master/doc/dev-guides/ra-dev-guide.ascを参照してください。コンセプトの特別な情報については、第1章 「製品の概要」を参照してください。
OCF仕様によると、アクションが返す必要がある出口コードの厳密な定義があります。クラスタは常に、予期される結果に対する戻りコードを確認します。結果が予期された値と一致しない場合、アクションは失敗したとみなされ、回復処理が開始されます。障害回復には3種類あります。
回復の種類 |
説明 |
クラスタが行うアクション |
---|---|---|
soft |
一時的なエラーが発生しました。 |
リソースを再起動するか、新しい場所に移動させます。 |
hard |
一時的ではないエラーが発生しました。エラーは、現在のノードに固有の場合があります。 |
リソースを他の場所に移動して、現在のノードで再試行されないようにします。 |
fatal |
すべてのクラスタノードに共通の、一時的ではないエラーが発生しました。これは、不正な設定が指定されたことを示しています。 |
リソースを停止して、どのクラスタノードでも開始されないようにします。 |
アクションが失敗したと想定して、次の表では、異なるOCF戻りコードを概説します。また、エラーコードを受け取った場合にクラスタが開始する回復の種類も示しています。
OCF戻りコード |
OCFエイリアス |
説明 |
回復の種類 |
---|---|---|---|
0 |
OCF_SUCCESS |
成功。コマンドは正常に完了しました。これは、すべてのstart、stop、promote、demoteコマンドの予期された結果です。 |
soft |
1 |
OCF_ERR_GENERIC |
汎用の「問題が発生した」ことを示すエラーコード。 |
soft |
2 |
OCF_ERR_ARGS |
リソースの設定がこのマシンで有効ではありません(たとえば、ノード上に見つからない場所/ツールを参照している場合)。 |
hard |
3 |
OCF_ERR_UNIMPLEMENTED |
要求されたアクションは実行されていません。 |
hard |
4 |
OCF_ERR_PERM |
リソースエージェントに、作業を完了できるだけの権限がありません。 |
hard |
5 |
OCF_ERR_INSTALLED |
リソースが必要とするツールがこのコンピュータにインストールされていません。 |
hard |
6 |
OCF_ERR_CONFIGURED |
リソースの設定が無効です(たとえば、必要なパラメータがないなど)。 |
fatal |
7 |
OCF_NOT_RUNNING |
リソースが実行されていません。クラスタは、どのアクションについてもこれを返すリソースを停止しようとしません。
このOCF戻りコードはリソース回復を必要することも必要としないこともあります。予期されたリソースの状態に依存します。予期されない場合は、 |
N/A |
8 |
OCF_RUNNING_MASTER |
リソースはマスタモードで実行しています。 |
soft |
9 |
OCF_FAILED_MASTER |
リソースはマスタモードですが、失敗しました。リソースは降格、停止され、再度開始されます(昇格されます)。 |
soft |
その他 |
該当なし |
カスタムエラーコード。 |
soft |