VMware vCenter Server on IBM CloudのクラスターでEVC(Enhanced vMotion Compatibility)モードを変更してみた

# 前置き

IBMは2016年2月にVMware社との提携を発表しました。

提携以後、IBM CloudではVMwareのvSphere環境を提供できるようになり、vSphere環境のクラウド活用を支えています。
その中でも構築自動化のソリューションとして、VCS(VMware vCenter Server on IBM Cloud)というソリューションがあります。

vSphere環境の様々な設計や初期設定、運用を自動化し、数クリックでNSXやVSANを含めた環境がデプロイ可能なソリューションなのですが、今回はこの環境を利用して検証を行いました。

もっとIBM CloudやVCSについて詳しく知りたい場合は[こちら](https://cloud.ibm.com/docs)からどうぞ！


# 今回やること

さて、本題に入りますが、今回は **「vCSA(vCenter Server Appliance)が含まれている、既存クラスターのEVCモードを変更する」** ということをやってみたいと思います。

VMwareの世界では、VMを移行するのに利用するvMotionという機能があります。
VMを停止することなく別環境に移行できる非常に便利な機能なのですが、いくつかの制約があり、その中の1つとして「移行前後のホスト間でCPUの世代を合わせる必要がある」という制約があります。(正確にはCPUの機能セットが同一のものである必要があります。)

その制約を緩和する機能として、VMwareではEVC(Enhanced vMotion Compatibility)という機能を提供しています。
クラスターごとに設定するもので、(vSphere6.7では仮想マシンごとにも設定できます。)CPUの新しい機能セットを仮想マシンから見えないように隠す事により、新しい機能セットを持つホストから古い機能セットを持つホストに移行できるようにすることが可能です。
また、EVCには「モード」と言う概念があり、そのクラスターで適用されるCPUの世代のことを意味しています。
このEVCモードを2つのクラスター間で合致させる事により、別世代のCPU間でもvMotionが可能となるのです。

しかし、新しくクラスターを作成する場合はいいのですが、既存のクラスターでEVCモードを変更するには、**そのクラスター内の仮想マシンが全てオフ**になっている必要があります。

と、ここまでを踏まえて、よく上がる議題がこちらです。

**「vCSAが含まれている既存クラスターのEVCモードを変更するにはどうしたらよいか？」**

なぜ議題に上がるかというと、先程記載した通り既存クラスターでEVCモードを変更するには、そのクラスターに属しているホスト上の仮想マシンを全てオフにする必要があります。
しかし、vCSAをオフにしてしまうとvCenterに入れないため、結局EVCモードを変更することができない。。。というジレンマが生じてしまいます。

今回は、このジレンマを解消することを目標に既存クラスターのEVCモードを変更したいと思います。

ちなみに一般的なジレンマの回避策は[こちら](https://kb.vmware.com/s/article/2147821?lang=ja)です。
通常は上記KBに記載されているように、EVCを有効にした新規クラスターを作成し、そちらに仮想マシン、ホストを移行するという手順で行うのですが、これだと既存のクラスターのEVCモードを変更できていません。
また、IBM Cloud上のVCSを利用するにあたり、別クラスターを手動で作成し、既存のマシンを全て移行させる手順はvSANクラスターや運用サポートの観点から推奨されませんので、上記とは少し異なった手順で実現したいと思います。

# 既存クラスターでのEVCモード変更(もしくは有効化)の手順

下記がその手順になります。

1. EVCモードを変更するクラスター内のホストと同じ世代のCPUのESXiホストを1台用意する
2. 新規クラスターを作成し、追加ホストをそのクラスターに登録する
3. vCSA、DNS以外の仮想マシンをパワーオフする
4. vCSA、DNSを新規クラスターにvMotionで移行する
5. 既存クラスターのEVCモードを変更する
6. vCSA、DNSを移行する先のネットワークを作成する
7. vCSA、DNSをパワーオフし、追加ホストのインベントリから削除する
8. vCSA、DNSを既存クラスターのホストのインベントリに登録する
9. vCSA、DNSのネットワーク設定を復元し、全ての仮想マシンをパワーオンする

ここでDNSはvSphere環境のFQDNを名前解決するDNSサーバーのことです。DNSをVMware上のVMとしてデプロイしている場合に停止しないようにvCSAと一緒に移動させます。

では早速やっていきます。



## 1. ESXiホストを1台用意する

今回はVCS環境の横に1台ベアメタルサーバーをオーダーし、ESXiホストとしてデプロイしました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/3124536e-78f8-e126-a9fa-b529d87ea517.png)

ホストは既存クラスターのホストと同じ世代(CPU機能セット)のサーバーを注文しましょう。
また、あとでvMotionでこのホスト上に仮想マシンを移行させるため、vMotion用のVMkernelを作成し、分散仮想スイッチにホストを追加しておきましょう。

ちなみに、IBM Cloudでは時間課金で物理サーバーを利用できます。小さい物理サーバーであれば1時間50円程度でも利用可能です！


## 2. 新規クラスターを作成し、追加ホストをそのクラスターに登録する

vCenterにログインし、新しいクラスターを作成します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/fea390ed-8c39-9c0b-ce8a-31844577fa46.png)



vSphere Web Clientから既存のデータセンターを選択し、「新規クラスタ」をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/d631c7dc-d34d-3934-4313-1486ddc08c33.png)

必要な情報を入力し、クラスターを作成します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/cf755533-03ce-d3b1-8ec5-39451f4ddb27.png)

新しく作成したクラスターに用意した追加ホストを登録します。
先程作成したクラスターを右クリックし、「ホストの追加」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/326512e3-9024-cb75-8c8f-364d2d338080.png)

ちなみに、ホストの情報はIBM Cloudのポータル画面で「リソースリスト」を選択すると取得することが可能です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/aaf94c3a-c1cb-8bf1-9b38-cf112c407d3e.png)

ESXiホストのパスワードはサーバー名をクリックし、
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/df045169-eb7e-51d2-aa2a-d103eb44d450.png)

「パスワード」タブを選択すると見ることができます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/536eba18-61e9-74a0-e6cd-3cdb349c26a3.png)

取得した情報を入力し、クラスターに新規ホストを追加します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/f6a8d722-b9c7-c55b-1185-af657ae58531.png)

正常にホストが追加されました。メンテナンスモードを終了し、ホストを接続します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/a0a2c679-f07a-973c-822f-6f0eb4bf9fcb.png)

## 3. vCSA、DNS以外の仮想マシンをパワーオフする

EVCモードを変更するため、クラスター内の仮想マシンをパワーオフします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/402e7cb7-514d-bfc7-1967-4c1a430197d9.png)




vCenterはEVCモードを変更するために必要なので起動させておきます。また、DNSサーバーはvSphereのコンポーネント間におけるFQDNの名前解決を行っているので、vCenterとESXiホスト間の通信が切れないように起動させています。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/82e3b61b-d8c5-840f-1ab6-517036f7d5ed.png)

## 4. vCSA、DNSを新規クラスターにvMotionで移行する

新規クラスターにvCSAとDNSをvMotionで移行させます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/950436f1-ad2e-766e-1a8d-252d5b3cac0e.png)


vMotionをするには、対象の仮想マシンを右クリックし、「移行」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/04e8ae97-ee8e-44b4-67d7-e7d17e923e37.png)

移行先のストレージとして、戻すときのことを想定して全ホストからアクセスできる共有ストレージをオーダーし、そちらを選択しました。今回はIBM CloudでオーダーできるEndurance Storageを利用しています。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/16bfeca9-52d0-0bba-e664-ac9666d30662.png)

移行が完了しました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/95a92329-31d1-2466-de81-e59ce29785d8.png)

## 5. 既存クラスターのEVCモードを変更する

vMotionでの移行が完了した後、既存クラスターのEVCモードを変更することができます。

クラスターを選択し、「設定」->「VMware EVC」->「編集」をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/1b95cfff-f445-40f8-e248-066911078d3f.png)

例えば「Skylake」から「Ivy Bridge」などの古いEVCモードに変更します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/472bb287-2db7-6626-0a2d-73681661a458.png)


クラスター内に仮想マシンが動いている場合、CPUの新しい機能セットを利用している可能性があるため、EVCモードを変更することはできません。
ここでは仮想マシンは全て停止しているため、互換性の検証に成功しています。

変更が確認できました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/a6623567-7cb3-0c47-706e-d7fc8db27e37.png)

## 6. vCSA、DNSを移行する先のネットワークを作成する

既存クラスターに移行する準備を行います。
先程はvMotionで移行できましたが、この時点で既存のクラスターのEVCモードは新規クラスターのEVCモードよりも古い世代のCPUとなっていて、vMotionによる移行はできません。

今回は追加ホストのインベントリから削除し、Host Clientから既存クラスター内のホストにインベントリを追加しようと思います。

その際に、**Standard Switch**に接続する必要があるので、移行予定のホストにvSwitchを作成し、ポートグループやアップリンクの設定をしておきましょう。
(Distributed Switchでは接続できなくなります。)


## 7. vCSA、DNSをパワーオフし、追加ホストのインベントリから削除する

では、vCSAとDNSを既存のクラスターに戻します。

一度仮想マシンを停止し、ホストのインベントリから削除します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/0bf8f056-4ea1-3bd8-0105-74834733b194.png)



vCenterでvCSAとDNSを停止した後、追加ホストのHost Clientにログインします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/8b9dbb0a-fa44-45e1-2061-c66804ada68f.png)

3つの仮想マシンを選択し、「アクション」から「登録解除」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/c1a1d871-51b0-9001-7d93-c59d63d84513.png)


## 8. vCSA、DNSを既存クラスターのホストのインベントリに登録する

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/42317c71-6445-8f5a-c222-4b8b0c2901aa.png)

今度は既存クラスターのホストにログインし、vCSAとDNSをインベントリに登録します。
「仮想マシンの作成/登録」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/1957140d-32dc-08da-68c9-904f4d13ebd4.png)

「既存の仮想マシンの登録」から、先程インベントリから削除したvCSA、DNSを登録していきます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/9a242ffc-0669-4d4f-e0d3-499c3ef6035a.png)

仮想マシンは共有ストレージに格納していたため、どのホストからも登録することができます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/30b6956b-ccba-3fe4-1061-dbca0626272a.png)

登録が完了したら、vCSAをパワーオンします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/e622a155-7196-e30b-3ad3-b9c42eda87b5.png)

ネットワークアダプターは先程作成したStandard Switch上のポートグループに接続し直します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/d697943c-3562-83f4-67b6-baddd171a8e7.png)


## 9. vCSA、DNSのネットワーク設定を復元し、全ての仮想マシンをパワーオンする

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/e3545915-2bf5-b61e-e764-db4fd03d5aba.png)

ではvCSAにログインします。vSwitchのネットワーク設定がうまく行っていればアクセスすることができます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/9e2dd25d-f493-7f40-564c-1f86acde6863.png)

vCSAとDNSはStandard Switchに接続されているため、vDSに接続し直します。ポートグループを元に戻しておきましょう。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/6b83c73a-39af-769a-1479-d050782a771a.png)


最後に、全ての仮想マシンをパワーオンし、EVCモードを適用します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/0b4a9893-d35f-641d-f136-f2d25e22d89c.png)

これで既存クラスターのEVCモードを変更することができました！！


# 終わりに

今回はvCSAが含まれている既存クラスターのEVCモードを変更しました。
ネットワーク設定などの追加が必要ですが、元の状態を維持したまま変更することができます。

実際に行う場合はあらかじめvCSAや各仮想マシン、ポートグループやネットワーク等のバックアップを取得してからやることをおすすめいたします。