vSAN Cluster全停止/起動時における注意
**12/20 追記
6か月ぶりのご無沙汰です。
vExperts Advent Calendar 2018 12/14分の寄稿になります。
今週、vSAN Clusterの全停止/起動に際して注意が必要なVMware KBが出ました。
- A simultaneous reboot of all hosts in the vSAN cluster may result in data unavailability after a single failure (60424)
https://kb.vmware.com/s/article/60424
この記事を見つけたとき日本語版が無かったのでせかせか手順を
まとめていましたが,昼過ぎに日本語版がreleaseされていました...結果オーライ?
- vSAN クラスタで全てのホストを同時に再起動する際に単一障害により利用不可のデータが発生する (60424)
https://kb.vmware.com/kb/60424?lang=ja
KBに添付されているシェルスクリプトを停止/起動時にcronで実行することで
ホスト上の vsan network tag をremove/addし、vSANトラフィックを明示的に制御しています。
本記事では、簡単に行間の補足をしておきたいと思います。
そもそもvSAN Cluster全体を停止するときのオプションは"データの移行なし"で正しいの?
→ はい。逆にそれ以外のオプションはNGです。
VMware社で紹介している"正しいvSANクラスタ停止手順"を実行した際に、
いくつかの問題を確認したことで今回のVMwareKBが公開されているようです。
なぜNTP同期が必要なの?
→ 確実に同じタイミングで全Nodeの vsan network tag removeが出来るようにするための処置です。
「 Node State が “Master”であることを確認します」とは何を意味しているの?
→ 各ESXi Nodeが Single vSAN Roleの状態になったかをチェックしています。
vSAN Clusterは Master / Backup/ Agent という役割をそれぞれ担います。
vsan network tag removeが正しく処理されたかをチェックしています。
停止時にcrontabへ登録した追加コマンドを 再起動後に明示的に消すような記載が無いけど大丈夫なの?
→ はい。ESXiでは /var/spool/cron/crontabs/root にcrontabにあたる定期実行のスクリプトコマンドが記述されていますが、こちらは/var配下のためホストを再起動するとクリアされます。今回は不要ですが、再起動後もcronの設定を保持したい場合は
以下VMware KBに準じて /etc/rc.local.d/local.sh に記述します。ただし、VMware社でも特別な状況でない限り勝手に編集することは推奨していません。
- ESX/ESXi で rc.local または sh.local ファイルを変更して、起動中にコマンドを実行する (2043564)
https://kb.vmware.com/s/article/2080563
In CMMDS: true を確認する意図は何?
→CMMDS(Clustering Monitoring, Membership, and Directory Services)できちんとvSAN Diskとして管理下に置かれているかをチェックするためです。正しく管理されている場合、以下のような出力となります。
# esxcli vsan storage list |grep -e "Device: naa." -e "In CMMDS:" -e "Used by this host:" -e "Is SSD:" -e "Is Capacity Tier:" | xargs -n 17 | sort -k 6 -t ":"
Device: naa.58ce38ee20qw3f39 Is SSD: true Used by this host: true In CMMDS:true Is Capacity Tier: false
Device: naa.5000cca02d9c4128 Is SSD: false Used by this host: true In CMMDS:true Is Capacity Tier: true
Device: naa.5000cca02d3280 Is SSD: false Used by this host: true In CMMDS:true Is Capacity Tier: true
Device: naa.5000cca32cc390 Is SSD: false Used by this host: true In CMMDS:true Is Capacity Tier: true
Device: naa.5000cca23950 Is SSD: false Used by this host: true In CMMDS:true Is Capacity Tier: true
「$ cmmds-tool find -f python | grep -C5 CONFIG_STATUS | grep content | grep -v "state....7\|state....15"」は何をチェックしているの?
→ vSAN データオブジェクトが正常なステータスであるかどうかをチェックしています。stateが7 か15 であれば、オブジェクトのstateがhealthまたはavailableであることが証明されます。それ以外のステータスとなっている場合はデータに影響がある可能性があります。まずは各仮想マシンの起動可否含め確認することが推奨されます。データオブジェクトに影響がないスクリプトを今回紹介している..けれども 念のため確認してください、ということですね。
いかがでしたでしょうか。
vSANは起動処理に時間がかかる(経験としては1時間程度かかった場合も)ことがArchitecture Design上起こり得るとしてVMware KBで紹介されています。
- Initializing vSAN during boot takes a longer time (2149115)
https://kb.vmware.com/s/article/2149115
不意にこういった事象に見舞われた場合にも備え,
vSAN Cluster全停止の際は本VMwareKBの処置を実施していきたいですね。
今後計画停電などがある際は注意したいですね。
明日のvExperts Advent Calendar 2018は Yuki Kawamitsu さんの投稿です。
お楽しみに!