Citrix MCS on Nutanix AHV

2016年6月8日に、XenDesktop MCS Plugin for AHV v1.0 がリリースされました。
これにより、Citrix XenApp/XenDesktopとNutanix AHVの組み合わせによる導入の本格化が期待できます。

# Citrix Machine Creation Services(MCS) とは
Citrix XenApp/XenDesktopで利用可能なイメージ管理機能です。

VDIや仮想アプリケーションを展開する際、管理者が多数のユーザーに対して同一OS・同一アプリケーションの環境を簡単に提供するケースが非常に多くあります。この際、各々の環境を手動インストールしたり、パッチの管理を個別に行っていては管理作業があまりに多く、破たんしてしまいます。

そこで活躍するのがMCSです。MCSは環境のテンプレートを1つのVMで作り込み、出来上がったマスターイメージを大量にクローンする仕組みです。クローンする際、仮想HDDを丸ごとコピーするのではなく、クローンVMのReadはマスターイメージを使用し、VMの稼働中に発生したWriteのみを差分ディスクに対して行うため、ストレージ容量削減にも役立ちます。
![image](https://qiita-image-store.s3.amazonaws.com/0/76398/b3d35ed3-1abf-fc77-fde6-4709713c3750.png)

# MCSの利点 & PVSとの違い
MCSの良さは、なんといってもセットアップや利用方法が簡単な点です。サーバー仮想化環境を使ったことがある人であれば、誰でも簡単に使いこなせます。大まかな流れとしては以下とおりです。
1. マスターとなるVMに、OSやアプリケーションをインストール
2. Citrix XenApp/XenDesktopのマシンカタログ作成メニューで、作り込んだVMを選択
3. VMを展開する数やスペックを指定
4. しばし待つ

このように、極めて簡単です。

Citrixの提供するイメージ管理の仕組みとしては、実績が豊富なProvisioning Services(PVS)もあります。こちらはネットワークを介してブートイメージを配信する仕組み（「ネットブート」と呼ばれる）です。利用にあたって考慮が必要な点として、PVS専用のサーバーをセットアップしたり、独特の構成概念を理解する必要があり、ある程度の複雑さは致し方ない面があります。もちろん、PVSにもMCSより優れた点はあります。たとえば、PVSは仮想マシンだけではなく、物理マシンに対する起動イメージの配信も可能です。またMCSに比べて、ブートイメージを格納するストレージがそれほど高速でなくても、PVSサーバーのメモリにブートイメージをキャッシュすることで、大量のVMを起動する際のI/O負荷（ブートストーム）に耐えうる性能を確保できる点などです。

しかしながら、Nutanixを使う時点でそもそも仮想化が大前提です。また、Nutanixは元来の高性能 ~~に加え、MCSのようなリンククローン方式でのI/O処理を最適化する「シャドウクローン」機能を持つため~~※注: AHVには構造上シャドウクローンが必要なく、存在しないため修正)とローカルキャッシュで(、PVSを使わずとも優れた使用感とスケーラビリティを提供できます。さらに言えば、せっかくNutanixを使って管理作業のシンプル化を実現するのであれば、上に載るアプリケーションについてもシンプルにしておきたいところではないでしょうか。

~~### シャドウクローン
マスターイメージを各ノードのローカルSSDにキャッシュし、そこからReadを行うことで、マスターイメージのホットスポット化の防止、およびネットワーク越しのI/Oを削減し、パフォーマンスとスケーラビリティを向上する機能。Nutanixのファイルシステム側で自動的に行われるため、管理者はこの機能を意識して設定を行う必要はない。~~(※注: AHVには構造上シャドウクローンが必要なく、存在しないため修正)
![image](https://qiita-image-store.s3.amazonaws.com/0/76398/473fdbb3-c5ee-58e3-3556-e61ed9108d77.png)

# Nutanix AHVとの連携
MCSを使用するには、Citrix XenApp/XenDesktopのデリバリーコントローラー（管理サーバー）が、VDIやアプリケーションホストを稼働させるハイパーバイザーに対してAPIを介した制御を行う必要があります。従来からMCSの利用をサポートしていたのはXenServer, vSphere, Hyper-V、AWS、CloudPlatform(CloudStack商用版)でしたが、XenApp/XenDesktop 7.9からここにNutanix AHVが加わりました。

ただし、標準で対応しているわけではなく、Nutanixが提供するプラグインをデリバリーコントローラーにインストールすることで利用可能となります。

## システム要件
* Citrix XenApp/XenDesktop: 7.9 以降（すべてのエディション）
https://www.citrix.com/go/products/xendesktop/feature-matrix.html
![image](https://qiita-image-store.s3.amazonaws.com/0/76398/b2a8eb78-60f4-1bf7-c60f-8f7455d7a1c0.png)
![image](https://qiita-image-store.s3.amazonaws.com/0/76398/aa4d14f0-9d2c-98d5-8d7c-90ced6fa1016.png)

* Nutanix: AOS 4.6.1 以降
* Windows Server 2008, 2008R2, 2012, 2012R2
* Windows 7, 8, 10

## プラグインの入手方法とインストール
プラグインはNutanixのサービスポータル(https://portal.nutanix.com 要ログイン) にあるDownloadsメニュー内の "Tools & Firemware" から入手できます。
**Documentへのリンクもあるので、必ず併せて読んでください。**
![01-download.PNG](https://qiita-image-store.s3.amazonaws.com/0/76398/4366c8de-9800-93b0-982d-8c6431a9030e.png)

インストール先はデリバリーコントローラーです。ダウンロードしたインストーラーのバイナリをデリバリーコントローラー上に保存し、インストールを実行します。インストール先のマシンさえ間違えなければ、インストール手順に関しては特に迷うようなポイントはありません。
![03.PNG](https://qiita-image-store.s3.amazonaws.com/0/76398/13757c90-1570-528d-fb5f-11c4ad385b83.png)

## Citrix Studioでの見え方

### AHVへの接続
デリバリーコントローラーに対するプラグインがインストールされた状態でCitrix Studioを起動すると、Nutanix Acrpolisへの接続が可能になります。
![08.PNG](https://qiita-image-store.s3.amazonaws.com/0/76398/08101a35-884f-3cc1-cffb-72fc86a9a2d8.png)

### 接続に必要な情報
接続に必要な情報はNutanixクラスターのVIP、ユーザー名、パスワードです。
![09.PNG](https://qiita-image-store.s3.amazonaws.com/0/76398/06e47dc5-a65c-32fc-74ff-baed08f2f4f7.png)

### ネットワークの指定
VDIやアプリケーションホストの接続先となるネットワークも指定します。このスクリーンショットではVLAN0しか表示されていませんが、他のVLANに接続したい場合には、あらかじめAHV側で仮想ネットワークを作成しておきます。
![10.PNG](https://qiita-image-store.s3.amazonaws.com/0/76398/3732dd35-6b88-5716-0650-40aafc0db1d5.png)

### マシンカタログの作成
こうしてCitrix StudioでAHVへの接続を設定したら、あとは他のハイパーバイザーの時と同じようにMCSでのマシンカタログ作成を行います。
![13.PNG](https://qiita-image-store.s3.amazonaws.com/0/76398/80a21fa9-f23d-0f7a-df9b-90c17912afdd.png)

### コンテナの指定
カタログ作成時には、Nutanixクラスタ上のコンテナを選択します。ドキュメントによると、ここで選択したコンテナは、VMの格納場所ではなく、Identity DiskとPersonal vDiskの置き場所になるそうです。なお、VMの実際の格納場所はベースイメージと同じコンテナになるそうです。
![15.PNG](https://qiita-image-store.s3.amazonaws.com/0/76398/5a748590-4d11-b205-73a8-573882c8532d.png)

### マスターイメージの指定
マスターイメージを選択する画面です。AVHの環境では、あらかじめマスターイメージのスナップショットを取得しておいてください。取得したスナップショットがマスターイメージとして使用されます。（※他のハイパーバイザーの場合には、VMを指定することも出来る。その場合にはその時点でスナップショットが自動取得され、それがマスターイメージとなる。）
![16.PNG](https://qiita-image-store.s3.amazonaws.com/0/76398/b7822d29-1d25-5aa2-8696-e6e94cb5971c.png)

## AHVからの見え方
### 展開されたVDI
MCSはVMに連番付きの名前をつけて大量展開できます。
![MCS-AHV.PNG](https://qiita-image-store.s3.amazonaws.com/0/76398/377fdfb6-9908-5305-fc9f-e4b6bbba76c9.png)

### VMにアタッチされるディスク
ちょっと分かりづらいですが、scsi:0がブートディスク（内部的に、Readはベースイメージから、Writeは差分ディスクへ行われる）、scsi:2がIdentity Disk(MCSの仕組み上使用される情報を格納している）です。
![MCS-Disks.PNG](https://qiita-image-store.s3.amazonaws.com/0/76398/00e32805-19ee-2fcc-e295-5e5ac0f586e7.png)

### Preparation VM
カタログの新規作成時や更新時に"Preparation - <カタログ名>"という名前のVMが一時的に現れます。これはMCSの内部処理をしているVMで、処理が完了すると自動的に消えます。
![image](https://qiita-image-store.s3.amazonaws.com/0/76398/fe895edb-a1f3-e8bf-518c-c62c88aa0542.png)

## 余談 (2016.07.20 更新)
~~当初、この連携をNutanix Community Edition(Version 2016.03.13)で試してみたのですが、MCSでのカタログ作成時にエラーが発生してしまいました(単に私の設定ミスで、上手く動いたという方がいらっしゃれば教えてください…)。CEのベースがAOS 4.6.1より以前のものなのが原因と考えられますので、次期マイナーバージョンをベースとしたリリースを待つことになりそうです。(そう遠くはないはず…）~~
Nutanix Community Edition Version 2016.06.30 で正常動作することを確認しました。