Recent Changes

2011-05-06
2011-02-22
2011-02-18
2011-02-16
2011-02-15

Latest File Release

[1-01] Pacemakerリポジトリパッケージ (RHEL7) (1.1.21-1.1)2019-10-02 13:00
[1-02] Pacemakerリポジトリパッケージ (RHEL6) (1.1.21-1.1)2019-10-02 13:00
[1-03] Pacemakerリポジトリパッケージ (RHEL5) (1.0.13-2.1)2014-08-13 09:28
[1-10] pm_ctl : 運用管理連携機能 (1.0-1)2012-11-05 11:20
[1-11] pm_logconv-cs : ログメッセージ制御機能(Corosync対応) (1.0-1)2012-11-12 09:53
[2-01] Heartbeat (RedHat/CentOS用rpmパッケージ) (2.1.4-1)2008-08-28 09:53
[2-02] hb-monitor:クラスタ状態表示機能 (1.03-1)2011-02-16 07:21
[2-03] hb-extras:拡張リソースエージェント・プラグイン (1.02-1)2011-02-16 07:21
[2-04] hb-logconv:ログメッセージ制御機能 (1.02-1)2011-02-16 07:21
[2-05] hb-cibgen:cib.xml編集ツール (1.03-1_1)2009-11-16 13:31
[2-06] hb-diskd:ディスク監視デーモン (1.10-1)2010-01-22 10:20
[2-07] VIPcheck:VIPcheckリソースエージェント (1.1)2009-11-30 07:21
[2-08] hb-sfex:共有ディスク排他制御 (1.30-1)2010-01-22 10:00
[2-09] hb-logmoni:ロギングデーモン監視 (2.00-1)2010-01-22 10:10
[2-10] hb-ipv6:IPv6対応追加パッケージ (1.00-1)2010-01-29 07:21
[2-11] hb-vmmonitor:デバイス一括監視機能 (1.00-1)2010-06-11 07:21
[2-12] vm-logd-monitor:ログデーモン監視機能(Domain-0用) (1.00-1)2010-06-11 07:21
[2-13] stonith-wrapper2:STONITHラッパープラグイン2 (2.00)2010-06-18 07:21
[2-14] hb-actmonitor:フェイルオーバ抑止機能 (1.00-1)2010-11-26 07:21

Wiki Guide

Side Bar

STONITHラッパープラグイン (stonith-wrapper)

stonith-wrapper とは?

stonith-wrapper は STONITH 機能を使用した場合に発生することのある以下の問題に対処するための STONITH プラグインです。

  • ノード電源故障時のフェイルオーバ失敗
  • スプリットブレイン時のノードの相打ち

stonith-wrapper はこれらの問題を解決する処理を行った上で実際にSTONITH デバイスを操作する外部型プラグインを呼び出します。

注) stonith-wrapper 単独でノード制御を行うことはできません。他の実際にノード制御のできる外部型プラグインと併用します。使用する外部プラグインは stonith-wrapper のパラメタ real_plugin で設定します。

また、Heartbeat 2.1.4 で STONITH 機能を用いた場合、STONITH 制御に関連するプロセスが終了されないことがありますが stonith-wrapper はこの問題にも対処しています。

注) この問題は開発版では修正されています。

ノード電源故障時のフェイルオーバ失敗

Heartbeat によるクラスタのなかのあるノードが電源故障により停止した場合、このノードの異常はインターコネクト通信を介した相互監視機能により残りの正常なノードによって検出されます。

このクラスタで STONITH 機能が有効である場合、正常なノードは異常なノードがクラスタに悪影響を及ぼす可能性を断つために異常ノードを制御するための STONITH デバイスを用いてこのノードを STONITH 制御(リセットもしくは電源停止)しようとします。

しかし、RSA 等の電源を制御対象のノードと共有するタイプの STONITH デバイスではノードの電源故障が発生すると STONITH デバイスも停止します。このため、正常ノードによる STONITH 制御は失敗します。

この後、異常ノードへの STONITH 制御は成功するまで再試行されますが異常が電源故障である場合には STONITH 制御は決して成功しないためクラスタの修復活動はそこから先には進まず、異常ノードでリソースが動作していた場合にはこれらのリソースは他のノードにフェイルオーバされません。

このような場合、stonith-wrapper では STONITH の制御対象ノードに割り当てられたクラスタ内の他のノードから ping 疎通可能な全ての IP アドレスの状態を検査し、検査対象の IP アドレスが全て消失している場合には STONITH 制御が成功したとみなしてクラスタの修復活動を進展させるため、リソースはフェイルオーバします。

stonith-wrapper が制御対象ノードの状態を調べるための IP アドレスは"nodeip" を名前のプレフィクスとする stonith-wrapper のパラメタに設定します。

スプリットブレイン時のノードの相打ち

STONITH 機能を用いているクラスタでスプリットブレインが発生した場合、分断されたノードは互いに相手を異常状態にあるものとみなすため双方から STONITH 制御が行われます。 タイミングによってはそれぞれの STONITH 制御が全て成功しクラスタの全ノードがリセットあるいは電源停止されている状態になる場合があります。

stonith-wrapper ではこのような状態に陥ることを避けるために SFEXを用いて stonith-wrapper が動作しているノードが共有ディスクの制御パーティションを保持しているかどうか調べ、保持していない場合には待機状態となることによりSTONITH 制御の相打ちを抑止します。

待機状態を続ける時間は stonith-wrapper のパラメタ sby_wait によって設定されます。設定された時間が経過しても待機している側のノードが STONITH 制御されない場合、そのノードは共有ディスクの制御パーティションを保持しているノードを STONITH 制御します。

動作条件

stonith-wrapper は次の条件を満たすクラスタで使用可能です。

  • Heartbeat 2.1.4 によりクラスタ化されていること。
  • クラスタ構成が 2 ノード ACT/SBY であること。
  • stonith-wrapper 以外の Heartbeat の外部型 STONITH プラグインにより各ノードを STONITH 制御可能なこと。
  • SFEX がインストールされており、使用可能であること。
  • 各ノードに他のノードから ping 疎通可能な IP アドレスが割り当てられていること。

stonith-wrapper は「Red Hat Enterprise Linux 5.2(X86_64)」と SFEX Ver1.3, 実プラグインとして ibmrsa-telnet を用いて動作確認されています。

インストール

:stonith-wrapper 1.0 は、拡張リソースエージェント・プラグイン(hb-extras)に含まれるため、hb-extrasのrpmインストールを行うと、stonith-wrapper もインストールされます。

hb-extrasのインストール方法などの詳細情報

stonith-wrapper の設定

stonith-wrapper を使用するためには cib.xml で stonith-wrapper が使用するパラメタを stonith-wrapper のインスタンスを定義する primitive 要素に対する nvpair 要素を用いて指定する必要があります。

stonith-wrapper を使用するためには次の設定のために必要なパラメタを指定する必要があります。

  • stonith-wrapper 固有の設定
  • SFEX の設定
  • 実プラグインの設定

パラメタは cib.xml で stonith-wrapper が使用するパラメタを stonith-wrapper のインスタンスを定義する primitive 要素に対する nvpair 要素を用いて指定します。

nvpair 要素において name 属性にはパラメタ名を指定します。

stonith-wrapper 固有の設定

  • 実プラグイン名
    • stonith-wrapper が実際の STONITH デバイスの操作を行うために使用する外部型の STONITH プラグイン名をパラメタ real_plugin に指定します。
  • SBY待機時間
    • SBY ノードで stonith-wrapper が故障ノードを STONITH 制御のために呼び出された場合に実際に故障ノードを制御するまでに待機する秒数をパラメタ sby_wait に指定します。
  • 死活判定用IPアドレス
    • stonith-wrapper が故障ノードを STONITH 制御する際に故障ノードの死活判定のために使用する制御対象に割り当てられている IP アドレスを nodeip をプレフィクスとするパラメタに指定します。死活判定用IPアドレスは複数指定することができます。STONITH 制御を行うノードは制御対象のノードの全ての死活判定用IPアドレスに対して ping 疎通可能でなければなりません。
  • 起動/監視/制御タイムアウト
    • stonith-wrapper が実行を要求された操作を打ち切り、関連プロセスを全て終了させるまでのタイムアウト秒数をパラメタ start_timeout/status_timeout/control_timeout に指定します。これらの属性の値は op 要素等に設定された各操作のタイムアウトの秒数より短く設定する必要があります。

SFEXの設定

  • SFEX の排他制御パーティション名
    • SFEX が共有ディスクの排他制御に用いているパーティション名をパラメタ device に指定します。
  • SFEX の排他制御パーティションにおける領域番号
    • SFEX が共有ディスクの排他制御に用いているパーティションで使用している領域の番号をパラメタ index で指定します。

実プラグインの設定

stonith-wrapper が用いる実プラグインのための設定を行います。 実プラグインが primitive 要素によるインスタンスとして設定される場合に対応する nvpair 要素により設定されるのと同様の設定を行います。

cib.xml の例

この cib.xml の例では PostgreSQL の ACT/SBY クラスタに ibmrsa-telnet を実プラグインとする stonith-wrapper が適用されています。