STONITH (Shoot the Other Node in the Head) は、クラスタ内のノードの電源をリモートから切断するフェンシング方式です。LifeKeeper の STONITH 機能は、外部電源スイッチコントロール、IPMI 対応マザーボード、およびハイパーバイザーが提供する電源機能を利用してクラスタ内の他のノードの電源を切断します。
STONITH で IPMI を使用する
IPMI (Intelligent Platform Management Interface) は、コンピュータシステムにアクセスする共通インターフェースのセットを提供します。IPMI を使用すると、システムの状態を監視してシステムを管理できます。IPMI を STONITH で使用すると、故障と思われるクラスタノードの電源スイッチをクラスタソフトウェアが制御することにより、シリアル接続またはネットワーク接続を介してノードの電源切断やリブートができるため、故障ノードが共有データにアクセスしたりデータを破損するのを確実に防ぎます。
パッケージの要件
- IPMI ツールのパッケージ (ipmitool-1.8.11-6.el6.x86_64.rpm など)
VMware vSphere 環境での STONITH
vCLI (vSphere Command-Line Interface) は、ESXi ホストと仮想マシンを含む仮想インフラストラクチャを管理するための VMware でサポートされているコマンドラインインターフェースです。vCLI コマンドがお使いの環境のニーズに合致する場合は、VMware の仮想マシン間での LifeKeeper STONITH の実装に適用することができます。
パッケージの要件
STONITH サーバ
- VMware vSphere SDK パッケージまたは VMware vSphere CLI (vSphere CLI は、vSphere SDK と同じインストールパッケージに含まれています)
- VMware vSphere SDK パッケージまたは VMware vSphere CLI (vSphere CLI は、vSphere SDK と同じインストールパッケージに含まれています)
監視対象仮想マシン
- VMware Tools
- VMware Tools
AWS 環境での STONITH
AWS 上での STONITH については、こちら を参照ください。
インストールと設定
LifeKeeper をインストールし、クラスタ内の各ノードでコミュニケーションパスを設定した後、STONITH をインストールおよび設定します。
- 次のコマンドを実行して LifeKeeper STONITH スクリプトをインストールします。
/opt/LifeKeeper/samples/STONITH/stonith-install
- (*IPMI を利用する場合のみ) BIOS または ipmitool コマンドを使用して、以下の BMC (Baseboard Management Controller) 変数を設定します。
- 静的 IP アドレスの使用
- IP アドレス
- サブネットマスク
- ユーザ名
- パスワード
- ユーザに管理者権限を追加
- ユーザのネットワークアクセスを有効化
ipmitool コマンドの使用例を示します。
(詳細については、 ipmitool のマニュアルページを参照してください。)
# ipmitool lan set 1 ipsrc static # ipmitool lan set 1 ipaddr 192.168.0.1 # ipmitool lan set 1 netmask 255.0.0.0 # ipmitool user set name 1 root # ipmitool user set password 1 secret # ipmitool user priv 1 4 # ipmitool user enable 1 |
- 設定ファイルを編集します。
設定ファイルを編集し、STONITH を有効にして電源を切断するコマンドラインを追加します。 注記: フェンシングループ (2 台のマシン間で、通信は喪失しているもののお互いをまだ STONITH できる場合に、お互いに電源オフとリブートをし続ける状態) を回避するため、リブートではなく電源オフを推奨します。
/opt/LifeKeeper/config/stonith.conf
# LifeKeeper STONITH configuration # # Each system in the cluster is listed below. To enable STONITH for a # given system, # remove the ‘#’ on that line and insert the STONITH command line to power off # that system.
|
<vm_id>
vSphere CLI コマンドは、vSphere SDK for Perl の上で実行されます。<vm_id > は、VM の識別子として使用されています。この変数によって、設定対象の VM 用の設定ファイルを指定します。
設定ファイルのパスを調べるには、以下の手順を実行してください。
次のコマンドを実行します。
vmware-cmd -H <vmware host> -l
- 上記のコマンドによって VMware ホストのリストが表示されます。
vmware-cmd -l の出力例を以下に示します (3 台の VM を表示)。
/vmfs/volumes/4e08c1b9-d741c09c-1d3e-0019b9cb28be/lampserver/lampserver.vmx
/vmfs/volumes/4e1e1386-0b862fae-a859-0019b9cb28bc/oracle10/oracle.vmx
/vmfs/volumes/4e08c1b9-d741c09c-1d3e-0019b9cb28be/lampserver02/lampserver02.vmx
出力されたリストで設定中の VM を見つけます。
- パス名を <vm_id> 変数にペーストします。上記の例では以下の通りになります。
vmware-cmd -H 10.0.0.1 -U root -P secret /vmfs/volumes/4e08c1b9-d741c09c-1d3e-0019b9cb28be/lampserver/lampserver.vmx stop hard
注記: VMware コマンドの詳細については、引数なしで vmware-cmd を実行するとすべてのオプションに関するヘルプページが表示されます。
期待される動作
LifeKeeper がノードとの通信障害を検出すると、そのノードの電源が切断され、フェイルオーバが発生します。問題を修復した後に、手動でそのノードの電源を入れる必要があります。
このトピックへフィードバック