2015年12月25日金曜日

【トピックス】vSphere CLI を使用した STONITH によるフェンシングのご紹介

こんにちは、製品開発部の宇野です。

今日は、vSphere CLI を使用した STONITH によるフェンシングをご紹介します。

LifeKeeper
では、コミュニケーションパスの全断が発生した時に、STONITH を使用して両ノードでリソースが起動しないよう対向ノードを強制停止する事が出来ます。

よく利用されるのは、ハードウェア管理ポートからハードウェアの強制停止を行う様な処理ですが、vSphere CLI を使用すると、ESXi に対してコマンドを発行して、対向ノードVMの強制停止を行うことが出来ます。

実際に試してみる場合は、以下の手順を参考にしてください。



1.
各ノードに以下をインストールします。
vSphere CLI
で対向ノードを落とす必要があるので、以下の2つのツールが必要となります。

VMWare tools のインストール
vSphere CLI

vSphere CLI v6.0
では、以下のリリースノートにあるOS をサポートしています。
https://www.vmware.com/support/developer/vcli/vcli60/vsp6_60_vcli_relnotes.html

なお RHEL v7.1 で動作検証を行いましたが、利用することが出来ませんでした。
私が確認した限りでは、RHELv6.6 でも利用できましたので、6 系を利用いただくのが良いと思います。


2. vmware-cmd コマンドを使用してノード停止が行えることを確認します。

  # vmware-cmd -H 10.0.0.1 -U root -P secret /<Full path>/lampserver.vmx stop hard

上記は、ESXi 10.0.0.1 から lampserver.vmx VMへ、強制停止を実行するコマンドです。"-U" "-P" は、ESXi にログインするアカウント情報を入力してください。
 
lampserver.vmx のパス(vm_id)を確認するには、ESXi に対して以下の様にコマンドを実行してください。

  # vmware-cmd -H 10.0.0.1 -l

10.0.0.1 root ユーザーで認証する事で、稼働している vm_id を確認できます。

各クラスターノードから対向ノードに対してコマンドを実行して、強制停止できる事を確認してください。


3. LifeKeeper Core
パッケージに含まれている以下のファイルを実行します。
 

  # /opt/LifeKeeper/samples/STONITH/stonith-install


4. 3 のコマンド実行後、以下のコンフィグファイルが作成されます。

/opt/LifeKeeper/config/stonith.conf 

コメント行を参考に、対向ノードを vmware-cmd コマンドで停止する設定を追加します。

例えば、vm1,vm2 というノードがあった場合、 vm1 には、対向ノードとなる vm2を指定して、先ほど確認した vmware-cmd コマンドを記載します。この場合、ホスト名 lamp は、vmx ファイル名 "lampserver.vmx" で稼働している事になります。
 

--- 追加行 ---


lamp vmware-cmd -H 10.0.0.1 -U root -P secret /<Full path>/lampserver.vmx stop hard

--- 追加行 ---

*設定ファイルに記載する際は改行なしで記入してください。

5. 設定が上手く行えたかどうかテストをします。ノード障害を検出した場合に
STONITH
の設定が機能して、相手ノードを落とします。コミュニケーションパスを全てダウンさせて、どちらかのノードが強制再起動されれば成功です。



6. vSphere HA
vMotion によって VM が起動するホストを変更した場合、上記
の設定だけでは切り替わった後のノードへのフェンシングが行えなくなります。

VM
が稼働する ESXi vSphere HA vMotionで変更となる可能性がある場合は、可能性のあるホストに対して、コマンドを発行するスクリプトを作成して、このスクリプトを stonith.conf ファイルから読み込むよう設定する事で、対応可能となります。

私は面倒なので、以下の様にコマンドを並べただけのスクリプトを作成して動作検証を行いました。 vmware-cmd -l VMを検出するスクリプトが作成可能だと思いますので、お試しいただければと思います。


--- スクリプトファイル内容---

vmware-cmd -H 10.0.0.1 -U root -P secret /<Full path>/lampserver.vmx stop hard
vmware-cmd -H 10.0.0.2 -U root -P secret /<Full path>/lampserver.vmx stop hard

--- スクリプトファイル内容---

*設定ファイルに記載する際は改行なしで記入してください。

ホスト名 "lamp" VM ESXi 10.0.0.1,10.0.0.2 で稼働する可能性がある場合は、上記の様に2行並べただけの実行ファイルを作成してこの実行ファイルを stonith.confから読み込んでください。どちらの ESXi で稼働していても、VMdownさせることが出来ます。

他のフェンシング機能と連携して取り入れる事で、高い耐障害性を保つことが出来ます。
vmware
環境であれば vSphere CLI による STNOITH についても検討いただければと思います。


LifeKeeper I-O
フェンシングの概要
http://jpdocs.us.sios.com/Linux/9.0.1/LK4L/TechDoc/index.htm#configuration/lifekeeper_io_fencing/introduction.htm

I/O
フェンシング表
http://jpdocs.us.sios.com/Linux/9.0.1/LK4L/TechDoc/index.htm#configuration/lifekeeper_io_fencing/disabling_reservations/i_o_fencing_chart.htm

STONITH
http://jpdocs.us.sios.com/Linux/9.0.1/LK4L/TechDoc/index.htm#configuration/lifekeeper_io_fencing/stonith.htm


0 件のコメント:

コメントを投稿