現象:
ActiveノードでIPリソースを保持したままカーネルのパニックやハングアップが発生した場合にStandbyノードでIPリソースを起動できずフェイルオーバが失敗してしまう場合があります。
原因:
カーネルのパニックやハングアップが発生するとハートビートの切断が発生します。
次に、Standbyノードでハートビート切断を検出するとサービスの起動を行ないます。
その際、Activeノードで仮想IPが動作したままであるとStandbyノードで仮想IPが起動できず、フェイルオーバが失敗してしまいます。仮想IPを動作したままでカーネルがパニックやハングアップすることはほとんどありませんが、古いカーネルで発生する報告が多くあります。
対象バージョン:
ALL
修正バージョン:
なし
解決方法:
カーネルアップデート
この問題はクラスタソフトウェアだけでは救えない問題です。この問題の解決のアプローチとしてLifeKeeperで対応している最新のカーネルにアップデートを推奨します。
サービスを維持しやすくするためのチューニング
全てのファイルシステムリソースをIPリソースの子に依存関係を設定する。
IPリソースとファイルシステムリソースが並列である場合、どちらが先に実行されるかが決まりません。上記のように設定することで確実にSCSIリザベーションが先に発行され相手ノードをリブートしやすくします。先にIPが起動してしまうとネットワーク上に同じIPが 2つ存在できないためフェイルオーバの失敗を招きやすくなります。
電源スイッチを使用する
この現象を完全に取り除く方法として電源スイッチを使用したソリューションがあります。Failover を開始する前に Standby 側から Active 側の電源を切断することで確実に Active 側をダウンさせ、Standby 側でサービスの起動を可能にします。ただし、導入には STONITH device に対応したパワースイッチを用意する必要があります。
LifeKeeper には STONITH device に対応した Pre-Failover 用のサンプルスクリプトが用意されています。このスクリプトは STONITH device をコントロールするものです。STONITH device はホストコンピュータからシリアルやイーサネット経由で電源を管理することができるパワースイッチです。
stonith.pdf 31.59 KB Download |
掲載日: 2005年1月25日
<改定履歴>
[2010年10月21日 改定]