VMWare NSX-T 3.0デモ環境構築 その１

#この記事で伝えたいこと
VMWare NSX-T 3.0のインストール作業を通じて、構成要素とその機能を紹介します。正直な話として、以下の状態から作業を開始した経験の共有です。
・VMWare社のWebサイトを何回読み直しても、VMWare社のHands-On-Labをやっても、インターネット上でNSX-Tを紹介した記事を読んでも、イマイチ、わかりません。
・マニュアルを見ても結局何なのかよくわからないし、インストールもまともにできません。

VMWare NSX-T 3.0は、Networkを仮想化しているので、VMWare NSX-T 3.0を理解するためには、Networkの知識や経験が必要です。これらを持ってないと、上記のような状態からの作業開始となります。この記事が、NSX-Tの動作環境を作ってみたいけど、よくわからない、有償トレーニングを受けるしかないのか(しかし、ビジネスケースはなく、それほどでもない)…と考えている皆様の役に立ちましたら、幸いです。

#VMWare NSX-Tとは
VMWareによるNetworkの仮想化を実現するための製品です。つまり、Firewall、L3、Load Balancer、SIEM等を、専用のHWアプライアンスではなく、VMWare ESXi上のVMや機能として提供することで、データセンターの効率化を実現します(筆者独自解釈)。公式な説明は、[こちら](https://www.vmware.com/jp/products/nsx.html)です。

#NSX-Tの動作環境の構築
前述のようにマニュアルを理解できない状態で、サンプル動作環境を構築できず途方にくれたのですが、インターネット検索でVarun氏の素晴らしい[サイト](https://shuttletitan.com/nsx-t/nsx-t-installation-series/journey-to-nsx-t-vcp-nv-and-beyond-nsx-t-installation-series/)を発見し、それを参考にしました。素晴らしい、というのは、1台の物理サーバーを用いてNSX-Tを動作させるためだけの最低限の環境を構築する手順を公開しており、自分でもなんとかなるかも？と思えた、という意味です。この記事は、Varun氏の記事の補足、という位置づけになります。

#1. インストールの前提となる環境
以下の作業になります。
[Home Lab Setup – Nested ESXi Hosts networking for NSX-T](https://shuttletitan.com/nsx-t/nsx-t-installation-series/home-lab-setup-nested-esxi-hosts-networking-for-nsx-t/)
[Step 0 – High Level Design](https://shuttletitan.com/nsx-t/nsx-t-installation-series/nsx-t-installation-series-step-0-high-level-design/)

1.1 HWリソース
・2台の物理サーバーで、それぞれ、Xeon E5-2667 v3 物理16コア(ESXi論理プロセッサで32コア)とE5-2630 物理12コア(同24コア)。
・環境構築後に、NSX-Tと関連するVMを全て起動すると、ESXiの論理プロセッサ約10個、メモリ150GB、ストレージ870GB(VMはすべてシンプロビジョニング)が消費されています。メモリひっ迫によるレスポンス悪化の回避、将来的な追加要素(TKGとか)を考慮すると、サーバー単体、もしくは複数台の合計で、物理CPU16個、メモリ200GB、SSD3TBくらいの環境が必要だと思います。

1.2 SW関連
・ルーター：これは、Varun氏のLogical Routing Design図に含まれるPhysical Routerのことではなく、"Client"が、インターネットなどにアクセスするためのルーターのことです(図には記載されておりません)。BGPを設定できることが望ましいです。なぜなら、環境構築後、Logical Routing Design図の"Client"からTier-1ゲートウェイ上のVM(例 22.0.0.1)にpingで接続確認するのですが、その際に"ToR Switch"(Physical-Router-A-11、筆者はVyOSを使用)とルーター間でBGPが設定されていれなければ、"Client"から宛先22.0.0.1へのパケットはClientのデフォルトゲートウェイであるルーター側に送信されてしまい、Tier-1ゲートウェイ上のVMに届きません。BGPを設定できない場合の対応策としては、Client側で宛先22.0.0.0/24はPhysical-Router-A-11をGWとするように静的ルートを追加します。Physical-Router-A-11とルーターでBGP neighborを構成した場合は、静的ルートの追加は不要です。BGPについては、[こちら](https://www.infraexpert.com/study/bgpz01.html)を参考にしました。なお、2020年8月現在、NSX-T 3.0のTier-0ゲートウェイはBGP以外のプロトコルのサポートはないそうです。
・DNS/NTP：Windows Server 2019 EssentialでActive Directryを構築、DNS/DHCP統合、NTP、踏み台の作業用リモートデスクトップを構成しています。本質的にはDHCPは不要ですが、Nested ESXiのNetwork ConfigurationでDNSやGWのがプリセットされて、作業が簡略されるので使用しています。具体的な設定手順は省略します。
・Logical Routing Design図に含まれるPhysical Router　－　後述

1.3 物理サーバーの構成
物理的な結線のイメージは以下です。Varun氏は、十分なHWリソースを持つ1台の物理サーバーで環境を構築していますが、私の場合はHWリソースの制約の都合で2台の物理サーバーで環境を構築しました。物理的な結線として、それぞれの物理サーバーは1本のEthernetでネットワークに接続されています。
![01物理結線.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104507/6385cfeb-77b6-9e7d-7dd6-649959f18be6.png)

1.4 VMの配置、物理的なToR(L2スイッチ)を模したポートグループとVMの割り当て
・vCener(VM名:vcsapsc-a-11/12)、NSX Manager(NSXt-A-11~13、この時点では未インストール)は管理ネットワーク(10.6.xxx.yyy.0/24)にのみ接続していればOKですので、ESXi-01(管理用VM専用の物理サーバー)に配置します。VyOS05は動作確認用の"Client"、wingr01はDNS/DHCP/NTP/RDSです。
・NSX-T環境のためのNested ESXi(esxi70-nsxt-a-11/12,-b-11)、NSX Edge(ESG-NSXt-A-11/12、この時点では未インストール)、Physical Router(VyOS01)は、管理ネットワークとNSX-Tのオーバーレイネットワークに両方に接続する必要がありますので、ESXi-02(Nested ESXiとNSX-T Overlayネットワークのための物理サーバー)に配置します。
・以下、物理サーバーとESXiホストとVMのマッピング状況、論理ネットワークのスクリーンショットです。Varun氏はvSwitch0上にポートグループを集約していますが、私の場合は、ToR相当のPort Groupを別のvSwitch上に実装し、Tier-1上のVMがPhysical Routerを介して外部(10.xxx.yyy.0/24)のVyOS05と通信するのを確認したかったので、別々のvSwitchに配置しました。
![02 ESXi-01 VM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104507/29c0ed88-9c3b-12f9-31d4-1052cfe7f3fc.png)
![03 ESXi-02 VM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104507/5d528e09-b9b6-1b3a-9900-07e15aad1241.png)
![04 ESXi-01-vSwitch0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104507/82192be8-4b8d-3fa4-49d6-dadb5879a4d5.png)
![05 ESXi-02-vSwitch0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104507/91f4e366-e859-ee40-8f78-765ed9b999aa.png)
![06 ESXi-02-vSwitch1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104507/a31dbb30-8f44-d6b2-2b36-9ab0971fa64b.png)
![07 ESXi-02-vSwitch2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104507/32991267-2d2a-02c8-8faa-4cc4afcaa3f5.png)
![08 ESXi-02-vSwitch3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104507/4a5c0959-302f-eff9-7490-3b3c6ddccd23.png)

1.5 vCenter
vcsapsc-a-11を最初にESXi-01にインストール、セットアップします。その次に、vcsapsc-b-11をインストールし、Stage2のSetupにてPSCとしてvcsapsc-a-11を指定します。これで「リンクされた vCenter Server システム」として互いに認識するようになります。

1.6 ESXiクラスタ(vCenter:vcsapsc-a-11 - データセンター:Main - クラスタ:Mgmt)
物理サーバー同士(ESXi-01&02)でクラスターを構成している必要があります。[インストール要件](https://docs.vmware.com/jp/VMware-NSX-T-Data-Center/3.0/installation/GUID-AECA2EE0-90FC-48C4-8EDB-66517ACFE415.html)では特に指定がなかったと思うのですが、下記のスクリーンショットのようにNSX Managerをインストールする際にコンピュートクラスタを指定する必要があり、ここでクラスターを構築していないと指定できません(結果としてNSX Managerをインストールできません、別の方法があるかもしれませんが)。また、DNSやNTPを指定しないと同様にインストールを続行できません。
![10 ESXi-02 NSX-MGR install.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104507/cc8f8f40-8c80-d19b-7838-bbfa02c74d9c.png)
なお、クラスタが存在さえすればよいようなので、サービスを指定する必要はありません。
![09 ESXi-02 vmware cluster install.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104507/ce21a3fc-599f-3243-c68c-f6a2fae285c0.png)

1.7 ESXiクラスタ(vCenter:vcsapsc-a-11 - データセンター:Site-A - クラスタ:Compute-NSXt-A-11)
ESXiホストにホストトランスポートノードの設定を行う際に、クラスタ構成になってないとトランスポートノードプロファイルを使えず、ESXiホスト毎に設定を行わなくてはならなくなってしまいます。クラスタ:Mgmtと同じく、デモ環境では、クラスタが存在さえすればよいようなので、サービスを指定する必要はありません。蛇足ですが、[TKGを構成する場合はDRSが前提](https://docs.vmware.com/en/VMware-Tanzu-Kubernetes-Grid/1.0/tanzu-kubernetes-grid-10.pdf)のようなので、この構成は不適となります。
![09 ESXi-02 vmware cluster install2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104507/f83f553a-7f14-d826-4445-fa0eb254a660.png)


1.8 Physical Router(VyOS01)について
私の環境では[VyOS](https://docs.vyos.io/en/latest/)を使用しました。もっぱら、[日本語のガイド](https://wiki.vyos-users.jp/index.php/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%AC%E3%82%A4%E3%83%89)を利用させていただきました。VMの構成は以下です。ネットワークアダプタ４のNSX-T Overlayへの接続は、Varun氏の記事には含まれていませんが、Edge/hostトランスポートノードにpingで状態確認するために追加しています。
![11 Physical Router HW config.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104507/b24146cd-5ad5-1c7e-cd3b-98787d4b4611.png)

セットアップコマンドと内容は以下の通りです。

```shell-session
# 設定内容の削除は、上記setをdeleteに置換して実行(例　delete protocols bgp 65001)
# 以下、管理ネットワークから作業用クライアント(wingr01)から、Physical Router(VyOS01)に
# sshでアクセスできるようにするために、vCenterのコンソールから実行（SSHできないのでTeraterm不可）。
# dhcpを指定しているけど、NSX-T環境構築後に、Client(VyOS05)からTier-1上のVMにアクセスして動作確認する
# 際に、Clientに追加する静的ルートのGatewayに指定するので、実際には固定IPアドレスの方が望ましい。
# なお、configureコマンドのお作法は省略しています。詳細は日本語のガイドを参考にしてください。

set interfaces ethernet eth0 address dhcp
set interfaces ethernet eth0 description 'VM Network'
set service ssh port '22'

# 上記でssh可能になったので、これ以降はTeratermで実行
set interfaces ethernet eth1 address '192.168.110.1/24'
set interfaces ethernet eth1 description 'Uplink-ToR-A-11'
set interfaces ethernet eth2 address '192.168.120.1/24'
set interfaces ethernet eth2 description 'Uplink-ToR-A-12'
set interfaces ethernet eth3 address '11.5.0.200/24'
set interfaces ethernet eth3 description 'NSX-T overlay'

# 以下、BGPの設定(既存の設定状況を確認、Tier-0ルーターのAS番号設定、設定内容確認)
show ip bgp summary
set protocols bgp 65001 neighbor 192.168.110.3 remote-as '65111'
set protocols bgp 65001 neighbor 192.168.120.3 remote-as '65111'
show ip bgp summary

# 以下、コンソール出力、なお、bgp summaryについてはTier-0ルーター設定後なので導入前の出力とは異なります。
# また、TEPの接続状況を確認するため、eth3をNSX Overlayネットワークに追加してIPアドレスを割当てています。
vyos@vyos:~$ show interfaces
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface        IP Address                        S/L  Description
---------        ----------                        ---  -----------
eth0             10.xxx.yyy.0/24                   u/u  VM Network
eth1             192.168.110.1/24                  u/u  Uplink-ToR-A-11
eth2             192.168.120.1/24                  u/u  Uplink-ToR-A-12
eth3             11.5.0.200/24                     u/u  NSX-T overlay
lo               127.0.0.1/8                       u/u
                 ::1/128
vyos@vyos:~$ route
Kernel IP routing table
Destination     Gateway          Genmask         Flags Metric Ref    Use Iface
default         10.xxx.yyy.0.254 0.0.0.0        UG    20     0        0 eth0
10.xxx.yyy.0    0.0.0.0          255.255.255.0   U     0      0        0 eth0
11.5.0.0        0.0.0.0          255.255.255.0   U     0      0        0 eth3
192.168.110.0   0.0.0.0          255.255.255.0   U     0      0        0 eth1
192.168.120.0   0.0.0.0          255.255.255.0   U     0      0        0 eth2

vyos@vyos:~$ show ip bgp summary
IPv4 Unicast Summary:
BGP router identifier 192.168.120.1, local AS number 65001 vrf-id 0
BGP table version 0
RIB entries 0, using 0 bytes of memory
Peers 2, using 41 KiB of memory

Neighbor        V         AS MsgRcvd MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd
192.168.110.3   4      65111       0       0        0    0    0    never       Active
192.168.120.3   4      65111       0       0        0    0    0    never       Active

Total number of neighbors 2
```

前提となる環境は以上です。