ミニPCでNutanixCE on ESXiのクラスタを作成する（できない・・・

# Nutanixでクラスタを構築したい

前回といっても大分前にThreadripperを用いてESXiを構築しましたが、
やはりメインPCがパワフルなので昨今の電気代も気になるところ。

そこで最近気になっていたNutanixを逸般の誤家庭にも導入できるようにしようと思い立ち記事を作ってみました
ただし、逸般の誤家庭向けとなるのでNutanixCE(Nutanix Community Edition)での記事になります。
また、NutanixCEでは非公式ですが、ESXiでのインストールを行います。
※ESXiも7.0以降だとUSBメモリへのインストールは総書込容量の問題があるので6.7を入れます。

# そもそもNutanixとは
ハイパーコンバージドインフラストラクチャーのひとつで
今までの3層構造のクラスタ構成からボトルネック部分を１つのサーバですべて賄って
増強しやすいようにしちゃえみたいなイメージなのかなと認識している（あまりよくわかってません
当初CVMとHypervisor(ESXi/AHV)の関係がわかってませんでした。

# クラスタ構成でなにすんの？
VPNサーバをメインPCから切り離してクラスタ化させたい！
HCIで仮想マシンの冗長化を確認したい！

# クラスタ用のPC構成
2台構成で構築予定（本当は3台構成か1台のクラスタグルーブ2になる？）
今後、同じ人がいたら参考用にスペックを記載します。

## DELL Optiplex 3070 MFF 
| スペック | 詳細 | 備考 |
|:-:|:-:|:--|
|CPU   |Intel Core i5-9500T 2.20GHz|後でNutanixCEの罠にはまる|
|メモリ|32GB(16GB x 2)|64Gbの人柱にはなれませんでした|
|HotTier|NVMe 1TB SSD|Nutanixの説明でHotTierとか見るけどインストールの時はCVMでいいのか？|
|ColdTier|2.5 in 1TB SSD|Nutanixの説明でColdTierとか見るけどインストールの時はDataでいいのか？|
|LAN| Onbord 蟹LAN |オンボードNIC|外向け|
|USB-LAN| 2.5Gbe 上海問屋DN-916196 |クラスタ通信用は2.5Gbpsがいいと思い追加|
|USB-メモリ| SanDisk Ultra Luxe 64GB |ESXi 起動用|

NVMe1TBがなんかCVM上で認識しないのかクラスター構築中にエラーがでるので大人しくデフォルト設定を行う

CPU自体はメモリを64GBまで認識するっぽいけど、無駄な出費が怖くて人柱にはなれませんでした。

::: note warn
BiosでSATA設定回りでRAIDになっているとNVMeが認識されないので注意
:::



## HP ProDesk 400 G4 DM
| スペック | 詳細 | 備考 |
|:-:|:-:|:--|
|CPU   |Intel Core i3-8100T 3.1GHz||
|メモリ|32GB(16GB x 2)|64Gbの人柱にはなれませんでした|
|HotTier|NVMe 1TB SSD||
|ColdTier|2.5 in 1TB SSD||
|LAN| Onbord 蟹LAN |オンボードNIC|外向け|
|USB-LAN| 2.5Gbe 上海問屋DN-916196 |クラスタ通信用|
|USB-メモリ| SanDisk Ultra Luxe 64GB |ESXi 起動用|
|ESXiのIP|192.168.11.161||
|CVMのIP|192.168.11.171||

# 事前準備
事前準備としてESXiのカスタムISOを作成し、自前のWebサーバからダウンロードできるようにする必要があります。


1. (つまったポイント)ESXiのカスタムISOを作成する
ESXiにはミニPCのLANドライバ（realtek社製）の対応がないので、
ドライバをISOに追加する必要があります。
久しぶりにカスタムISOを作成するため、忘れていた　＆　なんか動かないで大変でした。

ESXi-Customizer-PS-v2.6.0.ps1を使用しています。
ここらへんは多分いろいろなサイトで情報はあるかと思います。

```powershell
PS C:\VMWare\comm2> .\ESXi-Customizer-PS-v2.6.0.ps1 -v67 -vft -load net55-r8168
```
→なんかエラーがでる

-sipオプションをつけてバージョンを指定するとうまいことISOが作成できたので後からESXiのバージョンは上げることにする
```powershell
PS C:\VMWare\comm2> .\ESXi-Customizer-PS-v2.6.0.ps1 -v67 -pkgDir C:\VMWare\comm2\pkgVIB -sip -nsc
This is ESXi-Customizer-PS Version 2.6.0 (visit https://ESXi-Customizer-PS.v-front.de for more information!)
(Call with -help for instructions)
＝＝省略＝＝

Getting Imageprofiles, please wait ... [OK]

Select Base Imageprofile:
-------------------------------------------
＝＝省略＝＝
43 : ESXi-6.7.0-20191204001-standard
＝＝省略＝＝
-------------------------------------------
Enter selection: 43
```
※ちなみに43にしたのは無償版のダウンロードで同じリビジョンだったため。

```powershell
PS C:\VMWare\comm2> dir
    ディレクトリ: C:\VMWare\comm2
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2023/03/08     11:06                pkgVIB
-a----        2023/03/08     11:34      353675264 ESXi-6.7.0-20191204001-standard-customized.iso
-a----        2023/03/07      8:37          21003 ESXi-Customizer-PS-v2.6.0.ps1
```

2. 作成したESXiのイメージをWebサーバに上げる
Nutanixのインストール中に指定する必要があるのでCentOSでapacheを起動して、
ISOをダウンロードできるようにしておく。

3. Nutanix CEのISOのダウンロード
Nutanix CEをダウンロードしてRufsでUSBメモリにインストーラを書き込みます。
ここらへんの案内はいろいろなサイトで行われてるのでしません。
::: note info
USBメモリが今回SanDisk製のメモリでどれがどれだかわかりにくくなってしまったので、
事前にインストーラ用のUSBのハードウェアIDをメモっておくと安全
:::



# いざ構築開始
## 起動

## phoenixが起動するので入力していく
### Select Hypervisor
ESXiを選択しURLは自前のWebサーバのURLを指定する。
### Disk Selection
Nutanixの説明とかで載ってるHot TierとかCold Tierとか無いんだが？！
ディスクが認識されていることを確認する。(BiosでSATAがRAID設定になっているとそもそも認識しなくて苦労した）

| Device | Model | Use | 備考 |
|:-:|:-:|:--|:--|
|sdb   |SanDisk USB| [I]|インストーラ|
|sda|SanDisk SSD PLUS| [D]|2.5inchSSDなのでデータ用？|
|nvme0n1|MSI M371| [C] |速度が速いほうがいいと思ったのでCVM用|
|sdc| SanDisk USB |[H]|ESXi入れる用|

※CVMとData用がそれぞれHot TierなのかCold Tierなのかが結局わからずどこに書いてあるんだろう・・・
→2023/04/04追記 CVM用が早いSSD、Data用が遅いSSD（HDD）でオッケーと判明！


### IPアドレス
各種必要な情報を設定する。

### シングルノードの作成
ESXiの場合はチェック無しが推奨されているのでチェックしない。

### 利用規約
全部ちゃんと読まないとインストール途中で戻されるので注意
ライセンスにチェック入れてNext

::: note warn
再起動前にチェック
USBにインストールを行う場合、再起動を行う前に次の手順を実行する
:::


## 再起動前に修正を行う
ESXiをUSBブートで行うので、起動設定ファイルを修正する
```shell
[root@phoenix ~]# mount /dev/sdd5 /mnt/bootbank/
[root@phoenix ~]# vi /mnt/bootbank/Nutanix/firstboot/first_boot_config.json
247 use_vmfs_datastore": false,
arrow (mark or symbol)
247 use_vmfs_datastore": true,
[root@phoenix ~]# umount /mnt/bootbank
[root@phoenix ~]# reboot
```

## 起動後
多分NVMeの反映に失敗するので
ホストからNVMeをパススルー許可する。


## 2.5GbeのLANをESXiにインストールする
[USB-RealTek2.5GbEのインストール](https://flings.vmware.com/usb-network-native-driver-for-esxi#instructions "ESXi 用の USB ネットワーク ネイティブ ドライバ")
ESXi670-VMKUSB-NIC-FLING-39203948-offline_bundle-16780994.zip
WinSCPで/tmp/RTL8156/配下に格納する

ESXiにSSHで接続する
```shell
esxcli software vib install -d /tmp/RTL8156/ESXi670-VMKUSB-NIC-FLING-39203948-offline_bundle-16780994.zip
```

# 再起動を行う
USB-NICのドライバとNVMeのパススルー設定を行ったら再起動
ESXiにSSHで接続する
```shell
reboot
```


#再度CVMをインストールするために
失敗履歴ファイルを削除してfirstboot.pyを再実行する
※起動に失敗していたのが何故かメモリを32GBしかないのに48GB割り当てようとしていたので、
ESXiのサイトからCVMの割り当てメモリを16GBに修正
ESXiにSSHで接続する
```shell
rm -f .firstboot_fail
./esx_first_boot.py
```

※なんか色々エラーがでてるRAIDコントローラーのサービスとか・・・
　まぁ使ってないのでスルーして起動を待つ・・・

ESXiのCVMとして登録されている仮想マシンが起動する（リネームされる）
```shell
nutanix@:192.168.11.171:~$ genesis status
2023-03-31 23:12:38.069076: Services running on this node:
  genesis: [2748, 2864, 2888, 2889]
nutanix@:192.168.11.171:~$ genesis status
2023-03-31 23:15:50.212870: Services running on this node:
  foundation: [3526, 3584, 3585]
  genesis: [2748, 2864, 2888, 2889]
```

シングルノードでクラスターを作成してみる
```shell
cluster -s 192.168.11.171 create

nutanix@:192.168.11.171:~$ cluster -s 192.168.11.171 create
2023-03-31 23:16:12,953Z INFO MainThread cluster:2943 Executing action create on SVMs 192.168.11.171
2023-03-31 23:16:13,241Z INFO MainThread nvme_disk.py:836 Disk /dev/nvme0n1 is not a latency optimized device
2023-03-31 23:16:13,652Z ERROR MainThread cluster:923 Cannot create one node backup cluster as not enough boot ssds are present to facilitate backup on this cluster Available no of boot ssds is 1
2023-03-31 23:16:13,652Z ERROR MainThread cluster:3106 Operation failed
```


結局できない・・・

```shell
nutanix@:192.168.11.171:~$ sudo fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/nvme0n1: 1024.2 GB, 1024209543168 bytes, 2000409264 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
Disk identifier: 2EB1A798-D501-4227-9FD4-2514D1E51F94


#         Start          End    Size  Type            Name
 1         2048   2000406527  953.9G  Microsoft basic primary
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes, 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
Disk identifier: C992E39C-4F8B-47D2-9934-0C286A017AE2


#         Start          End    Size  Type            Name
 1         2048     20971519     10G  Microsoft basic primary
 2     20973568     41943039     10G  Microsoft basic primary
 3     41945088    125829119     40G  Microsoft basic primary
 4    125831168   1953523711  871.5G  Microsoft basic primary

Disk /dev/loop0: 268 MB, 268435456 bytes, 524288 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

nutanix@CVM:192.168.11.171:~$ list_disks
ERROR:root:Could not reach zookeeper
ERROR:root:Unable to connect to zookeeper session
Slot  Disk          Model                   Serial            Size
0     ------------  ----------------------  ----------------  ------
1     /dev/sda      SanDisk SSD PLUS        223624441001      1.0 TB
2     /dev/nvme0n1  SOLIDIGM SSDPFKNU010TZ  BTEH230305YD1P0B  1.0 TB
```
DISK自体は認識しているはずなんだが・・・