【VMware@SoftLayer】vMotion時の注意点

#はじめに
SoftLayer上にVMware ESXiをインストールしたベアメタルを立てて、社内のVMware環境からvMotionで行き来させてみたい、というのは、よくある話だと思います。
それに加え、vMotionの手順はわかっているのだが、SoftLayer上で動かす時の注意点を知りたいという話もよく聞くので、いくつか**Tips**を紹介できればと思います。

#vMotion 要件
一般的な準備の中でどのように進めれば良いか見ていきます。

##VMkernel ポートグループの設定
まずは各ホストで、vMotion 用に VMkernel ポートグループを構成します。
以下の選択肢があります。

###1. vmk0 の vMotion トラフィックを ON にする
こちらはvMotion時にNW帯域が逼迫するため、VMwareによると非推奨となっています。試す分にはこれでも問題ないかと思います。
「ホスト」->「管理」->「ネットワーク」->「VMkernel アダプタ」から設定できます。


###2. 新規VLAN上にvmk1を新規に作成する
事前にSoftLayerでVLANのオーダー・準備が必要です。
（参考：[【VMware@SoftLayer】ネットワーク準備編](http://qiita.com/khayama/items/58d53c2a28748e99f6a1))
デフォルトで与えられるVLANが「**タグなしVLAN（Native VLAN）**」であるのに対して、追加オーダーしてトランクしたVLANは「**タグありVLAN**」であることに注意する必要があります。
タグつきのトラフィックをトランクポートを通じて流すためには、タグありVLAN上でポートグループを作成するときに、VLAN IDを入力する必要があります。（タグなしVLAN（Native VLAN）のトラフィックに対しては、VLAN IDは「0」となります。）

![vmotion-1.png](https://qiita-image-store.s3.amazonaws.com/0/101361/c8e1b054-a73a-f6f6-a2c9-149129cfb095.png)


その後、VMkernel ポートグループの追加は、「ホスト」->「管理」->「ネットワーク」->「VMkernel アダプタ」->「ネットワークの追加」から設定できます。
この設定が未完了の場合は、以下のようなエラーが出ます。
<img width="959" alt="vMotionトラフィックエラー.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/128d5c82-df72-f058-b57d-fef5f40347d6.png">


##TCP/IP スタックの設定
こちらを利用すること管理トラフィックのゲートウェイとは異なるデフォルトゲートウェイを使用して、トラフィックを隔離できます。また、通常の管理トラフィックを受け持つ vmk0 とは別にルーティングテーブルを持つことができます。
[ESXi ホストの vMotion TCP/IP スタックへの vMotion トラフィックの配置](http://pubs.vmware.com/vsphere-60/index.jsp?topic=%2Fcom.vmware.vsphere.vcenterhost.doc%2FGUID-5211FD4B-256B-4D9F-B5A2-F697A814BF64.html)

SoftLayerでは、Portable Private IPを使って、割り当てます。
![vmotion-2.png](https://qiita-image-store.s3.amazonaws.com/0/101361/2a321cee-3fbe-556a-e7af-79303503fe59.png)

「ホスト」->「管理」->「ネットワーク」->「TCP/IP 構成」->「TCP/IP スタック構成の編集」から設定できます。
![vmotion-3.png](https://qiita-image-store.s3.amazonaws.com/0/101361/e20fceba-549d-cf3d-2c9b-fc1feed6d628.png)


#ジャンボフレーム
下記のベストプラクティスにも記載があるように、パフォーマンス改善にジャンボフレームを使用します。
>[vSphere vMotion のネットワークのベスト プラクティス](http://pubs.vmware.com/vsphere-60/index.jsp?topic=%2Fcom.vmware.vsphere.vcenterhost.doc%2FGUID-5211FD4B-256B-4D9F-B5A2-F697A814BF64.html)
**最高の vMotion パフォーマンスを得るには、ジャンボフレームを使用します。**
物理 NIC、物理スイッチ、および仮想スイッチを含む vMotion パスにあるすべてのネットワーク デバイスでジャンボ フレームが有効になっていることを確認します。

SoftLayerのベアメタルはジャンボフレームに対応しているので、SoftLayer内のESXiベアメタルホスト間のvMotionであれば、恩恵にあずかることができます。

「ホスト」->「管理」->「ネットワーク」->「VMkernel アダプタ」->「設定の編集」->「NIC 設定」から設定できます。
ここでMTUを9000に設定します。
<img width="363" alt="vmotion-4.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/d61147d9-3731-aabe-80c4-1c2587ae31aa.png">


##疎通確認
ホストにsshログイン後、ESXiコマンドにて確認します。
（参考：[vmkping コマンドを使用した VMkernel ネットワーク接続のテスト (2033190) | VMware KB](https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2033190)）

VMkernel アダプタの確認

```
#ホスト1
[root@ibmesx01:~] esxcfg-vmknic -l
Interface  Port Group/DVPort/Opaque Network        IP Family IP Address                              Netmask         Broadcast       MAC Address       MTU     TSO MSS   Enabled Type                NetStack            
vmk0       7                                       IPv4      10.xxx.xx.xxx                           255.255.255.192 10.xxx.xx.xxx   00:25:90:fa:9c:62 9000    65535     true    STATIC              defaultTcpipStack   
vmk4       vmservice-vmknic-pg                     IPv4      169.254.1.1                             255.255.255.0   169.254.1.255   00:50:56:6d:b1:1c 1500    65535     true    STATIC              defaultTcpipStack   
vmk2       106                                     IPv4      10.xxx.xxx.xxx                          255.255.255.192 10.xxx.xxx.xxx  00:50:56:63:b1:c8 9000    65535     true    STATIC              vxlan               
vmk3       87                                      IPv4      10.333.333.333                          255.255.255.192 10.xxx.xxx.xxx  00:50:56:64:15:80 9000    65535     true    STATIC              vmotion 

#ホスト2
[root@ibmesx02:~] esxcfg-vmknic -l
Interface  Port Group/DVPort/Opaque Network        IP Family IP Address                              Netmask         Broadcast       MAC Address       MTU     TSO MSS   Enabled Type                NetStack            
vmk0       6                                       IPv4      10.yyy.yy.yyy                           255.255.255.192 10.yyy.yy.yyy   00:25:90:fa:a6:be 9000    65535     true    STATIC              defaultTcpipStack   
vmk3       vmservice-vmknic-pg                     IPv4      169.254.1.1                             255.255.255.0   169.254.1.255   00:50:56:6a:86:81 9000    65535     true    STATIC              defaultTcpipStack   
vmk2       108                                     IPv4      10.yyy.yyy.yyy                          255.255.255.192 10.yyy.yyy.yyy  00:50:56:6a:a1:06 9000    65535     true    STATIC              vxlan               
vmk1       85                                      IPv4      10.111.111.111                          255.255.255.192 10.yyy.yyy.yyy  00:50:56:61:a2:ca 9000    65535     true    STATIC              vmotion  
```

VMkernelアダプタ同士のping 送信の応答を確認します。

- ホスト1からホスト2

```
[root@ibmesx01:~] vmkping ++netstack=vmotion 10.111.111.111
PING 10.111.111.111 (10.111.111.111): 56 data bytes
64 bytes from 10.111.111.111: icmp_seq=0 ttl=64 time=0.237 ms
64 bytes from 10.111.111.111: icmp_seq=1 ttl=64 time=0.222 ms
64 bytes from 10.111.111.111: icmp_seq=2 ttl=64 time=0.212 ms

--- 10.111.111.111 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.212/0.224/0.237 ms

[root@ibmesx01:~] vmkping ++netstack=vmotion 10.111.111.111 -d -s 8972
PING 10.111.111.111 (10.111.111.111): 8972 data bytes
8980 bytes from 10.111.111.111: icmp_seq=0 ttl=64 time=0.334 ms
8980 bytes from 10.111.111.111: icmp_seq=1 ttl=64 time=0.365 ms
8980 bytes from 10.111.111.111: icmp_seq=2 ttl=64 time=0.378 ms

--- 10.111.111.111 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.334/0.359/0.378 ms
```

- ホスト2からホスト1

```
[root@ibmesx02:~] vmkping ++netstack=vmotion 10.333.333.333
PING 10.333.333.333 (10.333.333.333): 56 data bytes
64 bytes from 10.333.333.333: icmp_seq=0 ttl=64 time=0.217 ms
64 bytes from 10.333.333.333: icmp_seq=1 ttl=64 time=0.211 ms
64 bytes from 10.333.333.333: icmp_seq=2 ttl=64 time=0.222 ms

--- 10.333.333.333 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.211/0.217/0.222 ms

[root@ibmesx02:~] vmkping ++netstack=vmotion 10.333.333.333 -d -s 8972
PING 10.333.333.333 (10.333.333.333): 8972 data bytes
8980 bytes from 10.333.333.333: icmp_seq=0 ttl=64 time=0.301 ms
8980 bytes from 10.333.333.333: icmp_seq=1 ttl=64 time=0.344 ms
8980 bytes from 10.333.333.333: icmp_seq=2 ttl=64 time=0.315 ms

--- 10.333.333.333 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.301/0.320/0.344 ms

```

#CPU互換性に関する注意
実際にvMotionを行う際に、CPU互換性のチェックが入るところがあります。
そこでAES-NIの設定のON/OFFが異なるホストの場合は、チェックでエラーとなります。
<img width="959" alt="AES-NIエラー.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/b9affc9d-78ed-843f-9c59-a2872370c762.png">


>[vMotion/EVC incompatibility issues due to AES/PCLMULQDQ (1034926) | VMware KB](https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1034926)

SoftLayerのベアメタルは、デフォルトでAES-NIが有効化されているはずですが、OFFとなっていた場合は設定の統一が必要です。
ただ、SoftLayerベアメタルのBIOSにはパスワードがかけられており、ユーザーはアクセスできません。
AES-NI設定を確認したい場合は、チケットで聞くことになりますが、その際に**再起動をともなうため、ホストを事前にメンテナンスモードにする**など、ご注意ください。
設定確認とともに、設定変更もお願いすると、変更された状態で起動します。

再起動せずにBIOSの設定を確認したい場合は、このリンクの手順にしたがってください。
[ShinobiLayer: SoftLayerのSupermicroのBIOS設定をテキスト形式で取得する方法 - Qiita](http://qiita.com/testnin2/items/976d1116eb2c404882ef)

#複数NIC
また、vMotionに複数NICを使用したい場合は、以下が参考になります。
[vSphere における複数 NIC の vMotion (2014840) | VMware KB](https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2014840)

#Cross-vCenter vMotion の要件
2つのvCenterがあるかたまりに対して、以下の要件になります。

- 双方でvCenter 6.0以降 (vCenter5.5ではESXi6.0はサポート外)
- 双方で同一バージョンのみ本機能をサポート
- 両方ESXiが6.0以降 (6.0からの新機能です)
- vSphere Enterprise plusライセンスが必要
- vCenter同士が拡張リンクモードで同一のSSOドメイン（必須ではありません）
    - 拡張リンクモードの場合、GUIが利用可能
    - 拡張リンクモードでない場合、CLIで実行可能

#参考
vMotionに必要なライセンス
[vSphere with Operations Management 6 および vSphere 6 のエディション](http://www.vmware.com/files/jp/pdf/vsphere_pricing.pdf)