関連製品の準備ができるまで 7.0 に移行できないので,Lab 使って色々検証をしています. 最近は NUC の Nested ESXi を使うようになったのですが,Nested ならではの設定でハマったポイントを書いておきます.
今回 NUC host から NFS datastore をマウントし,そこに仮想ディスクを複数用意して Nested ESXi で vSAN 環境を作りました.
NUC には pNIC が 1 枚しか無いので,vNIC をフル活用する必要があります.物理 N/W で当たり前に構成している事がサクッと出来ずかなりストレスでしたが,良い勉強になりました(笑).
少し整理しないと分かりにくいので図示しますが,NUC の pNIC (vmnic0) に vSS (vSwitch0) を構成し,管理用 (vmk0) と NFS 接続用 (vmk1) の VMkernel NIC を作成します.Nested ESXi 用には VLAN trunk port group を用意します.vSS の場合だと VLAN id を 4095 に設定するだけですね.
次に Nested ESXi の方のネットワークを図示します.仮想化の恩恵を受けられるので,ここはあえて複数 NIC で vDS を構成しています.vDS に vid 42, と53 の Port group を作成し,管理用 (vmk0) と vSAN 用 (vmk1) の VMkernel NIC を追加します.
さあ,これで vSAN 用ネットワークも準備 OK ! とはならないのです.Nested ESXi の場合は,VLAN trunk port group の Security policy を変更して Promiscuous mode と Forged transmits を Accept する必要があります.Promiscuous mode は自分宛以外のトラフィックも受信して処理する mode なので,Packet capture の経験がある方には馴染み深いと思いますが,Forged transmits(日本語メニューだと「偽装転送」)が使われるのは Nested 環境以外だと NLB くらいでしょうか?
VLAN trunk port group で Forged transmits を Accept しないと,Effective address と Source address が異なるトラフィックが転送されません.
それでは,Nested ESXi の MAC address を確認してみましょう.
[root@ariel1:~] esxcfg-nics -l Name PCI Driver Link Speed Duplex MAC Address MTU Description vmnic0 0000:0b:00.0 nvmxnet3 Up 10000Mbps Full 00:0c:29:dd:02:87 8900 VMware Inc. vmxnet3 Virtual Ethernet Controller vmnic1 0000:13:00.0 nvmxnet3 Up 10000Mbps Full 00:0c:29:dd:02:91 8900 VMware Inc. vmxnet3 Virtual Ethernet Controller [root@ariel1:~] 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.4.2.104 255.255.255.0 10.4.2.255 00:0c:29:dd:02:87 1500 65535 true STATIC defaultTcpipStack vmk1 0 IPv4 10.53.53.104 255.255.255.0 10.53.53.255 00:50:56:66:48:5c 8900 65535 true STATIC defaultTcpipStack
vmnic1 の MAC address は 00:0c:29:dd:02:91 ですが,対応する vmk1 の MAC address は 00:50:56:66:48:5c になっているのが分かります.
Host 側 vSS の VLAN trunk port group 上では,vmnic1 (00:0c:29:dd:02:91) が見えていますね.
つまり,この環境では Effective address と Source address が異なるため,Port group の Security policy で Forged transmits を Accept しないと通信出来なくなってしまうのです.
念のため,Host で pktcap-uw してみましょう.
[root@esxevl01:~] net-stats -l PortNum Type SubType SwitchName MACAddress ClientName ... 67108879 5 9 vSwitch0 00:0c:29:dd:02:91 ariel1 ... [root@esxevl01:~] pktcap-uw --switchport 67108879 -o test.pcap
Wireshark で開いてみると,vmk1 の MAC address を確認できました.
Security Policy には MAC address changes もありますが,これは Guest VM の OS 側で MAC address を変更した場合の通信許可なので,Accept しなくても今回の Nested ESXi 環境には直接影響ありません.また,Forged Transmits も,Effective address と Source address が異なるポイントだけで Accept すれば良いので,闇雲に色々 Accept して Security Holes を広げないように注意しましょう.
・おまけ
NUC 側は ESXi 7.0 にしたら,Nested ESXi 上の Guest OS を Power on すると Nested ESXi が (PSOD 画面も出さずに) 落ちるという現象に遭遇していたのですが,SkyLake-based CPU に関連する Bug だったようです.
これは
VMware ESXi 7.0, Patch Release ESXi 7.0b 適用で無事に解決しました!