Nutanix CE(AHV)の仮想マシンとしてNested Nutanix CE(ESXi版)を動かしてみた

Nutanix CE5.18(ce-2020.09.16)からハイパーバイザーとしてESXiも選べるようになりました。

我が家ではHome Laboとして活用しているワークステーション(Dell Precision T7600)に導入しているNutanix Community Editonがあります。

ESXiの環境が欲しい時がありますので、NutanixCE(AHV)上でNestedでESXi版のNutanix CEを導入できるか試してみました。ESXiのバージョンはESXi6.7 Update3です。

結論からお伝えすると、すんなりとではないですが動作させることができました。

すんなりと行かなかった部分のトラブルシューティング含め、私が試したやり方を紹介します。

本記事は、Nutanix Advent Calendar 2021に投稿した記事(12/21)です。
今年のNutanix Meetupで紹介した内容で、記事を書いてからだ〜いぶ寝かしてましたが、せっかくなのであらためて公開します。

インストール(イメージング)編

1. ESXi ISOイメージをWEBサーバーにアップロード

私は端末として利用しているMacbookに組み込まれているApacheを有効化してISOイメージを登録しました。
ちゃんと接続できるかブラウザから試してみましょう。

2. AHVでNest用の仮想マシンを作成

次のようなパラメーターでPrismから仮想マシンを作成します。

Name:任意の仮想マシン名
vCPU:2
Number Of Cores Pre vCPU:2(以上)
Memorty:32
Boot Configration:Legacy BIOS
Disk:
CDROM ide.0 * CEのインストラーISOをマウント
DISK:sata.0 SIZE=64GiB *hypervisor
DISK:sata.1 SIZE=500GiB  *CVM
DISK:sata.2 SIZE=200GiB  *Data

NICについては標準では作成できないe1000モデルを割り当てるため、コマンドラインから作成します。
sshでCVMにログインし、次のコマンドを実行します。
acli vm.nic_create 仮想マシン名 model=e1000 network=ネットワーク名

つぎにAHVでNestedでHyoerviserを動作できるようにIntel-VTを有効化させます。
acli vm.update 仮想マシン名 cpu_passthrough=true

仮想マシンをPowerONします。
acli vm.on 仮想マシン名

3.Nutanix CE 5.18(ESXi)のインストール

Prismから仮想マシンのコンソールを起動します。
ISOイメージから起動し、インストーラーの画面を表示させます。 


Select Hypervisorで、「ESX」を選択します。
ISOファイルはWEBサーバから読み込ませます。

Select Disk to...については、次のような形で割り当てます。

sda SIZE=64GiB *hypervisor
sdb SIZE=500GiB  *CVM
sdc SIZE=200GiB  *Data

HyperviserとCVMに割り当てるIPを登録します。
Create single-node Cluser にチェック、DNS ServerにIPを登録し、Next Pageをクリックします。

CE EULAを最後まで流します。
*これをやらないとインストールがこけます。

I accept …にチェック、Startをクリックしてインストールを始めます。
しばし、時間がかかりますので、待ちます。

インストールが完了すると次のような画面が出ます。
Please unplug any virtaual or phisical media and reboot this machine.
Prismで仮想マシンからISOイメージをアンマウントし、Yを入力、Enterします。

再起動後、ESXiが起動します。


ESXi起動後、CVMの設定やクラスター作成などが行われ、何度か画面が変わります。
次の画面になるまで待ちましょう。


ホスト名のURLがNTNX-から始まる名前に変わればインストール成功です。

と、うまくいけばいいのですが・・・。
おそら構成に失敗して次のようなになるはずです。


To manage this host go to:
https://Faild-Install/

ここから、原因の調査と対応です。

トラブルシューティング編

私の環境では、すんなりイメージングが完了しませんでした。
ESXiホストの画面で、つぎのように表示されていますので、初期設定に失敗しています。
https://Faild-Install/

動きを調べたところ、CEのセットアップは次の流れで処理されています。

順番に切り分け、対処をしていきましょう。

4.構成失敗の調査と対応

私の環境では、CVMがつかむストレージの登録(Direct Path I/Oに対応していないデバイスが使われていて登録できない)に問題がありました。

原因調査

ブラウザでESXiのHost Clientにログインします。
ID:root Password:nutanix/4u

私の環境では、CVMが仮想マシンとして登録されていませんでした。


唯一作成されたデータストアを開くと、CVMのイメージは登録されています。
vmxファイルを選択して、インベントリに登録します。
Installingという仮想マシンが登録されました。

仮想マシンの構成を確認します。
ハードディスクが何も登録されていません。

商用版のNutanixはDirect Path I/Oで直接ストレージを管理しているため、この構成でも問題はありませんが嫌な予感がします…。

「管理」-「ハードウェア」-「PCIデバイス」を確認します。

AHVが提供しているSATAデバイスは「82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA AHCI Controller」として認識されていますが、パススルーに対応していません。
当然、CVMにもストレージが割り当てられていません。

この辺が怪しいですね。

ここで、CE5.18の初期設定スクリプトのログを調べていきます。

ESXiホストにsshでログインします。

初期設定のログを確認すると次のような内容でFailしています。
less /bootbank/Nutanix/firstboot/esx_first_boot_launchar.log
----
INFO Completed phase 'customize_svm_template'
INFO Running cmd ['ls /vmfs/devices/disks']
FATAL Fatal exception encountered:
Traceback (most recent call last):
  File "/bootbank/Nutanix/firstboot/esx_first_boot.py", line 2516, in <module>
    main()
  File "/bootbank/Nutanix/firstboot/esx_first_boot.py", line 2361, in main
    create_svm_vmx_and_attach_rdm_disks_ce()
  File "/bootbank/Nutanix/firstboot/esx_first_boot.py", line 1478, in create_svm_vmx_and_attach_rdm_disks_ce
    dev_paths = get_disk_locations_ce()
  File "/bootbank/Nutanix/firstboot/esx_first_boot.py", line 1012, in get_disk_locations_ce
    if wwn in disk:

TypeError: 'in <string>' requires string as left operand, not NoneType
INFO Running cmd ['touch /bootbank/Nutanix/firstboot/.firstboot_fail']
INFO Changing ESX hostname to 'Failed-Install'
INFO Running cmd ['esxcli system hostname set --fqdn Failed-Install']
INFO Running cmd ["kill $(ps | grep dcui | awk '{print $1}')"]
INFO Running cmd ['esxcli network ip interface ipv4 set -i vmk0 -I 192.168.0.160 -N 255.255.255.0 -t static']
INFO Running cmd ['esxcfg-route 192.168.0.1']
INFO Running cmd ['esxcli network ip dns server add -s 8.8.8.8']
----

WWNディスクが見つからず、RDMで登録ができない。というメッセージのようです。

原因特定

原因調査の項で調べた内容から、CVMが掴むストレージの登録( Direct Path I/Oに対応していないデバイスが使われていて登録出来ない)に問題があることが特定できました。
Pythonのスクリプトを眺めていくと、CEの場合は、Direct Path I/Oを使わず、RDMでディスクをマウントさせてもいいようです。

対策

ここから対策を取っていきます。

RDMでCVMにディスクをマウント
ESXiホストにSSHでログインします。
ESXiにマウントされているディスクを確認します。
[root@NTNX-76bb8c8b-A:~] ls -l /vmfs/devices/disks

total 2860507041
-rw-------    1 root     root     68719476736 Dec 27 14:34 t10.ATA_____QEMU_HARDDISK___________________________QM00005_____________
-rw-------    1 root     root       4161536 Dec 27 14:34 t10.ATA_____QEMU_HARDDISK___________________________QM00005_____________:1
-rw-------    1 root     root     60796436992 Dec 27 14:34 t10.ATA_____QEMU_HARDDISK___________________________QM00005_____________:10
-rw-------    1 root     root     4293918720 Dec 27 14:34 t10.ATA_____QEMU_HARDDISK___________________________QM00005_____________:2
-rw-------    1 root     root     262127616 Dec 27 14:34 t10.ATA_____QEMU_HARDDISK___________________________QM00005_____________:5
-rw-------    1 root     root     262127616 Dec 27 14:34 t10.ATA_____QEMU_HARDDISK___________________________QM00005_____________:6
-rw-------    1 root     root     115326976 Dec 27 14:34 t10.ATA_____QEMU_HARDDISK___________________________QM00005_____________:7
-rw-------    1 root     root     299876352 Dec 27 14:34 t10.ATA_____QEMU_HARDDISK___________________________QM00005_____________:8
-rw-------    1 root     root     2684354560 Dec 27 14:34 t10.ATA_____QEMU_HARDDISK___________________________QM00005_____________:9
-rw-------    1 root     root     536870912000 Dec 27 14:34 t10.ATA_____QEMU_HARDDISK___________________________QM00007_____________
-rw-------    1 root     root     536868814848 Dec 27 14:34 t10.ATA_____QEMU_HARDDISK___________________________QM00007_____________:1
-rw-------    1 root     root     858993459200 Dec 27 14:34 t10.ATA_____QEMU_HARDDISK___________________________QM00009_____________
-rw-------    1 root     root     10736369664 Dec 27 14:34 t10.ATA_____QEMU_HARDDISK___________________________QM00009_____________:1
-rw-------    1 root     root     10736369664 Dec 27 14:34 t10.ATA_____QEMU_HARDDISK___________________________QM00009_____________:2
-rw-------    1 root     root     42948624384 Dec 27 14:34 t10.ATA_____QEMU_HARDDISK___________________________QM00009_____________:3
-rw-------    1 root     root     794566852608 Dec 27 14:34 t10.ATA_____QEMU_HARDDISK___________________________QM00009_____________:4

RDM(物理互換モード)でCVMに割り当てるディスクを作成します。
vmkfstools -z /vmfs/devices/disks/物理ディスク名 /vmfs/volumes/NTNX-l
ocal-ds-76bb8c8b-A/マウント名.vmdk

つぎに、Host Clientから作成したディスクをCVMに登録します。

FirstBootスクリプトの編集

初期設定のスクリプトはここにあります。
/bootbank/Nutanix/firstboot/esx_first_boot.py

コミュニティの情報も調べると同じような問題を抱えている方がいたようで、参考にして編集していきます。
参考記事:ESXi Failed Install on HPE DL380 Gen9, CE 2020.09.16
https://next.nutanix.com/discussion-forum-14/esxi-failed-install-on-hpe-dl380-gen9-ce-2020-09-16-38898

esx_first_boot.pyを開いて編集します。
vi /bootbank/Nutanix/firstboot/esx_first_boot.py
1012行目:
---
      if wwn in disk:
          device_identifiers.append(disk)
          disk_dict[disk] = location
          location += 1
    # We remove esxi host disk from disk available to CVM
    elif disk[-3:] == ":10":
      print(disk[:-3])
      device_identifiers.remove(disk[:-3])
      disk_dict.pop(disk[:-3])
      location -= 1
---
つぎのように追記・編集します。
---
if (wwn != None and wwn in disk) and (disk not in device_identifiers):
      if wwn in disk:
          device_identifiers.append(disk)
          disk_dict[disk] = location
          location += 1
    # We remove esxi host disk from disk available to CVM
#    elif disk[-3:] == ":10":
#      print(disk[:-3])
#      device_identifiers.remove(disk[:-3])
#      disk_dict.pop(disk[:-3])
#      location -= 1
---

スクリプトの再実行

スクリプト処理が失敗した際に作成されたファイル「firstboot_fail」を削除します。
rm /bootbank/Nutanix/firstboot/firstboot_fail

あらためてスクリプトを実行します。
./esx_first_boot.py

しばらく待って、ESXiの画面でホスト名がNTNX-XXXXに変わることを確認します。

ログにfirstboot_successが表示されたら成功です。

5.Nutanixクラスタの作成

Nutanixクラスタの作成に失敗している場合があります。

CVMにSSHでログインします。
cluster status を実行し、クラスターが作成されていないことを確認します。
ERROR("Cluster could not be created. Please do so manually via...
手動でクラスタを作成します。
シングルノードでクラスタを作成する場合、次のコマンドを実行します。
cluster -s CVM_IP_Address --redundancy_factor=1 create

CVM: 192.168.0.161 Up, ZeusLeader
           Scavenger   UP [18388, 18528, 18529]
              Xmount   UP [18384, 18419]
           IkatProxy   UP [31891, 31996]
    IkatControlPlane   UP [652, 752]
       SSLTerminator   UP [852, 960]
      SecureFileSync   UP [970, 1149, 1150]
              Medusa   UP [2385, 2457, 2458, 2566, 3542]
  DynamicRingChanger   UP [7662, 7753, 7754, 7863]
              Mantle   UP [8131, 8236, 8237, 8307]
          VipMonitor   UP [13154, 13224, 13226, 13227, 13271]
            Stargate   UP [9670, 9710]
          InsightsDB   UP [10739, 10838, 10839, 10909]
InsightsDataTransfer   UP [10896, 11005, 11006, 11017, 11018, 11019, 11020]
               Ergon   UP [11066, 11163, 11164]
             Cerebro   UP [11301, 11469, 11470, 11754]
             Chronos   UP [11390, 11546, 11547, 11665]
             Curator   UP [11518, 11653, 11654, 11946]
              Athena   UP [11743, 11866, 11867]
               Prism   UP [12134, 12246, 12247, 12311, 12313, 12314, 12345, 12346, 13464, 13540]
                 CIM   UP [12360, 12544, 12545, 12875]
        AlertManager   UP [12597, 12754, 12755, 12933]
            Arithmos   UP [12998, 13132, 13133, 13299]
             Catalog   UP [13269, 13413, 13414]
           Acropolis   UP [13591, 13725, 13726]
               Uhura   UP [13867, 13979, 13980]
    SysStatCollector   UP [14014, 14126, 14127]
   NutanixGuestTools   UP [14363, 14444, 14445, 14535]
          MinervaCVM   UP [15663, 15798, 15799, 16409]
       ClusterConfig   UP [15745, 15880, 15881]
             Mercury   UP [15954, 16094, 16095, 16116]
            Aequitas   UP [16101, 16281, 16282, 16389]
         APLOSEngine   UP [16436, 16547, 16548]
               APLOS   UP [17144, 17263, 17269]
               Lazan   UP [17413, 17517, 17518, 17956, 17959]
              Delphi   UP [17631, 17741, 17742]
                Flow   UP [17775, 17869, 17870]
             Anduril   UP [17930, 18082, 18083]
               XTrim   UP [18091, 18145, 18147]
       ClusterHealth   UP [18190, 18325, 18326]
              Pithos   UP [7789, 7894, 7895, 7982]
                Zeus   UP [9246, 9278, 9279, 9283, 9292, 9310]
2020-12-27 16:59:48,280Z INFO cluster:2888 Success!

Success!が表示されたら構成完了です。

6.Prismからの設定

これでやっとPrismに入れます!
ブラウザでCVMのIPを開き、初期ID・パスワードでログインし、PrismからESXiに割り当てるデータストアなどの初期設定を行います。

と、非常に長い道のりでしたが、無事、Nutanix Community Edition 5.18でESXiの環境が作れました。

まとめ

Home Laboの環境としては、AHVで十分なのですが、ESXiの環境の確認もしたい時があります。
AHVでNestedで環境を作る場合いくつか注意点はありますが、頑張ればNestedの環境も導入できます。
ホストにAHVを入れて、Nutanixの新しい機能を評価、ESXi版の環境もNestedで作成して確認してみる。といった使い方が実現しました。

NestedでCEの環境を動かすとなるとそこそこなメモリが必要ですが、1台のホストでレプリケーションやDRのテストまでできるようになります。

Home Laboを作ってみたい方はぜひチャレンジしてみてください。 

コメント

コメントを投稿

人気の投稿