自宅で検証できそうなスペックに合わせたNSX-Tのインストール手順を紹介します。NSX Manager 3台, NSX Edge 2台, ESXi 2台, vCenter 1台の構成で、このページではNSX Edgeのデプロイ方法について説明します。
構築範囲
このページでは、NSX Edgeの構築方法を説明します。構築範囲を図示すると以下の範囲です。
NSX Edgeのインストール
ダウンロード
「My VMwareのNSX-T ダウンロードページ」へアクセスします。「VMware NSX-T Data Center 3.1.2」の「ダウンロードする」を押下します。
「NSX Edge for VMware ESXi」の「今すぐダウンロード」を押下します。
OVFテンプレートのデプロイ
ESXiまたはクラスタの右クリックメニューで「OVFテンプレートのデプロイ」を選びます。
さきほどダウンロードしたovaファイルを指定します。
「仮想マシン名(vCenterやESXi上で表示される名前)」とフォルダを指定し、「次へ」を押下します。
デプロイ先のESXiホストまたはクラスタを選びます。
テンプレートの情報確認の画面です。「次へ」を押下します。
検証サーバのスペックに応じて、NSX-T Managerのサイズを選びます。
デプロイ先のストレージを選びます。もし、検証環境のディスクに余裕がないならば、「シンプロビジョニング」で妥協するのもよいでしょう。
ポートグループを指定します。Network 1は管理用IPアドレスが付与されるvNICですが、それ以外のvNICは後続手順で任意の用途を指定できます。
後続手順ではNetwork 1, Network 2のような名前ではなく、fp-the0, fp-eth1という名前が使用されます。この画面で表示される名前と後続の名前のマッピングを示すと以下の通りです。
OVAデプロイ時の名称 | NSX-Tの名称 | 用途 |
---|---|---|
Network 1 | eth0 | 管理IPアドレス |
Network 2 | fp-eth0 | 後続手順で指定(このシナリオではTEP用途) |
Network 3 | fp-eth1 | 後続手順で指定(このシナリオでは物理ルータとの接続用途) |
Network 4 | fp-eth2 | 後続手順で指定(このシナリオでは使用しない) |
rootユーザのパスワードを指定します。
adminユーザのパスワードを指定します。Web UIでログインする時やsshログインするときのユーザです。
auditユーザのパスワードを指定します。auditは読み取り権限のみが与えられた監査用ユーザです。
「Manage IP」「Management User」などの設定はNSX Managerと連携されるためのNSX Managerの認証情報を指定する画面です。後続手順でCLIでNSX Managerと連携させますので、今は「空欄」のままとします。
ホスト名や管理用IPアドレスの設定をします。ここでの「Management Network IPv4 Address」などの指定は、NSX Managerとの連携指定ではなく、NSX Edgeの管理IPアドレスの指定の意味です。若干紛らわしい言い回しなので、慣れないうちは注意が必要です。
DNSの設定をします。DNSサーバを複数指定する場合は、スペースで区切ります。
NTPサーバを指定します。その他、SSHログインやrootログインを許可するかの設定があります。セキュリティ上は非推奨であるものの、有効にしておくと操作が便利です。商用のサービスイン前に無効化することもできます。
以上の設定が完了したら、「次へ」を押下します。
設定確認の画面です。「完了」を押下します。
デプロイが完了するまで待ちます。また、同様の操作を繰り返し、複数台のNSX Edgeを構築します。
NSX Edgeの起動
デプロイ完了後、仮想マシンを起動します。
ManagerとEdge間の連携
ManagerとEdgeを連携させます。連携するためには、Managerのthumbprintの指定が必要です。まずはthumbprintを調査します。
NSX Managerへadminユーザでsshログインします。その後、「get certificate api thumbprint」コマンドでthumbprintを表示させます。
nsxt-manager121> get certificate api thumbprint Sat May 01 2021 UTC 09:28:46.318 84769df3a360e95df7e97d24a3aa165d1d4d6466c4b37ceb1f9056c5d26e2c36 nsxt-manager121>
NSX Edgeへadminユーザでsshログインします。その後、joinコマンドの引数にNSX ManagerのIPアドレスとthumbprintなどを指定して実行します。対話形式で聞かれるパスワードは、NSX Managerのadminパスワードです。
NSX Edgeの台数分だけ、同様の操作を繰り返します。
nsxt-edge131> join management-plane 192.168.1.121 username admin thumbprint 84769df3a360e95df7e97d24a3aa165d1d4d6466c4b37ceb1f9056c5d26e2c36 Password for API user: Node successfully registered as Fabric Node: 588be5e2-aa61-11eb-b041-005056a37b26 nsxt-edge131>
NSX Managerの画面にて、「システム」「ファブリック」「ノード」「Edgeトランスポートノード」の順に押下します。NSX Edgeが登録されていることを確認します。
補足説明
トラブル調査
疎通不能の場合は、コンソール経由でNSX Managerへログインし、状況を調査しましょう。
NSX Managerはキーボードが設定されていませんので、英字キーボード配列いなっていることに注意ください。例えば、「@」を入力するならば「Shift + 2」です。
ログイン後は、Debuian OSとほぼ同等の調査が可能です。例えば、IPアドレスなどの設定を確認するならば、以下のような操作をします。
root@nsx-edge131:~# cat /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.131 netmask 255.255.255.0 gateway 192.168.1.1 auto bond0 iface bond0 inet manual bond-mode active-backup bond-slaves none root@nsx-edge131:~# root@nsx-edge131:~# root@nsx-edge131:~# ip address 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:50:56:a3:af:bb brd ff:ff:ff:ff:ff:ff inet 192.168.1.131/24 brd 192.168.1.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::250:56ff:fea3:afbb/64 scope link valid_lft forever preferred_lft forever 6: bond0: <NO-CARRIER,BROADCAST,MULTICAST,MASTER,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 4a:27:ec:51:e3:9d brd ff:ff:ff:ff:ff:ff 7: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:27:0c:22:c5 brd ff:ff:ff:ff:ff:ff inet 169.17.0.1/16 brd 169.17.255.255 scope global docker0 valid_lft forever preferred_lft forever 8: kni-fp-eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN group default qlen 1000 link/ether 00:50:56:a3:e2:fb brd ff:ff:ff:ff:ff:ff inet6 fe80::250:56ff:fea3:e2fb/64 scope link valid_lft forever preferred_lft forever 9: kni-fp-eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN group default qlen 1000 link/ether 00:50:56:a3:88:c3 brd ff:ff:ff:ff:ff:ff inet6 fe80::250:56ff:fea3:88c3/64 scope link valid_lft forever preferred_lft forever 10: kni-fp-eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN group default qlen 1000 link/ether 00:50:56:a3:41:fc brd ff:ff:ff:ff:ff:ff inet6 fe80::250:56ff:fea3:41fc/64 scope link valid_lft forever preferred_lft forever root@nsx-edge131:~#
pingやtracerouteの調査も可能です。
root@nsx-edge131:~# ping 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.551 ms 64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.427 ms 64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.420 ms ^C --- 192.168.1.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2052ms rtt min/avg/max/mdev = 0.420/0.466/0.551/0.060 ms root@nsx-edge131:~# root@nsx-edge131:~# root@nsx-edge131:~# traceroute -I -n 8.8.8.8 traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets 1 192.168.1.1 0.609 ms 0.529 ms 0.516 ms 2 42.144.44.1 18.845 ms 18.854 ms 19.028 ms 3 10.202.106.3 20.536 ms 20.523 ms 27.933 ms 4 172.25.25.41 30.494 ms 31.458 ms 31.443 ms 5 10.1.0.237 29.524 ms 29.501 ms 29.700 ms 6 175.129.17.98 29.827 ms 29.928 ms 29.828 ms 7 175.129.17.97 29.393 ms 22.787 ms 22.880 ms 8 61.26.74.46 22.399 ms 20.921 ms 22.012 ms 9 74.125.147.116 25.416 ms 23.599 ms 34.208 ms 10 209.85.245.217 31.264 ms 31.275 ms 31.433 ms 11 142.250.226.61 30.832 ms 31.026 ms 30.547 ms 12 8.8.8.8 24.816 ms 23.949 ms 15.154 ms root@nsx-edge131:~#
自動化
OVAテンプレートのデプロイ
OVAテンプレートのでデプロイはovftoolを用いるとコマンドライン実行も可能です。特にOVAテンプレートは入力項目が多く操作ミスを誘発しやすいので、慣れてきたらコマンドライン操作に変更しましょう。操作例は以下の通りです。
以下はLinuxで操作する前提のため改行を「\」で表しています。Windowsのコマンドプロンプトなどで操作する場合は、改行を「^」で指定してください。
ovftool \ --name=131-nsx-edge \ --deploymentOption=medium \ --X:injectOvfEnv \ --X:logFile=ovftool.log \ --allowExtraConfig \ --datastore=datastore15 \ --net:"Network 0=vSwitch0_vlan0000" \ --net:"Network 1=vSwitch0_vlan0002" \ --net:"Network 2=vSwitch0_vlan0003" \ --net:"Network 3=vSwitch0_vlan0000" \ --acceptAllEulas \ --noSSLVerify \ --diskMode=thin \ --powerOn \ --prop:nsx_ip_0=192.168.1.131 \ --prop:nsx_netmask_0=255.255.255.0 \ --prop:nsx_gateway_0=192.168.1.1 \ --prop:nsx_dns1_0="192.168.1.221 192.168.1.1" \ --prop:nsx_domain_0=gokatei.go \ --prop:nsx_ntp_0=192.168.1.221 \ --prop:nsx_isSSHEnabled=True \ --prop:nsx_allowSSHRootLogin=True \ --prop:nsx_passwd_0="P@ssw0rdP@ssw0rd" \ --prop:nsx_cli_passwd_0="P@ssw0rdP@ssw0rd" \ --prop:nsx_hostname=nsx-edge131.gokatei.go \ ova/nsx-edge-3.1.2.0.0.17883603.ova \ vi://administrator@gokatei.go:P@ssw0rd@vcenter00.gokatei.go/?ip=192.168.1.181
ManagerとEdge間の連携
NSX EdgeのOVAテンプレートデプロイ時に、ManagerとEdgeを連携させるパラメタを指定することができます。OVAテンプレートの中には「ノードID」や「パスワード」などのパラメタも指定できますが、ヴイエムウェア社内部用で仕様が公開されてないパラメタも含まれています。仕様が一般公開されているものは「Install NSX Edge on ESXi Using the Command-Line OVF Tool
」を参照ください。NSX Managerへ接続するときは、「IPアドレス」「サムプリント」「トークン」の3つを指定して接続します。
サムプリンtを調査するには、NSX Managerにsshログインし「get certificate api thumbprint」コマンドを実行します。
nsxt-manager121> get certificate api thumbprint Thu May 06 2021 UTC 11:46:03.130 84769df3a360e95df7e97d24a3aa165d1d4d6466c4b37ceb1f9056c5d26e2c36
「トークン」は、NSX ManagerへURL「/api/v1/aaa/registration-token」へPOSTリクエストを送付することで発行できます。
[root@ansible012 ~]# curl --request POST \ > -u admin:P@ssw0rdP@ssw0rd \ > --header "Content-Type:application/json" \ > -k https://192.168.1.121/api/v1/aaa/registration-token { "token" : "fb0861f7-2939-423b-9933-41e2ad5d62fc", "roles" : [ "enterprise_admin" ], "user" : "admin" }
以上の処理を自動化する場合の実装例を以下に示します。
TOKEN=$(curl --request POST \ -u admin:P@ssw0rdP@ssw0rd \ --header "Content-Type:application/json" \ -k https://192.168.1.121/api/v1/aaa/registration-token \ | jq -r ".token") ovftool \ --name=133-nsx-edge \ --deploymentOption=medium \ --X:injectOvfEnv \ --X:logFile=ovftool.log \ --allowExtraConfig \ --datastore=datastore15 \ --net:"Network 0=vSwitch0_vlan0000" \ --net:"Network 1=vSwitch0_vlan0002" \ --net:"Network 2=vSwitch0_vlan0003" \ --net:"Network 3=vSwitch0_vlan0000" \ --acceptAllEulas \ --noSSLVerify \ --diskMode=thin \ --powerOn \ --prop:nsx_ip_0=192.168.1.133 \ --prop:nsx_netmask_0=255.255.255.0 \ --prop:nsx_gateway_0=192.168.1.1 \ --prop:nsx_dns1_0="192.168.1.221 192.168.1.1" \ --prop:nsx_domain_0=gokatei.go \ --prop:nsx_ntp_0=192.168.1.221 \ --prop:nsx_isSSHEnabled=True \ --prop:nsx_allowSSHRootLogin=True \ --prop:nsx_passwd_0="P@ssw0rdP@ssw0rd" \ --prop:nsx_cli_passwd_0="P@ssw0rdP@ssw0rd" \ --prop:nsx_hostname=nsx-edge133.gokatei.go \ --prop:mpIp="192.168.1.121" \ --prop:mpToken="${TOKEN}" \ --prop:mpThumbprint="84769df3a360e95df7e97d24a3aa165d1d4d6466c4b37ceb1f9056c5d26e2c36" \ ova/nsx-edge-3.1.2.0.0.17883603.ova \ vi://administrator@gokatei.go:P@ssw0rd@vcenter00.gokatei.go/?ip=192.168.1.181