NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

ESXi で Nested Nutanix CE を構成してみる。(ce-2019.11.22-stable 対応版)

Nutanix CE を ESXi 6.7 の VM にインストールについて、ひととおりの流れを記載してみます。なお、Nested Nutanix CE 特有の部分を中心に説明して、一般的な Nutanix CE インストールと共通する部分は簡単に済ませています。

★ただし・・・

  • この構成(ce-2019.11.22-stable でネステッド環境)だと、なぜか ゲスト OS がうまく起動できません。ただ、VM が起動できなくても Nutanix クラスタまで用意すれば手順確認などで使い道もあるので、いったん投稿公開しています。
  • ひとつ前バージョンの ce-2019.02.11-stable であれば、ゲスト OS まで起動可です。

今回の環境

  • Nutanix CE のバージョンは、ce-2019.11.22-stable。
  • ESXi 6.7 U3。管理には vCenter Server 6.7 U3 の vSphere Client (HTML5)を使用。

目次(手順の流れ)

1. Nutanix CE インストーラ(ディスク イメージ)の配置

Nutanix CE インストーラのファイル(ce-2019.11.22-stable.img.gz)を、ESXi のデータストアに配置して、.vmdk として利用できるようにします。

まず、ESXi のデータストアに、SCP やデータストア ブラウザ経由で .img.gz ファイルを転送します。

ESXi に SSH でログインして、.img.gz を配置したディレクトリに移動します。今回は、ds-nfs-repo-01 データストア直下に img ディレクトリを作成(/vmfs/volumes/ds-nfs-repo-01/img/)し、そこにファイルを配置しています。

[root@esxi:~] vmware -vl
VMware ESXi 6.7.0 build-15160138
VMware ESXi 6.7.0 Update 3
[root@esxi:~] cd /vmfs/volumes/ds-nfs-repo-01/img/

ファイルを確認します。.gz で圧縮されたままの場合は、ここで gunzip コマンドで解凍しておきます。 ここで、展開後のファイルサイズを確認しておきます。(7444889600 バイト)

[root@esxi:~] gunzip -k ce-2019.11.22-stable.img.gz
[root@esxi:~] ls -l
total 12226480
-rw-r--r--    1 root     root     7444889600 Nov 23 03:15 ce-2019.11.22-stable.img
-rw-r--r--    1 root     root     5075020776 Nov 28 13:01 ce-2019.11.22-stable.img.gz

.img ファイルを ESXi の VM で使用するため、VMDK の ディスクリプタ ファイルを作成するために、一時的に temp.vmdk を作成します。ここの「-c」オプションでは、ひとつ前に確認した .img ファイルのサイズを指定します。

[root@esxi:~] vmkfstools -c 7444889600 -d thin temp.vmdk
Create: 100% done.
[root@esxi:~] ls -l temp*vmdk
-rw-------    1 root     root     7444889600 Feb 24 10:53 temp-flat.vmdk
-rw-------    1 root     root           469 Feb 24 10:53 temp.vmdk

ディスクリプタ ファイル(temp.vmdk)を、vi もしくは sed などで編集します。

編集内容は下記です。

  • temp-flat.vmdk を .img のファイル名に置換。
  • ddb.thinProvisioned の行を削除。
[root@esxi:~] cp temp.vmdk ce-2019.11.22-stable.vmdk
[root@esxi:~] vi ce-2019.11.22-stable.vmdk

または

[root@esxi:~] cp temp.vmdk ce-2019.11.22-stable.vmdk
[root@esxi:~] sed -i 's/temp-flat.vmdk/ce-2019.11.22-stable.img/' ce-2019.11.22-stable.vmdk
[root@esxi:~] sed -i '/ddb.thinProvisioned/d' ce-2019.11.22-stable.vmdk

編集前後の .vmdk ファイルの差分です。

[root@esxi:~] diff temp.vmdk ce-2019.11.22-stable.vmdk
--- temp.vmdk
+++ ce-2019.11.22-stable.vmdk
@@ -6,7 +6,7 @@
 createType="vmfs"

 # Extent description
-RW 14540800 VMFS "temp-flat.vmdk"
+RW 14540800 VMFS "ce-2019.11.22-stable.img"

 # The Disk Data Base
 #DDB
@@ -16,6 +16,5 @@
 ddb.geometry.heads = "255"
 ddb.geometry.sectors = "63"
 ddb.longContentID = "ab9b9fb87d7b493c617507f9fffffffe"
-ddb.thinProvisioned = "1"
 ddb.uuid = "60 00 C2 9a 76 59 55 9a-2e 43 4b 8e 60 88 d6 31"
 ddb.virtualHWVersion = "14"

.vmdk が正しく .img を認識できていること確認します。

[root@esxi:~] vmkfstools -e ce-2019.11.22-stable.vmdk
Disk chain is consistent.

不要になった temp.vmdk ファイルを削除します。

[root@esxi:~] rm temp*.vmdk

ちなみに、ここで作成した .vmdk ファイルですが、vmkfstools で作成しなくても、下記のファイルをそのまま使っても大丈夫です。(今回の .vmdk ファイル作成方法の紹介のためにあえて手順を記載しました)

gist.github.com

2. VM の作成

下記のような設定にします。設定項目は、ESXi の Host Client ではなく、vCenter の vSphere Client での表記です。

仮想マシンのバージョン、ゲスト OS の種類

  • ESXi 6.7 以降 (VM バージョン 14 / vmx-14)
  • ゲスト OS の選択: Linux → CentOS 7 (64 ビット)
    →これは、Nutanix CE に含まれる AHV のベースが CentOS 7 のため。

vCPU

  • CPU: 4
    物理CPUコアが2でも、Hyper-Threading で 4 スレッドあれば設定可能。
  • Nested Hypervisorとして使用(VM の中のゲスト OS で KVM を使用)するので「ハードウェア アシストによる仮想化をゲスト OS に公開」チェックを ON にする。
  • EVC(Enhanced vMotion Compatibility)を利用していない環境では、ネステッド環境で CVM が起動できない問題を回避するために、「仮想 CPU のパフォーマンス カウンタの有効化」のチェックを ON にする。

f:id:gowatana:20200224204251p:plain

メモリ

  • メモリ: 16GB
    VMのメモリ容量を大きくするとCVMのメモリ割り当てが大きく(16GB)なるので、Nutanix CE インストール時は最少の 16GB にしておく。
    できればさらにメモリ容量を割り当てたほうが Nutanix CE が落ちにくくなる。(CE の推奨は 32GB 以上)

仮想 SCSI コントローラ / 仮想ハード ディスク

  • 仮想 SCSI コントローラ: VMware 準仮想化
  • 仮想ハード ディスク: この時点では、いったんすべて削除します。

ポートグループ / vNIC

  • 仮想NIC のアダプタ タイプは、VMXNET3 を選択する。(デフォルトのまま)
  • ポートグループでは、VLAN ID 4095 で無差別(プロミスキャス)モードが有効(承諾)のポートグループを作成しておき、それを指定する。
  • vDS を利用している場合は VLAN ID 4095 が設定できないので、VLAN トランク設定(VLAN ID は 0-4094 など)にする。
  • AHV の仮想ネットワークで複数の VLAN ID 0 だけを使用するのであれば、デフォルトで作成されるポートグループ(VM Network)でもよいが、その場合も vSwitch0 で、無差別 モード 承諾の設定が必要。

3. VM のディスク構成変更

先ほどの手順で作成した、ce-2019.11.22-stable.vmdk と、新規の VMDK 2つを、VM に接続します。

VM の BIOS での起動設定を変更するのが面倒なので、SCSI デバイスノードの順序が Nutanix CE のインストーラ イメージ、新規 VMDK#1(200GB)、新規 VMDK#2(500GB) の順となるように仮想ディスクを追加します。

VM の「設定の編集」で、ディスク構成を変更します。

  1. VM の「設定の編集」を再度ひらく。
  2. 「既存のハードディスク」で ce-2019.11.22-stable.vmdk を追加する。
    → ハードディスク 1 で SCSI(0:0) になる。
  3. 「新規ハード ディスク」で 200GB の仮想ディスクを Thin Provisioning で追加。
    → ハードディスク 2 で SCSI(0:1) になる。
  4. 「新規ハード ディスク」で 500GB の仮想ディスクを Thin Provisioning で追加。
    → ハードディスク 3 で SCSI(0:2) になる。
  5. 「OK」で VM の設定を保存する。

合計、3つのディスクを追加した状態です。大容量の VMDK を作成する場合は、Thin Provisioning でも空き容量が必要なので、十分に空き容量のあるデータストアを用意しておきます。

f:id:gowatana:20200224204622p:plain

なお、何らかの事情でインストーラと他 2つの VMDK のディレクトリ配置が違う場合は、この時点で VM のクローンか、VM / 仮想ディスクのコールド マイグレーションを実行しておくと、VM 名ディレクトリの中にまとめられます。

4. インストーラ実行準備

VM 起動とキーボード設定

Nutanix CE をインストールする VM を起動します。
インストーラ―が起動するので、一度 install ユーザ(パスワードなし)でログインして、最初の日本語キーボード設定(jp106 など)→ Proceed をして、そのあとのメニューで Cancel で抜けます。これで、この後のコンソールでのファイル編集を、日本語キーボード設定で作業できるようになります。

インストーラむけディスク認識調整

Nutanix CE のインストーラから、ハードディスク 1 (/dev/sdb) のディスクが SSD として認識されるように調整します。

root / nutanix/4u でログインします。

lsblk コマンドなどで、デバイス認識が下記になっていることを確認しておきます。

  • sda(/dev/sda)→ 約7GB
  • sdb(/dev/sdb)→ 200GB
  • sdc(/dev/sdc)→ 500GB

/dev/sdb を SSD として認識するように下記のように設定します。

[root@localhost ~]# echo 0 > /sys/block/sdb/queue/rotational
[root@localhost ~]# cat /sys/block/sdb/queue/rotational
0

CVM の設定に反映される default.xml の編集

下記のファイルを vi などで編集しておきます。
/home/install/phx_iso/phoenix/svm_template/kvm/default.xml

編集個所は下記です。(8行目あたりから)

1か所目
machine='pc'

machine='pc-i440fx-rhel7.2.0'

2か所目(これは追記)

  • これは「仮想 CPU のパフォーマンス カウンタの有効化」のチェックを ON にできない(EVC を有効にしている)場合に必要です。
  • 日本語キーボードに変更していない場合は、2行上のもの(<apic eoi='on'/>)をコピー&編集すると楽かもしれません。

<features>
  <acpi/>
  <apic eoi='on'/>
  <pae/>
</features>

<features>
  <acpi/>
  <apic eoi='on'/>
  <pae/>
  <pmu state='off'/>
</features> 

(既に失敗している場合のみ)以前のインストールのクリーンアップ

以前にインストールが失敗している場合は、下記のスクリプトを実行します。

[root@localhost ~]# ./cleanup.sh

root ユーザからのログアウト

ファイルを編集したら、いったん root ユーザからログアウトします。

[root@localhost ~]# exit

5. Nutanix CE のインストール

install ユーザでログインすることで、インストールを進めます。

  1. install ユーザでログインする。
  2. キーボード指定: jp106
  3. Host(AHV)と CVM のアドレス(IP アドレス、サブネットマスク、Gateway)を指定する。
  4. 「Create single-node cluster ?」のチェックは外したままにする。
    Single-node Cluster を作成するつもりでも、これまで失敗することが多かったので後から cluster create コマンドで手動構成しています。
  5. CE EULA をすべて読んだうえで(下までスクロールしたうえで)ライセンス同意して「Start」する。 

しばらく待つと、インストールが完了します。

f:id:gowatana:20200224213944p:plain

6. Nutanix クラスタの作成

CVM にログインして、cluster create コマンドでクラスタを作成します。
今回は、シングル ノード クラスタです。「-s」には、CVM の IP アドレスを指定します。シングル ノード クラスタの場合は、「Do you want to proceed?」と確認がるので、Y で進めます。

nutanix@NTNX-47bf49fe-A-CVM:192.168.20.31:~$ cluster -s 192.168.20.31 create
2020-02-24 12:46:05 INFO cluster:2784 Executing action create on SVMs 192.168.20.31
Atleast 3 nodes are required for cluster creation!. 1 IPs provided. Do you want to proceed? (Y/[N]): Y

クラスタの作成が成功したら、Web ブラウザから CVM に https 9440 番ポートでアクセスします。admin / nutanix/4u でログインした直後に、admin ユーザのパスワード変更、Nutanix Community アカウント認証があります。

f:id:gowatana:20200224221616p:plain

7. AHV への VMware Tools のインストール

Nested 環境では、VMware Tools がインストールされていると便利なので、AHV にインストールしてしまいます。AHV は CentOS 7 ベースなので、VMware Tools としてopen-vm-tools を yum install します。

Nutanix CE の AHV には、DNS サーバと、YUM リポジトリがデフォルトで登録されるので、root ユーザでログインすれば、yum install コマンドで RPM がインストールできてしまいます。(ただし、商用の Nutanix では、CentOS の YUM リポジトリからのインストールは NG です)

タイミング(マルチノードクラスタを構成した時になってた)によっては、AHV の /etc/resolv.conf ファイル自体がなくなって名前解決できなくなっていることもあります。その場合は /etc/resolv.conf を作成して「nameserver <DNS サーバアドレス>」を追記して、名前解決できるようにします。

[root@NTNX-47bf49fe-A ~]# yum repolist
Loaded plugins: fastestmirror, post-transaction-actions
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
repo id                             repo name                             status
base/7/x86_64                       CentOS-7 - Base                       10,097
extras/7/x86_64                     CentOS-7 - Extras                        323
updates/7/x86_64                    CentOS-7 - Updates                     1,465
repolist: 11,885

それでは、インストールします。

[root@NTNX-47bf49fe-A ~]# yum install -y open-vm-tools

サービスを起動しておきます。

[root@NTNX-47bf49fe-A ~]# systemctl start vmtoolsd

これで、vSphere Client / Web Client から AHV の IP アドレスを確認したり、シャットダウンできるようになります。

ちなみに、CVM は AHV の上で起動されるものなので、VMware Tools はインストールしません。

8. ユーザ VM の設定修正

ネステッド環境で VM を起動するために、ユーザ VM(CVM 以外の VM)でも machine_type を pc → pc-i440fx-rhel7.2.0 に変更が必要です。
(ちなみに CVM は、インストーラ実行準備のときに pc-i440fx-rhel7.2.0 に変更ずみです。)

パターン A(AHV で machine type を変更)

KVM / libvirt では、デフォルトの machine_type をパラメータ変更できないようなので、/var/cache/libvirt/qemu/capabilities/*.xml ファイルを編集します。
★ただし、ce-2019.11.22-stable + ESXi 6.7 U3 のネステッド環境では、この設定でも VM が suspend になってしまうようです。(そもそも machine_type pc-i440fx-rhel7.2.0 にしても NG)

[root@NTNX-47bf49fe-A ~]# ls /var/cache/libvirt/qemu/capabilities/*.xml
/var/cache/libvirt/qemu/capabilities/3c76bc41d59c0c7314b1ae8e63f4f765d2cf16abaeea081b3ca1f5d8732f7bb1.xml

ファイルを編集します。

# cp -i /var/cache/libvirt/qemu/capabilities/*.xml temp.xml
# sed -i "s/alias='pc'//g" /var/cache/libvirt/qemu/capabilities/*.xml
# sed -i "s/'pc-i440fx-rhel7.2.0'/'pc-i440fx-rhel7.2.0' alias='pc'/g" /var/cache/libvirt/qemu/capabilities/*.xml

編集したファイルの差分です。

[root@NTNX-47bf49fe-A ~]# diff /var/cache/libvirt/qemu/capabilities/*.xml temp.xml
217c217
< <machine name="pc-i440fx-rhel7.3.0" hotplugcpus="yes" maxcpus="240"></machine>
---
> <machine name="pc-i440fx-rhel7.3.0" alias="pc" hotplugcpus="yes" maxcpus="240"></machine>
223c223
< <machine name="pc-i440fx-rhel7.2.0" alias="pc" hotplugcpus="yes" maxcpus="240"></machine>
---
> <machine name="pc-i440fx-rhel7.2.0" hotplugcpus="yes" maxcpus="240"></machine>  

Nutanix CE を AHV から(CVM ごと)再起動します。

[root@NTNX-47bf49fe-A ~]# reboot

パターン B(VM ごとに machine_type を変更)

Prism や acli などで VM を作成した後、下記のように acli で設定修正します。

  • 対象のユーザ VM を停止した状態で設定します。
  • 設定ずみの VM をクローンした場合も、再設定が必要です。
CVM$ acli vm.update VM名 extra_flags=machine_type=pc-i440fx-rhel7.2.0

★ただし、この方法でも、ce-2019.11.22-stable + ESXi 6.7 U3 のネステッド環境では、VM が suspend になってしまうようです。

パターン C(VM を UEFI にする)

ユーザ VM の設定を、Legacy BIOS → UEFI に変更してから起動します。

いまのところ、ce-2019.11.22-stable + ESXi 6.7 U3 のネステッド環境では、この方法だけ、ユーザ VM が起動できています・・・

f:id:gowatana:20200225011116p:plain

★ただし、この方法でも、ce-2019.11.22-stable + ESXi 6.7 U3 のネステッド環境では、VM は起動できるものの、ゲスト OS のブート途中で止まってしまうような・・・

f:id:gowatana:20200226085944p:plain

ゲスト OS なしで 2048 は利用できます。

f:id:gowatana:20200226090326p:plain

以上。

©2019 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。