vSANでの障害処理(vSphere HAとの連携とコンポーネント総数50%未満でのVMの動作状況について)
vSANトレーニング5週連続終えました。来週からはvSphere 6.5 Install Configure Manageです。
そして、VMware NSXとHorizonも要望が高まってきていますので、そのうち主要製品はコンプリートしそうです。
さて、前回のvSANトレーニングで、vSAN環境に於ける"HA(High Availability)"の動作について質問があったので、動作検証を持って正確な情報を得たいと思います。
質問:vSAN上のVMがFTT=1のRAID1ポリシーで保護されている場合、3つのコンポーネントが分断された場合は、オブジェクトは利用不可とはなるが、VMは再起動されるのかされないのか
ということで毎度お馴染みのHOLで環境を構成します。
まず4ノードvSANクラスターを構成します。Test-VMは現在"esx-03a.corp.local"上で起動しています。
続いてコンポーネントの配置を見てみましょう。
VMDKオブジェクトはホスト番号02, 03, 04号機上に保存されていることがわかります。
■シナリオ1:4ノードクラスターで、1ノードが停止するケース
まず一旦、4ノードクラスター内の1台をシャットダウンし、vSANクラスターを3ノードまで減らします。せっかくですので、Test-VMが動作している"esxi03a.corp.local"をシャットダウンしてみます。
ホスト”esx-03a.corp.local”をシャットダウンし、VMも接続性を失いました。
ホストがHAによりリスタート完了しました。
Test-VMは、4号機上でリスタートされたようです。
コンポーネントのステータスはAbsentですね。
(ホスト障害やネットワーク疎通不可はデフォルトで60分のタイマー切れ後に再同期動作が始まる)
■シナリオ2:オブジェクトに対する一部のコンポーネントが欠損した状態で、更に障害を発生させる。
さて、いよいよ本題です。現在のコンポーネント配置は次の状態です。
今度はホスト2号機をダウンさせます。1号機でも良いのですが、せっかくなら、VMDKの完全なミラーをもつコンポーネントは残しておきます。
理論上、オブジェクトは3つ中2つがアクセス不可となるため、オブジェクトは動作が出来ない状態になると言えます。
VMDKオブジェクトが残っていればI/Oは出来る環境は残るので、ひょっとしてVMは継続して動くのでは?と、興味を持たれる方もいるかもしれませんので、1号機を残します。
シャットダウン後がこちらです。
vSphere Web Clientの更新もしっかり行いましたが、VMは起動状態のままです。
HOLは残念ながらクライアントOSのデプロイが出来ないので、IOを発生させるなどの検証は出来ませんでした。
入念なチェックのため、vSphere Clientからも確認しましたが、やはり起動状態ではあるようですね。
データストアブラウザからも、各構成ファイルを確認することが出来ないようです。
ちなみに今回は、Test-VMは04ホストで動作をしていましたので、HAによるリスタートは起きませんでした。(後々、そこまで想定してvMotionしとけばよかったと思いました)
せっかくなんで、手動でTest-VMを再起動してみます。HAでは無いですが、HAによるリスタートと同じ結果が得られると言えます。
再起動、ポチッとな。
1~2秒後に、こんな感じでした。そりゃそうですよね。
その後、VMのステータスはパワーオフ状態となり、以降起動は失敗します。
以上です。
結論:いくらVMDKのレプリカコンポーネントがアクセス可能であっても、オブジェクトは50%以上のコンポーネントを保有していない場合、VMは正常に動作は出来ない。
なお、VMは継続稼働状態にはあったものの、ディスクIOなどを受けた場合は、OSやアプリケーション側のタイムアウトなどにより、エラーが発生し停止することが予想される。
また、HAによるリスタート命令を受けるVMは、リスタートが失敗する。
データストアブラウザで見た場合、ファイルが消失しているように見える。
付録:vSANでの障害ステータスについて
以下の図のように、ご覧を頂くとたった1台のホスト障害で、2つのエラーが発生しているように見えます。
また、別の画面ではVMは障害の影響を受けておらず、正常であるかのようにも見えます。
管理者の方からすると、複数の障害が発生している、と見えてしまうかもしれませんが、そうではありません。
vSANでは、次の3つの視点からVMを評価しているといえます。
- ポリシーで既定したデータ配置がなされているか否か
vSphere Web Client上の”コンプライアンスステータス”
ポリシーで定義した数のコンポーネントが全て存在する場合は”準拠”と表示
コンポーネントが1つでもアクセス不能になると”非準拠”と表示 - オブジェクトが動作出来ているか
vSphere Web Client上の"動作状態"
オブジェクトが動作出来る間(50%以上のコンポーネントを保有)は”健全”と表示
オブジェクトが動作出来ない間(50%未満のコンポーネントを保有)は”非健全”と表示 - コンポーネント単体のステータス
vSphere Web Client上の”コンポーネントの状態”
コンポーネントを保持するデバイスの種別によって”低下しました”または”不完全”と表示される。
これらを纏めると、単一の障害で、これら3つのステータスは連動して変化すると言えます。