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 の構成ファイルを指している必要があります。

  1. 利用可能なホストのリストを取得します。

vmware-cmd -H <vmware host> -l

  1. 出力例:

/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

  1. 太字で出力されている最初の 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 CLIinstall 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の削除

  1. /opt/LifeKeeper/events/prefailover の下にあるすべてのフォルダーを削除します。

rm -r /opt/LifeKeeper/events/prefailover/*

  1. /opt/LifeKeeper/config/stonith.conf にある設定ファイルを削除します。

rm /opt/LifeKeeper/config/stonith.conf

フィードバック

お役に立ちましたか?

はい いいえ
お役に立ちましたか
理由をお聞かせください
フィードバックありがとうございました

このトピックへフィードバック

送信