vCenter Server Appliance 7.0 U1 をクラスタに入れると勝手にできる VCLS って？

vSphere 7 の vCenter Server Appliance をクラスタにデプロイすると、その後勝手にすべてのホストに VCS(n)という仮想マシンができます。この VCLS って何なの？と思う前にちょっと VCLS のお話を。

# vCLS とは
vSphere 7.0 までは見ることのなかった仮想マシンvCLS、これは vSphere 7.0 Update 1 で追加された vSphere Cluster Services に使われる仮想マシンです。この vCLS があることにより、今までは ｖCenter Server のインスタンスに依存していた vSphere DRS や vSphere HA の機能が、vCenter Server の状態に依存せずに動作し続けることができるようになりました。これ、とても便利です。

# vCLS はどういうタイミングでできるの
vCLS がデプロイされるタイミング、これは vCenter Server を vSphere 7.0 Update 1 にアップグレードするとき、それと新しいvSphere 7.0 Update1 で環境を作るときに自動的に展開されます。この画面キャプチャはリモートコンソールから各ESXi の状況を見ていますが、それぞれのホストに VCLS が展開されているのがわかるかと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/13e4e3d6-3813-2636-1fac-a3aadd8dd468.png)

# vCLS の展開数
vCLS はクラスタを構成しているすべてのホストにできるのではなく、最大で 3つまで展開されます。これは vSphere 7.0 以前の vCenter HA の時のアクティブノード、パッシブノードそして監視ノードの 3つの構成と同じように高可用性を維持しつつ構成情報のレプリケーションを取ることで、耐障害性を高めています。
展開される数は以下の通りになります。

|クラスタ内のホスト数|vCLS の数|備考|
|---|---|---|
|1  |1  |  |
|2  |2  |なぜか3になる場合がある（後述）|
|3以上  |3  | |

# vCLS はホストのメンテナンスや障害の際にはどのようになるの
各ホストにデプロイされた vCLS は、そのホスト上で vSphere DRS や vSphere HA の機能が動作するように常に起動していますが、ホストに何かあった時にどのような動作をするかを見てみます。

## ホストがメンテナンスモードに入った時は
ホストがメンテナンスモードに入ったりすると実は vMotion して他のホストに移動します。先のキャプチャした環境で 2台構成のクラスタの中の 1台をメンテナンスモードにすると、このようにもう 1台のホストに vCLS が移動します。これでサービスを継続できるようにしているわけです。2ノードの場合は相手側に 2つの vCLS が集まり、3ノードの場合は残った 2ノードのどちらかに 2つの vCLS が集まります。4ノード以上のクラスタの場合は vCLS はバラバラのホスト上に移動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/2abe37e9-f9a3-bb4a-e7ed-e31f3397a25f.png)

## ホスト障害の場合は
HA 構成で単一のノード障害であれば、通常の vSphere HA と同様に vCLS が他のホストに移動します。何ら変わった動作はありません。そして、vCLS が生きているので当然 vCenter Server の動作するノードがダウンしても vSphere DRS や vSphere HA は機能し続けます。

# vCLS が無限に増える・・・・・・・の？
ホストメンテナンスモードにした後、メンテナンス作業完了後にホストのメンテナンスモードを解除すると、メンテナンスモードで移動した vCLS は、3ノード構成以上の場合は元のホストに戻ることなくそのまま移動先に残っています。ところが、不具合なのか仕様なのかわかりませんが、2ノード構成の場合で vCneter Server が稼働しているホストをメンテナンスモードにして vCLS がもう一台のホストに移動、vCenter Server も移動させてホストのメンテナンスを実施後にメンテナンスモードを解除すると、新しい vCLS が展開されてしまうということが発生しました。3つの vCLS というのがあるので、2つの vCLS が片方のノードに集まっていてメンテナンスモードを解除したら vCLS の居ないホストが登場ということで 3つめの vCLS をデプロイしたのかもしれません。実際にその後何度もメンテナンスモードにしたり戻したりしても 3つ以上増えなかったので、これは仕様上 3つ vCLS が必要ということでこのような動作をしているのだと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/2d00951d-01fa-1c46-3ecc-3a95277b3847.png)

# vCLS って作り直しできるの？
できます！！
要するに vCenter Server と一緒に vCLS も停止して、その後に vCLS を削除して vCenter Server を起動しなおせば、勝手に必要な vCLS を作り直してくれます。
正し、インベントリに「親なし」で残っていると新しい vCLS は展開されませんので、もし削除する場合には注意が必要です。（インベントリから削除すれば、自動的に新しい vCLS のデプロイが始まります。）

# vCLS に必要なリソースは
vCLS は最大 3ノード分できますので、以下のリソースを考慮しておく必要があります。ただ使うリソースはとても少なくかつ負荷も低いので、あまり気にする必要はないかもしれません。

* CPU 1コア
* メモリ 128MB
* ディスク 2GB

あと、ログインすることは無いと思いますが、vCLS にログインするアカウントとパスワードです。
アカウント：root
パスワード：changeme
最初にログインするとパスワードの変更を求められます。つまり、Photon OS の初期設定パスワードのままだというのがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/7472f5bd-7e35-9eb0-f704-e09058a62375.png)

# おまけ Raspberry Pi 4 の ESXi クラスタではどうなの？
これは単純明快です。ARM 版 ESXi では vCLS 自体がはありません。なので、ここに書いてあることは全く関係がないことになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/42ff07be-d6c4-f57a-f3ae-1d71f4da994f.png)

正し、vCenter Server 7.0 U1 を使い ARM 版 ESXi を扱おうとすると vCLS の展開失敗による「ファイルの削除」のメッセージがタスクにずっと出続けていると思います。これを抑止するためには、vCenter Server のクラスターオブジェクトの設定を一部変更してください。場所は vCenter Server -> 設定 -> 詳細設定 で以下の定義を入れます。domainについてはvCenter Server を選択すると URL に表示されるのでそれを使ってください。

* 名前	config.vcls.clusters.**domain-cXXXXX:XXXXXXX**
* 値	False

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541683/9d9020a3-dc44-dea6-eca4-c1f61677880b.png)

# vCLS を使わない!!
vCLS はいろいろと面倒なことがあるので使いたくない場合もあるかと思います。多分その要望が多かったのか vCLS の止め方が KB で公開されました。
[vSphere Cluster Services (vCLS) in vSphere 7.0 Update 1 (80472)](https://kb.vmware.com/s/article/80472)
vCLS を止めたい人は、ここを参考にしてちゃちゃっと止めちゃいましょう。