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:
2018-09-21 09:20:58

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. あらかじめインストール対象のノードに Heartbeat 2.1.4 をインストールしてください。

  2. ダウンロードした stonith-wrapper をインストール対象のノードの適当なディレクトリに転送してください。

    • 以下、/tmp に転送されたものとして説明します。
  3. root ユーザでインストール対象のノードにログインし、インストール先のディレクトリに移動してください。


    • 32bit 環境の場合
    # cd /usr/lib/stonith/plugins/external
    

    • 64bit 環境の場合

    # cd /usr/lib64/stonith/plugins/external
    
  4. インストール先のノードに転送された stonith-wrapper をインストール先ディレクトリにコピーしてください。
    # cp /tmp/stonith-wrapper .
    
  5. インストール先ディレクトリの stonith-wrapper の所有者と権限を設定してください。
    # chown root:root stonith-wrapper
    # chmod 755 stonith-wrapper
    

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 が適用されています。

リリース情報

  • Ver 1.00 (2009.02.18)
    • 初版公開

関連情報