STONITH (Shoot the Other Node in the Head) は、クラスター内のノードの電源をリモートでオフにするためのフェンシング手法です。LifeKeeper は、外部の電源スイッチ制御、IPMI 対応のマザーボード制御、ハイパーバイザーが提供する電源機能、クラウドベンダーのツールを使用して、クラスター内の他のノードの電源をオフにすることで、STONITH 機能を提供します。各 STONITH メソッドを使用すると、クラスターソフトウェアは、停止したように見えるクラスターノードの電源をオフにして、異常なノードが共有データにアクセスしたり破損したりしないようにします。
IPMI を使用した STONITH
IPMI(Intelligent Platform Management Interface)は、システムの状態監視と管理に使用できる、コンピューターシステムへの一連の共通インターフェースを定義します。STONITH と一緒に使用することで、クラスターソフトウェアはシリアル接続またはネットワーク接続を介してスイッチに指示を出して停止したように見えるクラスターノードの電源をオフにし、異常なノードが共有データにアクセスしたり破損したりしないようにします。
パッケージ要件
- クラスター内の 各サーバー 上の IPMI ツールパッケージ (例:ipmitool-1.8.11-6.el6.x86_64.rpm)
ベースボードマネジメントコントローラー(BMC)の設定
クラスター内の各サーバーで BIOS または ipmitool コマンドを使用します(例:ipmitool を使用)。
- 静的 IPを使用: ipmitool lan set 1 ipsrc static
- IP アドレスを追加: 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
(詳細については、ipmitoolのマニュアルページを参照してください。)
STONITH のインストール
次のコマンドを実行して、LifeKeeper がインストールされ、すべてのサーバーへのコミュニケーションパスが構成されている 各サーバー に LifeKeeper STONITH スクリプトをインストールします。
# /opt/LifeKeeper/samples/STONITH/stonith-install
/opt/LifeKeeper/config/stonith.conf の更新
クラスター内の各サーバーの stonith.conf ファイルにエントリーを追加します。
# LifeKeeper STONITH configuration # # Example: <host> ipmitool -l <interface> -H <ip> -U root -P secret power off minute-maid ipmitool -I lanplus -H 192.168.0.1 -U root -P secret power off kool-aid ipmitool -I lanplus -H 192.168.0.2 -U root -P secret power off |
VMware vSphere 環境での STONITH
vCLI (vSphere Command-Line Interface) は、ESXi ホストや仮想マシンなどの仮想インフラを管理するために VMware がサポートしているコマンドラインインターフェースです。ニーズに合った vCLI コマンドを選択して、VMware 仮想マシン間での LifeKeeper STONITH の使用に適用できます。
パッケージの要件
STONITH サーバー
VMware vSphere SDK パッケージまたは VMware vSphereCLI(vSphere CLI は、vSphere SDK と同じインストールパッケージに含まれています)。
監視対象の各仮想マシン
VMware Tools
設定
vSphere CLI コマンドは、vSphere SDK for Perl 上で実行されます。
- vCLI-esxcli
- esxcli ––server=10.0.0.1 ––username=root ––password=secret vms vm kill ––type=‘hard’ ––world-id=1234567
- vCLI-vmware_cmd
- vmware-cmd -H 10.0.0.1 -U root -P secret <vm_id> stop hard
<vm_id> の決定
vSphere CLI コマンドは、vSphere SDK for Perl 上で実行されます。 <vm_id> は VM の識別子として使用されます。この変数は、構成中の VM の構成ファイルを指している必要があります。
- 利用可能なホストのリストを取得します。
vmware-cmd -H <vmware host> -l
- 出力例:
/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 を参照するコマンド:
vmware-cmd -H 10.0.0.1 -U root -P secret
/vmfs/volumes/4e08c1b9-d741c09c-1d3e-0019b9cb28be/l
ampserver/lampserver.vmx stop hard
STONITH のインストール
次のコマンドを実行して、LifeKeeper がインストールされ、すべてのサーバーへのコミュニケーションパスが構成されている 各サーバー に LifeKeeper STONITH スクリプトをインストールします。
# /opt/LifeKeeper/samples/STONITH/stonith-install
/opt/LifeKeeper/config/stonith.conf の更新
上記の出力にリストされている stonith.conf ファイルの3つのホストのエントリー(他のすべてのエントリーはコメントアウトまたは削除してください):
# LifeKeeper STONITH configuration # # Example: vmware-cmd -H 10.0.0.1 -U root -P secret stop hard lampserver vmware-cmd -H 10.0.0.1 -U root -P secret /vmfs/volumes/4e08c1b9-d741c09c-1d3e-0019b9cb28be/lampserver/lampserver.vmx stop hard oracle vmware-cmd -H 10.0.0.1 -U root -P secret /vmfs/volumes/4e1e1386-0b862fae-a859-0019b9cb28bc/oracle10/oracle.vmx stop hard lampserver02 vmware-cmd -H 10.0.0.1 -U root -P secret / vmfs/volumes/4e08c1b9-d741c09c-1d3e-0019b9cb28be/lampserver02/lampserver02.vmx stop hard |
AWS 環境での STONITH
AWS 上での STONITH については、こちら を参照ください。
Microsoft Azure 環境でのSTONITH
Azure CLI は、仮想マシンなどの Azure リソースを管理するため Microsoft でサポートされているコマンドラインインターフェースです。STONITHと共に使用すると、クラスターソフトウェアは、停止したように見えるクラスターノードの電源をオフにして、異常なノードが共有データにアクセスしたり破損したりしないようにします。
要件
パッケージ
Azure CLI – install Linux Azure CLI on each server in the cluster.
カスタムロール
Azure Fencing に用いる Microsoft Azure 上の仮想マシン及びユーザーに割り当てられるカスタムロールには、仮想マシンを powerOff できる権限が最低限必要です。
Microsoft.Compute/*/read Microsoft.Compute/virtualMachines/powerOff/action Microsoft.Compute/virtualMachines/start/action |
事前確認
各サーバー で以下のコマンドを実行し、Microsoft Azure 上の認証が機能していることを確認してください。
# az vm show —resource-group <group name> —name <vm name>
STONITH のインストール
次のコマンドを実行して、LifeKeeper がインストールされ、すべてのサーバーへのコミュニケーションパスが構成されている 各サーバー に、LifeKeeper for Microsoft Azure STONITH スクリプトをインストールします。
# /opt/LifeKeeper/samples/STONITH/azure-stonith-install
上記コマンドは対話的に動作しますので、グループ名を入力し、表示されるクラスターノードの Microsoft Azure 上での仮想マシン名を確認してください。
コマンド出力例
STONITH script install… Please enter the Resource Group name in Azure: rg-Group1 Please enter the System name in Azure[vm-HostA]: Enable Stonith on node vm-HostA [Yes]: s Please enter the System name in Azure[vm-HostB]: Enable Stonith on node vm-HostB [Yes]: Configuration file /opt/LifeKeeper/config/stonith.conf was saved. |
/opt/LifeKeeper/config/stonith.conf の更新
インストールが完了すると、仮想マシンの電源をオフにする設定が以下のファイルに追加されます。
/opt/LifeKeeper/config/stonith.conf
# LifeKeeper STONITH configuration # # Example: <host> az vm restart -g <resource group> -n <node name> vm-HostA az vm stop -g rg-Group1 -n vm-HostA --skip-shutdown vm-HostB az vm stop -g rg-Group1 -n vm-HostB --skip-shutdown |
期待される動作
LifeKeeper がノードとの通信障害を検出すると、そのノードの電源がオフになり、フェールオーバーが発生します。問題が修復されたら、ノードの電源を手動でオンにする必要があります。
STONITHの削除
- /opt/LifeKeeper/events/prefailover の下にあるすべてのフォルダーを削除します。
rm -r /opt/LifeKeeper/events/prefailover/*
- /opt/LifeKeeper/config/stonith.conf にある設定ファイルを削除します。
rm /opt/LifeKeeper/config/stonith.conf
このトピックへフィードバック