ネットワークエンジニアのITブログ

長らくネットワークで仕事をしてきましたが、ここ数年クラウドとサーバー系に触れる機会が増えて、クラウドのネットワークというのが自分の性分にはあっているようです。最近のお気に入りはNSXALBとGoogle Cloud。

NSX Edge死闘編:Edgeが起動しない!Nestedの限界と救世主「第11世代ノートPC」の導入

前回は、vLCMの互換性エラーや物理SSDの故障という「トラブルのデパート」状態を乗り越え、なんとかインフラの土台となる「ホスト(トランスポートノード)」へのNSXインストールを完了させました。

これで、NSX Managerという「頭脳」と、命令を受け取る「体(ホスト)」は揃いました。 しかし、これだけではまだ不十分です。
このままでは、仮想マシンNSXの仮想ネットワーク内で通信ができるだけで、インターネットや物理ネットワーク(家のWi-Fiなど)には出られません。

仮想世界から、外の世界へ出ていくための「手足(ゲートウェイ)」が必要です。それが NSX Edgeノード です。

今回は、NSX構築の第2関門、Edgeノードの設計とデプロイを行います。
当初は「ウィザードをポチポチして終わり」の予定でしたが、そこに待っていたのは「CPU世代の壁」と「VLANタグの罠」という二重の落とし穴でした。

本来のネットワーク設計(理想)

まずは、描いていた設計図(VLAN設計)をおさらいします。前回、物理スイッチ(Catalyst 2960)やvSwitchの MTU 9000 (Jumbo Frame) 化は完了しており、土管の太さは確保できています。

VLANとIPアドレス設計

Edgeはホストと同様に「TEP(トンネルの出入り口)」を持ちます。 トラブルシュート(「ホストは生きてるけどEdgeだけ死んでる」などの切り分け)を楽にするため、ホストTEPとはVLANを分ける設計にしました。

VLAN ID 用途 備考
10 Management Edge管理用 (PG-MGMT)
11 vMotion P-ESXi-MGTクラスタのvMotion用
12 Host TEP ESXiホストのトンネル用 (PG-Host-TEP)
13 Edge TEP Edgeノードのトンネル用(今回追加)
20 vSAN N-ESXi-WLDクラスタのvSAN用
21 vMotion N-ESXi-WLDクラスタのvMotion用
30 Uplink Edgeから物理ルーターへの接続用(今回追加)

IPアドレス管理も、ミスを防ぐためにNSX Manager上で専用の「IPプール (pool-tep-vlan13)」を作成し、自動払い出しを行う構成としています。

ネットワーク構成図

VLANとIPアドレスが決まったので、論理構成はこのようになりました。

Edgeのインストール

論理構成が決定したので、さっそくEdgeのインストールを始めていきます。
「システム」-「ファブリック」-「ノード」-「Edgeトランスポートノード」から「EDGEノードの追加」をクリックします。

以下の情報を入力し、フォームファクタは、Nested環境のリソースは常にカツカツなので 「Small (2 vCPU / 4GB RAM)」 を選択しました。
名前:nsx-edge01
ホスト名/FQDNnsx-edge01.lab.local

CLIユーザ、rootアカウントのパスワード及びSSH許可を有効にします。

展開先は、Nested環境のvSANを選択します。

管理用のIP、インタフェースを入力します。
管理IPの割り当て:IPv4のみ
タイプ:静的
管理IP:192.168.10.31/24
デフォルトゲートウェイ:192.168.10.1
管理インターフェイス:PG-MGMT(分散仮想ポートグループ)
ドメイン名の検索:lab.local
DNSサーバ:192.168.10.9
NTPサーバ:ntp.nict.jp

NSXの構成では以下の情報を入力し「終了」をクリックします。
Edgeスイッチ名:nvds
トランスポートゾーン:nsx-overlay-transportzone、nsx-vlan-transportzone
アップリンクプロファイル:up-edge-vlan13
IPアドレスタイプ(TEP):IPv4
IPv4割り当て(TEP):IPプールを使用
IPv4プール:pool-tep-vlan13
DPDK Fastpathインターフェイス:Nested-Trunk(ネットワーク)


「さあ、これで完璧だ!」 そう思って「終了」を押した直後から悪夢が始まりました。

第1のトラブル:パワーオン失敗(1GBページ問題)

デプロイが進み、vCenter上でEdge VMが作成されました。しかし、いつまで経ってもパワーオンしません。
おかしいなと思い、NSX Managerを確認したところ、「パワーオン失敗」のメッセージが表示されていました。

vCenter側ではパワーオンできなかった原因を確認したところ、ハードウェア要件を満たしていないということでした。

NSX Edgeは、エンタープライズ向けの高性能なXeon CPU環境を想定しており、メモリ処理を高速化する「1GB Huge Pages」機能が必須要件になっています。
しかし、私のラボ環境(古い物理サーバ上のNested ESXi)では、CPUが古くこの機能をサポートしていないか、Nestedのオーバーヘッドで無効化されていたのです。

泥沼のVMX改造

とはいえ、EdgeをインストールしないとNSXが利用できないので、ここからあがきが始まりました。
結果、どうにもならずに諦めることになるのですが、対応した内容を備忘として記載しておきます。

「設定ファイル(.vmx)を書き換えて無理やり起動させる」という方法を実施しました。
Edgeの「設定の編集」-「詳細パラメータ」で、以下のパラメータを設定することで、何とか起動できたました。
これも1つずつ試していき、都度エラーメッセージが変わるので、もぐら叩き的のように前進解決していきました。
monitor.skip_requirement_check = "TRUE"
sched.mem.lpage.enable1GPage = "FALSE"
OSタイプを「Ubuntu」に偽装

なんとか起動はしたもののNSX Managerでは、この画面のまま、うんともすんとも更新されません。

起動しても認識されないのであれば、万事休すです。。。
Nested環境だからダメなのかと思い、物理クラスタにインストールしましたが、結果は同じでした。
ここまでやってもダメであればNSXはあきらめるしかないかと思い始めていました。。。

救世主:Dynabook(第11世代 Intel CPU)

万策尽きたかと思われたその時、いまブログやトラブルシュートで使用しているノートPC(Dynabook G83/HS)が目に入りました。
あれ!?このノートPCのCPUって何だったっけ?
調べたところ、搭載CPUは Intel Core i5-1135G7(第11世代 Tiger Lake)じゃないか!!
藁にもすがる思いで、USBメモリにESXi 8.0をインストールし、ノートPCを緊急のESXiホストとしてvCenterに追加(クラスタ名: P-ESXi-Note)。
そこへNSX Edgeをデプロイしてみると……。

エラーなし。一発起動!!!


あんなに苦労したpdpe1gbエラーが嘘のように解消しました。
「数世代前のデスクトップPCより、ちょっと新しめのノートPC」。
ハードウェアの進化(と私の敗北)を痛感した瞬間です。

第2の壁:繋がらないTEP(VLANタグの罠)

Edgeは起動しましたが、Catalyst2960(L3SW)から「管理IPにはPingが通るのに、TEP(トンネル用IP)にPingが通らない」という事象が発生しました。

C2960-L3_1#ping 192.168.30.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.30.2, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
C2960-L3_1#

これではホストとトンネルを結べず、NSXとして機能しません。


原因:二重タグ付け(Double Tagging

原因は、Edgeデプロイ時のインターフェース設定にありました。

  • NSX Edge側の設定:TEP用に「VLAN 13」のタグを付けて送出する設定
  • ESXiポートグループの設定: 「VLAN 13」を設定

これにより、ESXiのvSwitchは「VLAN 13のポートグループには、タグなしパケットが来るはず」と待ち構えているところに、Edgeが「タグ付きパケット」を送りつけたため、通信が破棄されていました。

解決策:トランクポートの使用

Edgeノードはルーターであり、自力でVLANタグを扱えます。したがって、接続するESXi側のポートグループは「トランク(VLAN ID 4095)」である必要があります。
Edgeを収容しているesx15のvSwitchのポートグループを「Trunk(VLAN 4095)」に変更した瞬間、Pingが通り始めました。

なお、Dynabookのホストを作成した際に、Edgeの名前を「nsx-edge01」から「edge31」に変更して作り直しています。
もう1台のedge32を作成しようと思いましたが、Dynabookのメモリが24GBしかないので、とりあえず、動かすことを優先で、いったん1台構成で進めていきます。
この後、Tier0を作成していきますが、その前に、Edgeクラスタを作成していきます。
「システム」-「ファブリック」-「ノード」-「Edgeクラスタ」から「EDGEクラスタの追加」をクリックします。

Edgeクラスタで以下の設定を行い「追加」をクリックします。
名前:Edge-Cluster-01
Edgeクラスタプロファイル:nsx-default-edge-high-availability-profile
トランスポートノード:edge31

Edgeクラスタの作成が完了しました。
これで、Edgeの準備は完了です。

Tier0、Tier1、オーバーレイセグメントの作成

最後にオーバーレイのネットワークを作成していきます。

Tier-0と物理ネットワークを接続するセグメントの作成

「ネットワーク」-「セグメント」-「NSX」から「セグメントの追加」をクリックします。

以下の情報を入力し「保存」をクリックします。
名前:Seg-Uplink-VLAN30
接続されたゲートウェイ:なし
トランスポートゾーン:nsx-vlan-transportzone
VLAN:30

これで、物理ネットワーク接続用のセグメントができました。

Tier-0ゲートウェイ作成

「ネットワーク」-「Tier-0ゲートウェイ」ー-「ゲートウェイの追加」から「Tier-0」をクリックします。

以下の情報を入力し「保存」をクリックします。
名前:T0-GW-01
HAモード:アクティブ/スタンバイ
Edgeクラスタ:Edge-Cluster-01

作成できると、構成を続行するか確認されるので「はい」をクリックします。

インターフェイスGREトンネルの「設定」をクリックします。

Tier-0と物理ネットワークを接続するVLAN30のネットワークインターフェイス設定を以下の情報で入力し「保存」をクリックします。
名前:Uplink-Interface-01
IPアドレス/マスク:192.168.30.2/24
接続先(セグメント):Seg-Uplink-VLAN30
Edgeノード:edge31

正常に作成できると以下のようになるので「閉じる」をクリックします。

続いて、ルーティングの中にあるスタティックルートの「設定」をクリックします。
できれば、OSPFでダイナミックルーティングをしたかったのですが、Catalyst2960のL3SWはスタティックルーティングしかできず、Cisco891FJはまだセットアップできていないので、今回はスタティックの設定を行います。

スタティックルートの追加からデフォルトルートの設定を行い、ネクストホップの「設定」をクリックします。

ネクストホップとして、Catalyst2960のL3SWで設定している192.168.30.1を指定し「保存」をクリックします。

ネクストホップに設定が入ったので「保存」をクリックします。

スタティックの設定も完了したので、Tier-0の設定画面まで戻ったら「保存」をクリックして完了です。

Tier-1ゲートウェイ作成

「ネットワーク」-「Tier-1ゲートウェイ」-「TIER1ゲートウェイの追加」をクリックします。

以下の設定を行い「保存」をクリックします。
名前:T1-GW-01
HAモード:アクティブ/スタンバイ
リンクされたTier-0ゲートウェイ:T0-GW-01
Edgeクラスタ:Edge-Cluster-01
接続されているすべてのセグメントおよびサービスポート:有効 ※ココを有効化しないとルート情報の交換が行われません

オーバーレイのセグメント作成

「ネットワーク」-「セグメント」-「NSX」から「セグメントの追加」をクリックします。
以下の情報を入力し「保存」をクリックします。
名前:Seg-192.168.41.0
接続されたゲートウェイ:T1-GW-01
ゲートウェイ接続:有効
トランスポートゾーン:nsx-overlay-transportzone
サブネット:192.168.41.1/24

これで、オーバーレイネットワークのセグメントができました。

疎通確認

オーバーレイネットワーク作成が完了したので、Catalyst2960のL3SWからオバーレイネットワークGWに対してpingを実行します。

C2960-L3_1# ping 192.168.41.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.41.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5)

「!!!!!」成功です!!
ついに、物理ネットワークと仮想のオーバーレイネットワークが一本に繋がりました。 Edgeのトンネルステータスも、美しい緑色の 「稼働中 (Up)」 に変わりました。

この後、オーバーレイのネットワークに2台の仮想マシンをそれぞれ、esx51、esx54上に構築し、疎通確認を行ったところ、ホスト間でトンネルがアップしました。
また、外部ネットワークに疎通確認したらedgeでトンネルがアップしました。


まとめ

今回のEdge構築で得た教訓は以下の通りです。

  • NSX Edgeの要件は甘くない:古いハードウェアでのNested構築は修羅の道。
  • 新しいPCは正義:第11世代以降のCPUがあれば、ノートPC一本でラボの救世主になれる。
  • インターフェース設定の基本:Edgeのアップリンク/TEP用インターフェースは、必ずトランクポートに接続する。

ホームラボの1から再構築し、vSphere8、vSAN、NSXとSDDC環境ができました。
想像以上に色々なトラブルが発生しましたが、vSphere8がサポートされているうちは、我が家のホームラボももう少し現役で入れそうです。
そろそろ10Gスイッチと10G NICが届くので、10G化に挑戦したいところです。
10G NICが正しく認識されるかはドキドキなところですが。。。