検証用 Nested ESXi の構成を考える
vSphere の性能では無く機能を検証する際に、ESXi 自体を仮想マシンにインストールすると非常に便利なことが多々あります。以下に、その構成方法と手順を備忘録的に残してみます。
- 仮想マシンを作成
- CPU
- 2 vCPU / 1 Socket
- 「ハードウェア仮想化」にチェック
- メモリ
- 8GB
- ストレージ
- LSI Logic SAS
- HDD 8GB、シンプロビジョニング
- ネットワーク
- NIC 5本
- MAC アドレスは手動
- e1000e を利用 (実は vmxnet3 も利用できますが、5.1 時代に何度か PSOD に見舞われたので敬遠気味)
- その他
- 「ゲストOS/バージョン」はその他、VMware ESXi 5.x
- 作成時は Windows
2008 R22012 (e1000e は 2008 R2 では選択できません) を選択し、作成後変更する
- 作成時は Windows
- 「ゲストOS/バージョン」はその他、VMware ESXi 5.x
- CPU
- ESXi の設定
- Shell/SSH の有効化
- IP 関連の設定
- IPv6 無効化
- iSCSI 有効化
- Shell/SSH の警告を無視
- LargePage 無効化
- VMware Tools のインストール
- 仮想スイッチ/仮想ポートグループの無防備化 ※ 09.May.2014 追記
これを esxi-01、esxi-02 といったように個別に作成します。
補足
ネットワークについて
NIC は検証で何に利用するかは事前に決めていないので、とりあえずで 5 本用意しています。
MAC アドレスを手動設定しているのは、クローン後も同じ MAC アドレスを使いたいためです。ESXi は /etc/vmware/esx.conf にハードウェア情報を残しますが、ここに MAC アドレスの情報も保存されます。クローン後の vCenter から割り当てられた MAC アドレスの設定を都度 esx.conf に設定するのは手間なため固定しています。もちろん、同じ MAC アドレスを持つ仮想マシンが L2 上で起動すると問題がありますが、検証なのでそうそう多くの仮想マシンを立ち上げないという前提があります。同時に様々な環境を立ち上げたい場合は、異なるポートグループを仮想マシンの NIC を割り当ててあげれば問題を回避できます。クローンと同時にポートグループを作成したい場合は、PowerCLI や vCenter Orchestrator を使って自動化させます。
Home Lab では以下のような構成で、コピー環境を Gateway VM を介して接続しています。
- 各環境は AD、vCenter Server、Nested ESXi x 2、QUADstor が最小セット
- 必要に応じて、vCNS、vCD、vCAC、vCO、Zabbix、F5 BIG-IP、NTAP cDOT、EMC VNX/Isilon/ViPR などの VM を追加
- Gateway の内側 (水色側の) NIC と上記各 VM の NIC は手動で MAC アドレスを固定
- Gateway は 192.168.0.0/16 からのパケットを 10.0.0.0/8 のセグメントに転送するよう NAPT する
- Gateway の外側の IP アドレスのポート 3389 は AD に転送するよう DNAT させる
- 水色部分に含まれる NIC は各々別の VLAN ID を持つポートグループに接続させる
知っている方が見れば まんま vCD ですが、vCenter Orchestrator の勉強も兼ねて コピー環境の自動作成は vCenter Orchestrator のみで実装しています。
iSCSI 有効化
Nested 環境ならば使うストレージは iSCSI、NFS、VSAN、Local のいずれかなのですが、iSCSI を使うことが多いので予め有効にしておきます。
esxcli iscsi software set --enabled true
Shell/SSH の警告を無視
利便性を優先して Shell と SSH を有効にしているので、これらの警告も予め無効にしておきます。
esxcli system settings advanced set --option=/UserVars/SuppressShellWarning --int-value=0
LargePage 無効化
検証なので速度はいらず、とにかくメモリを節約したいので TPS (透過的メモリ共有) を効かすために LargePage をオフにします。LargePage は従来の 4KB 単位のメモリアクセスを 2MB に拡大してメモリアクセスを高速化する機能ですが、TPS は言い換えればメモリの重複排除ですので単位が大きいとハッシュが一致しないので、全く効果が無いことになります。検証環境では速度は割り切っても良いとして、これをデフォルトで 4KB にする設定を仕込みます。母艦の ESXi にも設定しておくと良いです。Scan 間隔も標準の1時間から10分に縮めておきます。
esxcli system settings advanced set --option=/Mem/AllocGuestLargePage --int-value=0
esxcli system settings advanced set --option=/Mem/ShareScanTime --int-value=10
なお、AllocGuestLargePage を On にしていても、メモリ使用量が多くなると ESXi は自動的に 2MB アクセスから 4KB アクセスに切り替えます。
VMware KB: Transparent Page Sharing (TPS) in hardware MMU systems (1021095)
VMware Tools のインストール
ブラウザ越しに VMware 製品を簡単に試すことが出来る ProjectNee や、vmworld や vForum で行われている Hands-on Lab (HOL) では Nested された ESXi が使われています。ESXi に vmxnet3 のドライバが仕込まれているのは半ば確信犯でありますが、VMware Labs (flings) から ESXi 用の VMware Tools がリリースされています。当然ながらサポート対象外なので割り切って便利さを享受しましょう。
まず、vib ファイルを こちらのサイト からダウンロードします。ダウンロードしたファイルを ESXi の /tmp などに SCP などでアップロードします。そして esxcli コマンドでインストールし再起動させます。
esxcli software vib install --viburl /tmp/esx-tools-for-esxi-9.7.1-0.0.00000.i386.vib --no-sig-check
reboot
vib ファイルのバージョン番号や no-sig-check オプションで証明書の確認を飛ばすあたりからアウトローな香ばしさが漂っていますが、これによって ESXi の仮想マシンであろうとも「仮想マシンを右クリック」➡「ゲストのシャットダウン」のコンボが可能になります。検証環境では使わない手はありません。
仮想スイッチ/仮想ポートグループの無防備化 ※ 09.May.2014 追記
ここままでも Nested ESXi の vmk0 とは通信できますが、新しく作成した vmk1 は外部と通信できない、あるいは、Nested ESXi の上に作成した仮想マシンが外部と通信できない、という如何ともしがたい検証環境となってしまっています。
これは ESXi の仮想スイッチが MAC アドレスの学習テーブルを持っていないことに起因します。仮想スイッチ、あるいは、仮想ポートグループのセキュリティ設定を以下のようにすることで、新しい vmk や Nested ESXi 上の仮想マシンが外部と通信できるようになります。
- 無差別モード: 承認
- MAC アドレス変更: 承認
- 偽装転送: 承認
修正履歴:
06.May.2014 e1000e に関する件を Windows 2008 R2 から Windows 2012 に修正
09.May.2014 仮想スイッチのセキュリティ設定に関する記述を追加