どうも、Tです。
vSphere7.0u1からvCLS(vSphere Cluster Services)なるものが実装されました。
特に実害なかったのでなんとなく放置気味でしたが、このあたりの仕様が絡む仕事もちょろちょろ見かけてきたので、ちゃんと理解することにしました。
2021年10月21日追記
vCenter7.0Update3でvCLSの機能追加や仕様変更がちょろちょろあって、気になったのでまとめてみました。
目次
vCLSとは何なのか
ざっくりとまとめると
vCLSの仕様は、下記にまとめられております。
簡単にまとめてみると・・・
- vSphere7.0u1からの新機能
- DRS・HAのクラスタサービスvCenterServerがなくとも利用可能になる
- クラスタ当たり最大3台のvCLSが作成される
- ClusterにESXiホストがあると自動で作成される
- 共有データストアに作成される、なければローカルデータストアに作成される
- vSphere7.0u2かはら異なるホストに自動再配分される(DRS有効な場合、非アフィニティルールが自動適用)
これを読んだときに、以前からvCenterServerがダウンとしててもHAは機能していたよな?と疑問に思いましたが、これはvCenterSeverがダウンしていてもアドミッションコントロールも含めて利用可能と解釈できました。ということで、vCLSの導入によって、vCenterServerがダウンしている間もDRS・HAのフル機能が使えるようになっているようです。
※vCenterServerは依然として必須です。設定後に、vCenterServerが障害などに停止してもvCLSがDRS・HAの機能を提供できるという意味です。
やってはいけないこと
公式マニュアルのほうで、vCLSに対して操作しないでねの記載があったため抜粋。
- vCLS 仮想マシンの電源状態の変更
- CPU、メモリ、ディスク サイズ、ディスクの配置など、vCLS 仮想マシンのリソースの再構成
- 仮想マシンの暗号化
- vCLS 仮想マシンの vMotion のトリガ
- BIOS の変更
- インベントリからの vCLS 仮想マシンの削除
- ディスクからの vCLS 仮想マシンの削除
- vCLS 仮想マシンの FT の有効化
- vCLS 仮想マシンのクローン作成
- PMem の構成
- vCLS 仮想マシンを別のフォルダへの移動
- vCLS 仮想マシンの名前変更
- vCLS フォルダの名前変更
- vCLS 仮想マシンでの DRS ルールとオーバーライドの有効化
- vCLS 仮想マシンでの HA アドミッション コントロール ポリシーの有効化
- vCLS 仮想マシンでの HA オーバーライドの有効化
- vCLS 仮想マシンのリソース プールへの移動
- スナップショットからの vCLS 仮想マシンのリカバリ
こちらも指示情報があります。結局のところ、何も触らず放置しておけということでしょう。
vCLS 仮想マシンはシステム仮想マシンのように扱う必要があります。VMware サポートによって指示があった場合や、ドキュメントでサポートされている操作として明示されている場合を除き、仮想マシンに対する操作は実行しないでください。
検証の目的
で、これを見たときにvCLSの目玉としては、DRSにかなりの焦点があたっているわけですが、国内の小規模~中規模では、クラスタサービスでDRS使わずHAだけ使うというパターンも多いかなという印象があり、DRS無効のときはどうなんだ?時になったので確認のための検証です。DRS使うとなると最上位のEnterprise PlusライセンスかVDI特化のDesktopライセンス必要ですからね・・・。
なので、今回の検証環境はDRSを無効で確認しています。
環境
操作は、Administrator@vSphere.localを使用しています。
ESXiはNested、vCenterは、NetstedESXiの外側の別にESXi上に構築しています。
バージョン
- vCenterServer:7.0.2 17958471
- vSphere ESXi: 7.0.2 17867351(4台使います)
DRS・HA構成
DRSがオフです。
HAはオンです。設定はオンにした際のデフォルト値が、データストアが1つのため、das.ignoreinsufficienthbdatastoreをTRUEにしています。
この時点では、ESXiはクラスタに参加していません。
ローカル・共有ストレージ
ローカルストレージはなしです。すべてのESXiに書き込み可能なtestsd06をNFSでマウントしています。SoftwareはNFSでマウントしている読み取り専用のデータストアなので無視してください。
vCLSが追加されるのは、ESXiホストがクラスタに参加したとき
現在ESXiホストはクラスタに参加していません。仮想マシンとテンプレートを見るとvCLSフォルダがあるだけです。※w2k19は、テスト用に手動で作成した仮想マシンです。
ホスト1台をクラスタに参加させます。
vCLS(1)がクラスタに参加させたホスト上に作成されました。
ちなみに、vCLS仮想マシンは、ホストおよびクラスタ画面の左欄の部分には表示されません。
vCLSの仮想マシンはvNICがない。HWスペックは無視できるレベル
vCLSにvNICはないため、外とIPアドレスで通信することはありません。ハードウェアスペックも少ないレベルなので、まぁ無視できるレベルかなと考えます。
VMDK サイズ:245 MB(シン ディスク)
メモリ:128 MB
CPU:1 vCPU
ハード ディスク:2 GB
データストア上のストレージ:480 MB(シン ディスク)
vCLSはクラスタあたり最大3台
では、このクラスタに残りのホスト3台を追加して、ESXi4台構成のクラスタを構成します。
3台のvCLSが別々のホストに作成されました。
vCLSがあるホストが停止するとHAされる
下記のコマンドを実行して、testesxi001をPSODで強制的に停止させます。
vsish -e set /reliability/crashMe/Panic 1
testesxi001で動作していたvCLS(1)が、testesxi004にHAされて稼働しています。
testesxi001を正常に起動しても、vCLSの所属ホストは変更されません。DRSを無効にしているので期待できる動作ですね。
クラスタ全体の停止(失敗パターン:今までのように手動)
備忘録として残していますが、この手順でクラスタの全体停止はできませんでした。
公式アナウンスとしてシャットダウン手順が公開されていなかったため、従来のように、下記の手順を実施しようとしたところ5.の手順でvCLSが動作しているため、testesxi001をメンテナスモードにできませんでした。
- testesxi004メンテナスモード・シャットダウン(vSphere Client経由)
- testesxi003メンテナスモード・シャットダウン(vSphere Client経由)
- testesxi002メンテナスモード・シャットダウン(vSphere Client経由)
- vCenterServerアプライアンスシャットダウン(Host Client経由)
- testesxi001メンテナスモード・シャットダウン(Host Client経由)
後述の「クラスタ全体の停止(成功パターン:Retreatモード)」をご確認ください。
3台のvCLSはtestesxi01以外にあるため、testesxi004,003,002,001の順番でシャットダウンしてどのようになるか確認します。
testesxi004をメンテナンスモードにします。警告メッセージにOKをクリックします。
稼働状態のvCLSがあるため警告があるため警告が出力されますが、OKをクリックします。
testesxi004をメンテナンスモード→シャットダウンします。
testesxi003をメンテナンスモード→シャットダウンします。
testesxi003で動いていたvCLSが、testesxi001に移動しました。
testesxi002をメンテナンスモード→シャットダウンします。
testesxi002で動いていたvCLSが、testesxi001に移動しました。
本来、testesxi001にvCenterServerも存在しているはずです(今回は検証のため、別環境に構築したvCenterを使っています。)
ということで、一旦vCenterServerをシャットダウンしました。
ここからは、testesxi001のHostClientから操作していきます。vCLSが動いています。
testesxi001をメンテナンスモードにします。確認画面ができるので「はい」をクリックします。
OKをクリックします。
メンテナンスモードのタスクが進捗しません。このまま放置しておくとタイムアウトでメンテナスモードの移行が失敗して終わります。
原因は、vCLSが停止しないことです。vCenter経由でホストをメンテナスモードにした場合vCLIは他のホストへ移動もしくは停止してくれますが、ホストから直接メンテナンスモードにする場合、vCLSは稼働したままとなります。※これは、GUIからでもCLIでも同じ仕様のようです。
実のところHost ClientからvCLSのシャットダウンは行えますが、冒頭のやってはいけないことで紹介した項目に「vCLS 仮想マシンの電源状態の変更」があるため、手動でvCLSをどうにかするのは、避けたいところです。
というわけで、従来のシャットダウン方法ではクラスタの全体停止ができないことがわかりました。
クラスタ全体の停止(成功パターン:Retreatモード無効化)
というわけで探していたところ、下記情報を見つけました。
まず、メンテナンスなどでクラスタ全体を停止する場合です。クラスタ全体を停止する場合は「Retreatモード」を無効にし、vCLSを無効にする必要があります。現時点ではこの方法がvCLSを無効にする唯一な方法となります。
このRetreatモードを無効にすることでvCLSを無効にすることはできますが、vCLSが色々面倒だからといって常時無効化するのはよくなさそうです。
vSphere クラスタで vCLS を無効にし、そのクラスタで vSphere DRS を機能させる方法はありません。以下の「Retreat モード」の手順に従って、クラスタで vCLS を無効にできますが、これはクラスタの一部のクラスタ サービスに影響します。
注:Retreat モードの使用には特別な注意が必要で、このドキュメントに記載されている目的にのみ使用する必要があります。以下は、クラスタで Retreat モードを有効にした場合に影響を受けるクラスタ サービスの詳細です。
Retreatモード無効化
Retreatモードを無効化していきます。
クラスタを選択し、URL中のdomain-c<number>を確認します。画像では、「domain-c1023」になります。一桁の場合もあるようです。:(コロン)までの番号になります。
「vCenter」->「設定」->「詳細設定」->「設定の編集」をクリックします。
画面下部に先ほど確認したdomainのIDを指定した、下記のように入力し「追加」->「保存」をクリックします。
- 名前:config.vcls.clusters.domain-c1023.enabled
- 値:False
vCLSの削除が始まるので、削除されたことを確認します。
Retreatモードが無効化できました。
クラスタ全体のシャットダウン
ここからは、従来通りシャットダウンが行えます。
testesxi004,003,002をメンテナスモード→シャットダウンします。
testesxi001のHost Clientへログインして、vCenterServerをシャットダウンします。※今回の検証環境では、vCenterServerは外だしで構築しているため、画像には表示されていません。
testesxi001をメンテナンスモード→シャットダウンします。
クラスタ全体のシャットダウンが完了しました。
クラスタ全体の起動
起動は、従来通り起動→メンテナンスモード解除をしておきます。
なお、このときはもちろんvCLSはありません。
Retreatモード有効化
Retreatモードを有効化していきます。
「vCenter」->「設定」->「詳細設定」->「設定の編集」をクリックします。
フィルタで「config.vcls.clusters」でフィルタします。
設定していた値をTrueに変更し「保存」をクリックします。
- 名前:config.vcls.clusters.domain-c1023.enabled
- 値:True
vCLSが3台デプロイが開始されます。3台のデプロイが完了したら、Retreatモードの有効化が完了です。
vCLSの番号が飛んでいるのは・・・・vCLS(1)、vCLS(2)、vCLS(3)とはならずに番号が飛んでしまっている件ですが、デプロイ途中に何回か自動でキャンセルされました。※ユーザーによってキャンセルとなってしますが、システム側で勝手にエラーになりました。
キャンセルされた原因はわかりませんでした。検証環境ゆえのスペック不足かもしれませんが・・・。ただ番号が飛んで採番されるのは問題なさそうです。決して手動で直さないようにしましょう。
Why do I see vCLS VMs with a number higher than 3? (for example “vCLS (5)” or “vCLS (28)”)
During maintenance ESX Agent Manager (EAM) can delete and re-provision the VMs when deemed needed. When a new VM is provisioned the counter will go up.
ちなみに、再度Retreatモードの無効化→有効化するとvCLS(1)からデプロイされるので、どうしても番号を連番にしておきたいときは、再実施するのが一番安全でしょう。
vCLSのshellが使える
何のために使うのは不明ですが、vCLSにログインしてshellを使えるようです。
まず、ログインするパスワードを確認します。
vSphere7.0u1時代あたりで、vCLSのパスワードは、「changeme」という記事をチラホラみますが、どこかで仕様が変わったのか2021年8月現在は、vCenterServerから調べるようになっています。
vCenterServerにログインして、下記コマンドを実行します。
PWDに表記されている文字列がvCLSのパスワードになります。かなり複雑なパスワードになってしました。
root@testvcsa [ ~ ]# /usr/lib/vmware-wcp/decrypt_clustervm_pw.py
vCLSのコンソールを起動します。
確認画面が表示されるので「はい」をクリックします。
ユーザー名はroot、確認したパスワードを入力するとログインが行えます。
ざっくりと見た感じ色々コマンド使えそうです。
何かトラブル時などに調べるように使えることだけ覚えておきましょう。
vCLSは手動シャットダウンしても自動起動する
vCLSは手動でシャットダウンしても常にパワーオン状態を維持しようとします。
vCLSを選択しシャットダウンボタンをクリックします。
確認画面がでるので、「はい」をクリックします。
数十秒ほどで、自動で起動されます。
vCLSは削除しても自動で作成される?
vCLSを手動で削除すると自動で新規作成されるような情報もみましたが、パワーオン状態のためvSphere ClientからもHost Clientからも削除のメニューはグレーアウトされています。
仕組み上、ストレージ障害などでインベントリから外れたら自動削除されそうではありますが、あまり気にしなくていいかなと思っています。
vCLSは専用のロールで制御されている
vCLSを触っていて気になっていましたが、かなりの項目がグレーアウトして触れなくなっています。スナップショットもサブメニューのほうで作成する項目は、グレーアウトされています。
vMotionやStorage vMotionは行えます。
Storage vMotion を実行すると、vCLS 仮想マシンを別のデータストアに移行できます。1 つのデータセンターで実行されているすべての仮想マシンに適用される特定のメタデータ戦略がある場合など、vCLS 仮想マシンをワークロード仮想マシンから切り離してグループ化する必要があるときは、タグを付けたり、カスタム属性を割り当てたりすることができます。
これは、vCLS専用のロール「vCLSAdmin」ロールで制限されているためです。
ちなみに、新規ユーザー(vsphere.localドメイン)に新規ロール(全権付与)の組み合わせてログインするとvCLSフォルダ自体が表示されません。
新規ユーザー(vsphere.localドメイン)をAdministratorsグループ(vSphere.localドメイン)に参加させてログインするとvCLSが表示されます。
ということで、Administraotrsグループに参加するユーザー以外は、表示もされないので利用上困惑することはなさそうです。
vCLSができたことで考えることが増えた
vCLSができたことでDRSやHAに恩恵がありましたが、考えないといけないことも増えました。ざっと、考えられる事項を調べてみました。
vSANを利用している
Retreat モード絡みではありますが、vSANやvSANを利用しているHCIの場合は、運用が少々かわりそうです。
PowerChuteなどUPSとの連携
こちらもRetreat モード絡みです。UPS連携する場合は、シェルスクリプトの変更などが必要です。APC以外のUPSも仕組みは大きくかわらないため、何かしらの対応が必要でしょう。
vCLSのバックアップは不要
vCLSのバックアップは不要です。しかしながら、バックアップソフトウェア側ではvCLSをバックアップ対象として自動チェックをつける場合もあるようなので、設定変更が必要かもしれません。
veeamさんなどでは、バージョンアップでvCLSの自動除外なども盛り込んでいるようなので、これかの注意点になりますね。
vCLSに起因する問題が増える
vCLSに関連するKBがちょくちょく記載されています。特にvCLSを手動で何かしてしまった場合などに発生するものもあるので、問題は今後も増えていきそうです。
知らないお客様だとvCLSって何?ってなりそうですしね・・・。
参考
まとめ
すごく・・・面倒です・・・・。
とはいいつつ、今後おそらくvCLS回りのアップデートもありそうなので、バージョンアップするときは要注意の項目になりました。