Nutanix Community Edition（ce-2015.07.16-beta）でライブマイグレーションを試してみた

前回から少し間が空いてしまいましたが，Nutanix CEでのライブマイグレーション（Acropolis上の機能名では「Migrate」）を試してみました。
![mig_title.png](https://qiita-image-store.s3.amazonaws.com/0/84474/1af624c5-64dd-bc00-68b1-29ba152252b5.png)


**なお，7月20日現在，ダウンロード可能なNutanix CEは，ce-2015.07.16-betaとなっており，7月20日時点，ce-2015.07.16-betaに基づいて記載しています。**
**そのため，今後新しいバージョンが提供された場合に，当該記載と矛盾が生じる場合がありますのでご注意ください。
また，さわりはじめたばかりで認識誤り等があるかもしれません。おかしい，なんか違う等ありましたらご一報を。**


# Nutanix CEのVMマイグレーション
Nutanix CEには，VMware vSphereにおけるvMotionやHyper-VにおけるLive Migrationと言った機能に相当する機能が実装されています。

Nutanix CEの仮想化基盤であるハイパーバイザー部分はKVMをベースとしており，それにNutanixの独自実装を加え，Acropolis Hypervisorとして提供しています。そのためマイグレーションに関する実装や制限についても，基本的にはKVMのマイグレーションに準ずるようです。

# Nutanix CEにおけるVMマイグレーションの操作
Nutanix CEにおけるマイグレーション操作は，コマンドラインインターフェースとAPI，そしてAPIとほぼ同等と思われますが，WebコンソールであるPRISMからの操作により可能です。
現時点において，PRISMではVMのマイグレーション操作に限らず，基本的にほとんどの操作において複数選択の一括操作ができないため，そういった操作を行う必要がある場合は，コマンドラインインタフェース等を活用することになるかと思います。

今回は，WebコンソールであるPRISMからの操作によるマイグレーションについて見ていきます。Nutanix CEのマイグレーション操作は，メインメニューのVMを選択しTableを参照し，マイグレーション対象のVMを選択して「Migrate」でマイグレーション操作を開始します。
![01_mig_button.png](https://qiita-image-store.s3.amazonaws.com/0/84474/ecd5c936-5b2a-f639-416a-e04a401bafd2.png)


## 自動マイグレーション
Nutanix CEが自動でマイグレーション先を決定してくれます。ただし実行する前にマイグレーションの可否までは判断してくれないようで，実行後に成功，エラーかが帰ってきます。

自動マイグレーションを行う場合は，「Migrate」選択時に表示されるプルダウンが可能なポップアップウィンドウにおいてデフォルトで表示される「System will automatically select a host」を選択して実行します。
![03_mig_auto.png](https://qiita-image-store.s3.amazonaws.com/0/84474/49a7ce53-3161-108e-e31e-1458592ae996.png)


## 手動マイグレーション
自分でマイグレーション先を決定します。Nutanix CEでは，通常，クラスターを構成する各ノード名（HOST NAME）がNTNX-xxxxxxx-Aとなっているためマイグレーション先のホストの詳細がぱっと見わかりません。そのため事前に一度，メインメニューのHardwareを選択し，必要に応じてTableを参照てからマイグレーション先のホストを決定します。

手動マイグレーションを行う場合は，「Migrate」選択時に表示されるプルダウンが可能なポップアップウィンドウで，マイグレーション先のホストを選択して実行します。
![02_mig_select.png](https://qiita-image-store.s3.amazonaws.com/0/84474/edaed660-2064-6bf5-cf5f-b02bf5e9e0d3.png)

![04_migi_non_auto.png](https://qiita-image-store.s3.amazonaws.com/0/84474/6470c08d-2eca-ed26-5932-9a5addc35136.png)

## マイグレーション結果の確認
マイグレーションを実行すると，PRISM上の通知エリアに，マイグレーション実行開始のメッセージが表示されます。少し待つとマイグレーションについも結果が表示されます。
![05_commit_msg.png](https://qiita-image-store.s3.amazonaws.com/0/84474/4e25f8df-8e7e-630f-f08d-2304e1f77b86.png)


また，VMのページのTableで，VM Tasksと言う項目でもマイグレーションの結果が表示されます。
![06_mig_result.png](https://qiita-image-store.s3.amazonaws.com/0/84474/55b38e3d-d7e5-61de-7110-4033b56fa4ce.png)


# マイグレーションを実施した環境の前提条件
* Nutanix CEのHOST及びCVMは192.168.100.0/24のネットワークに配置
* クラスターを構成する各ノードは，すべて10GbEスイッチを介して10GbEネットワークで接続
* Nutanix CEが動作する同一ネットワーク内にDHCPサーバー（Windows Server 2012 R2）を配置
* Acropolisの"ENABLE IP ADDRESS MANAGEMENT"及び"IP ADDRESS POOLS"は利用しない
* Acropolisのネットワーク設定はvlan.0のみを定義し，AcropolisのVMのNICはvlan.0に接続
* クラスターを構成する各ノードは異なるCPU世代が混在（Xeon 5500/5600/E5-2600）
* マイグレーション対象のVMは，Windows 10 TP（QEMU GAインストール済み）及びCentOS7ないしはUbuntu 14.04
* Nutanix CEのHOST及びVM，また操作するPCからは相互に192.168.100.0/24のネットワークを通じてpingが可能

# ライブマイグレーションの実施結果
マイグレーションの結果については，以下のとおりです。

* 古い世代のCPU搭載ホストから新しい世代のCPU搭載ホストへのマイグレーションは問題なく実施できていますが，その逆についてはいずれもマイグレーションできませんでした。この辺はKVMのマイグレーションに関する制限と同様かと思われます。
* ライブマイグレーション実施時のマイグレーション性能ですが，いずれも概ね8秒程度で完了しています。マイグレーション性能としては良い数値なのではないでしょうか。
* また，ライブマイグレーション中に，マイグレーション対象のVMに対してpingを打ち続けていましたが，一部を除いて（次回に投稿で記載）Time outが発生することなくライブマイグレーションが完了しています。

## マイグレーション結果一覧

|マイグレーション元||マイグレーション先|結果|
|:---|:---:|:---|:---:|
|Xeon 5500|→|Xeon 5600|○|
|Xeon 5500|→|Xeon E5-2600|○|
|Xeon 5600|→|Xeon 5500|×|
|Xeon 5600|→|Xeon E5-2600|○|
|Xeon E5-2600|→|Xeon 5500|×|
|Xeon E5-2600|→|Xeon 5600|×|


## ライブマイグレーション失敗時のメッセージ
前述のとおり，新しい世代のCPUが搭載されたホストから，古い世代のCPUが搭載されたホストにマイグレーションを試みると，マイグレーション先のホストには，CPUの互換性がないよ！と言ったメッセージが表示されマイグレーションが失敗します。通知エリアに表示されているメッセージの「Detail」を見ると，具体的にマイグレーション先のCPUには，SSE4.2とAVX2が足りていない，と言ったようなメッセージも確認できます。
![07_mig_err_cpu.png](https://qiita-image-store.s3.amazonaws.com/0/84474/7b441a0e-bcda-490a-a35d-20df21c845e5.png)


その他，マイグレーション先のホストにマイグレーション対象のVMに設定されているVMのメモリ量を充足できない場合もやはりエラーとなります。ストレージについては複数のノード間で自分のノードに接続されていないストレージデバイスでも共有して利用することができますが，メモリやCPUリソースについては，マイグレーション先のリソース上限に引きずられるため，マイグレーションを行う場合は，手動であらかじめマイグレーション先のCPUやメモリの空きリソースの確認が必要になります。
![08_mig_err_mem.png](https://qiita-image-store.s3.amazonaws.com/0/84474/aeae44d1-3983-d03c-e2b6-7123b7105906.png)


## ライブマイグレーション時に苦労したこと
Nutanix CEのAcropolisでは，VMの起動時にホストを選択することができませんでした（これは単に自分の調査不足か知識不足かもしれませんが…）。VMの起動は，見ている限りリソースの空き状況（主にメモリと思われる）からNutanix CEのほうで判断したホストにどんどん起動されるようで，そのためマイグレーション元にしたいホストになかなかVMが起動せず，チェック用のマトリクスを埋めるのに苦労しました。
優先してVMが起動されてしまうホストを潰すためにcloneしてVMを起動しまくり，メモリを枯渇させた上で，やっと狙ったホスト上にVMを起動すると言った非常にアナクロな力業を使うハメになりました。何か良い方法をご存じ方がいらしたら，そっと教えて下さい。
　
　
***
　
　
KVMでのライブマイグレーションは，なかなかうまく行かないと言った話しも聞いていたので，KVMをベースとしたNutanix CEのAcropolisではどうだろうと思っていましたが，Nutanix CEでは，VMのライブマイグレーションのみに限って言えば問題なく動くようです。

ただし，一部マイグレーション後のVMの挙動で問題が生じたものがあったため，そちらについては，また次回の投稿でまとめてみたいと思います。