NSX-T 3.1.2 最小限構成のインストール方法 (5/7) VLANトランスポートゾーンの設定

スポンサーリンク

自宅で検証できそうなスペックに合わせたNSX-Tのインストール手順を紹介します。NSX Manager 3台, NSX Edge 2台, ESXi 2台, vCenter 1台の構成で、このページではVLANトランスポートゾーンとT0ゲートウェイを接続する方法をまとめます。

構築範囲

このページでは、VLANトランスポートゾーンとそれに関する最小限のネットワーク設定をして、pingによる疎通確認可能な状態までの構築します。構築範囲を図示すると以下の範囲です。

NSX-T 構築範囲の説明

システム関連の設定

VLANトランスポートゾーンの作成

NSX-Tはトランスポートゾーンと呼ばれる疎通可能な範囲を定義することができます。トランスポートゾーンは「オーバーレイ」と「VLAN」があります。後者のVLANトランスポートゾーンは、NSX-T外のルータなどを接続する時に使用します。

デフォルト設定のVLANトランスポートゾーンを使用しても問題ないですが、このページではVLANトランスポートゾーンを自作する方法を説明します。「システム」「ファブリック」「トランスポートゾーン」「ゾーンの追加」の順に押下します。

VLANトランスポートゾーンの作成 01

トランスポートゾーンの「名前」を入力し、「トラフィックタイプ」は「VLAN」とします。その後、「追加」を押下します。

VLANトランスポートゾーンの作成 02

VLANトランスポートゾーンが追加されたことを確認します。

VLANトランスポートゾーンの作成 03

ホストスイッチの設定

NSX EdgeにVLANトランスポートゾーンに所属しているホストスイッチを作成します。この設定によって、NSX内に接続されたセグメントがNSX外へルーティングできるようになります。

この設定を入れるには、「システム」「ファブリック」「ノード」「Edge トランスポートノード」の順に画面遷移し、対象のNSX Edgeにチェックを入れ「編集」を押下します。

ホストスイッチの設定 01

前述の操作で作成したオーバーレイトランスポートゾーン向けとは別に、VLANトランスポートゾーン用のホストスイッチを作成しますので、「スイッチの追加」を押下します。

ホストスイッチの設定 02

「Edgeスイッチ名」を入力します。何か分かりやすい名前が良いのは当然ですが、あまり他の設定と関係する設定ではないので、それほどこだって名前をつけるほどではないかと思われます。

前述の操作で設定した「(VLAN)トランスポートゾーン」「アップリンクプロファイル」を指定します。

ホストスイッチの設定 03

アップリンクが接続されるインターフェースを指定します。このシナリオの場合ならば「fp-eth1」になります。

以上の設定完了後、「保存」を押下します。

オーバーレイトランスポートゾーンではなくVLANトランスポートゾーンですので、IPアドレスの設定はありません。ここでIPアドレスの設定欄が現れたら、トランスポートゾーンがVLANではなくオーバーレイになっています。トランスポートゾーンの設定を見直しましょう。

ホストスイッチの設定 04

設定が完了すると、今まではN-VDSが1つだけであったのが2つになります。「N-VDS」の列が「1」から「2」に変わったことを確認します。

ホストスイッチの設定 05

Edgeクラスタの作成

NSX-TはNSX Edgeをクラスタというまとまりで管理し、このクラスタに対してルータやセグメントを作成することができます。今までの操作で作成したNSX Edgeに対してクラスタを作成します。

Edgeクラスタを作成するには、「システム」「ファブリック」「ノード」「Edgeクラスタ」「Edgeクラスタの追加」の順に押下します。

Edgeクラスタの作成 01

「名前」に何か分かりやすいクラスタ名を入れます。

Edgeクラスタの作成 02

クラスタに参加させたいESX Edgeにチェックを入れ、「右矢羽」を押下します。

Edgeクラスタの作成 03

クラスタに追加されたことを確認して、「追加」を押下します。

Edgeクラスタの作成 04

Edgeクラスタが作成されたことを確認します。

Edgeクラスタの作成 05

ネットワーク関連の設定

セグメントの作成

前述の手順で作成したVLANトランスポートノードに紐づいたセグメントを作成します。「ネットワーク」「セグメント」「セグメント」「セグメントの追加」の順に押下します。

セグメントの作成 01

「セグメント名」は何か分かりやすい名前を、「接続されたゲートウェイ」は「なし」を、「トランスポートゾーン」は前述の操作で作成したVLANトランポートゾーンを設定します。

セグメントの作成 02

「VLAN」は「0」を設定します。

このシナリオではポートグループでVLANタグを付与しますので、セグメントの設定はVLANタグを付与しない「0」になります。もし、ポートグループや物理スイッチでVLANタグを付与しないならば、このセグメントの機能を使ってVLANタグを付与することもできます。

セグメントの作成 03

「保存」を押下します。

セグメントの作成 04

「いいえ」を押下します。

セグメントの作成 05

T0ゲートウェイの作成

NSX-Tは「Tier-0ゲートウェイ」「Tier-1ゲートウェイ」と呼ばれる2階層のルータを作成することができます。Tier-0ゲートウェイを作成し、後続の操作でTier-0のインターフェースをVLANトランスポートゾーンに所属させることで、NSX-Tが物理的なネットワーク機器と疎通可能な状態になります。

まずは、Tier-0ゲートウェイを作成しましょう。「ネットワーク」「Tier-0ゲートウェイ」「ゲートウェイの追加」「Tier-0」の順に押下します。

T0ゲートウェイの作成 01

初回の編集画面では設定可能な項目は少なめです。「Tier-0ゲートウェイの名前」のみを入力します。

T0ゲートウェイの作成 02

「保存」を押下します。

T0ゲートウェイの作成 03

保存後に編集を継続するかどうかを聞かれます。2回目以降の編集ではより詳細なパラメタを指定できるようになります。「はい」を選び、編集を継続します。

T0ゲートウェイの作成 04

「Edgeクラスタ」を指定し、「保存」を押下します。

T0ゲートウェイの作成 05

設定が保存されたことを確認します。

T0ゲートウェイの作成 06

T0ゲートウェイに接続されたインターフェース

Tier-0ゲートウェイの編集画面にて、「インターフェース」のメニューを開くと「編集」というリンクが現れます。これをクリックします。

T0 インターフェース設定 01

「インターフェースの追加」を押下します。

T0 インターフェース設定 02

「名前」は何か分かりやすい名前を、「タイプ」は「外部」を、「セグメント」は前述の操作で作成したVLANトランスポートノードと紐づいたセグメントを指定します。

「Edgeノード」を指定した後に、そのEdgeノードに付与するIPアドレスを「IPアドレス/マスク」の入力欄に指定します。

T0 インターフェース設定 03

設定完了後、「保存」を押下します。

T0 インターフェース設定 04

編集直後は「初期化されていません」との表示ですが、ここをクリックすると初期化が完了したか否かを確認できます。うまくいけば「初期化されていません」の表示が「成功」に変わります。

T0 インターフェース設定 05

インターフェース設定に成功した場合は、「成功」との表示になります。

T0 インターフェース設定 06

同様の操作を繰り返し、NSX Edge全てにIPアドレスを付与します。

T0 インターフェース設定 07

ネットワーク関連の設定

Tier-0ゲートウェイに接続されたインターフェースに対して、ping疎通が可能であることを確認します。以下はNSX-T外部にある物理的なルータからのping確認をした時のログです。

nec-ix01# ping 192.168.3.131
PING 192.168.3.1 > 192.168.3.131 56 data bytes
64 bytes from 192.168.3.131: icmp_seq=0 ttl=64 time=17.046 ms
64 bytes from 192.168.3.131: icmp_seq=1 ttl=64 time=0.439 ms
64 bytes from 192.168.3.131: icmp_seq=2 ttl=64 time=0.355 ms

--- 192.168.3.131 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip (ms)  min/avg/max = 0.355/5.946/17.046
nec-ix01# 

補足説明

自動化

VLANトランスポートノード作成

VLANトランスポートゾーンを設定するRest API操作は以下の通りです。

curl --request POST -d @- \
  -u admin:P@ssw0rdP@ssw0rd \
  --header "Content-Type:application/json" \
  -k https://192.168.1.121/api/v1/transport-zones << EOF
{
  "display_name":"tz-vlan-01",
  "host_switch_name":"host-switch-tz-vlan-01",
  "transport_type":"VLAN"
}
EOF

ホストスイッチ作成

VLANトランスポートノードに属するホストスイッチを作成するRest API操作は以下の通りです。

NSX-T 3.1.2 最小限構成のインストール方法 (4/7)」で作成したホストスイッチを削除しいよう、ホストスイッチの配列には「オーバーレイトランスポーポートゾーンに属するスイッチ」と「VLANトランスポートゾーン」に属するスイッチ」の2つを指定します。

NODE_DISPLAY_NAME="nsx-edge132.gokatei.go"
NODE_IP_ADDRESS="192.168.2.132"
NODE_SUBNET_MASK="255.255.255.0"
NODE_DEFAUT_GATEWAY="192.168.2.1"
UPLINK_PROF_DISPLAY_NAME="prof-edge-single-01"
TZ_OVERLAY_NAME="tz-overlay-01"
TZ_VLAN_NAME="tz-vlan-01"
WORK_FILE=/tmp/nsx_api_work_$$

curl --request GET \
  -u admin:P@ssw0rdP@ssw0rd \
  --header "Content-Type:application/json" \
  -k https://192.168.1.121/api/v1/transport-nodes \
  | jq --arg arg ${NODE_DISPLAY_NAME} ' .results[] | select ( .display_name == $arg ) ' \
  > ${WORK_FILE}
NODE_ID=$(cat ${WORK_FILE} | jq -r ".node_id")
REVISION=$(cat ${WORK_FILE} | jq -r "._revision")
rm -f WORK_FILE

TZ_OVERLAY_ID=$(curl --request GET \
  -u admin:P@ssw0rdP@ssw0rd \
  --header "Content-Type:application/json" \
  -k https://192.168.1.121/api/v1/transport-zones \
  | jq -r --arg arg ${TZ_OVERLAY_NAME} ' .results[] | select ( .display_name == $arg ) | .id ' )

TZ_VLAN_ID=$(curl --request GET \
  -u admin:P@ssw0rdP@ssw0rd \
  --header "Content-Type:application/json" \
  -k https://192.168.1.121/api/v1/transport-zones \
  | jq -r --arg arg ${TZ_VLAN_NAME} ' .results[] | select ( .display_name == $arg ) | .id ' )

UPLINK_PROF_ID=$(curl --silent --request GET \
  -u admin:P@ssw0rdP@ssw0rd \
  --header "Content-Type:application/json" \
  -k https://192.168.1.121/api/v1/host-switch-profiles \
  | jq -r --arg arg ${UPLINK_PROF_DISPLAY_NAME} ' .results[] | select ( .display_name == $arg ) | .id')

curl --request PUT -d @- \
  -u admin:P@ssw0rdP@ssw0rd \
  --header "Content-Type:application/json" \
  -k https://192.168.1.121/api/v1/transport-nodes/${NODE_ID} << EOF
{
    "host_switch_spec" : {
      "host_switches" : [ {
        "host_switch_name" : "nsxHostSwitchOverlay",
        "host_switch_type" : "NVDS",
        "host_switch_mode" : "STANDARD",
        "host_switch_profile_ids" : [ {
          "key" : "UplinkHostSwitchProfile",
          "value" : "${UPLINK_PROF_ID}"
        } ],
        "pnics" : [ {
          "device_name" : "fp-eth0",
          "uplink_name" : "uplink1"
        } ],
        "is_migrate_pnics" : false,
        "ip_assignment_spec" : {
          "ip_list" : [ "${NODE_IP_ADDRESS}" ],
          "default_gateway" : "${NODE_DEFAUT_GATEWAY}",
          "subnet_mask" : "${NODE_SUBNET_MASK}",
          "resource_type" : "StaticIpListSpec"
        },
        "transport_zone_endpoints" : [ {
          "transport_zone_id" : "${TZ_OVERLAY_ID}"
        } ]
      }, {
        "host_switch_name" : "nsxHostSwitchVlan",
        "host_switch_type" : "NVDS",
        "host_switch_mode" : "STANDARD",
        "host_switch_profile_ids" : [ {
          "key" : "UplinkHostSwitchProfile",
          "value" : "${UPLINK_PROF_ID}"
        } ],
        "pnics" : [ {
          "device_name" : "fp-eth1",
          "uplink_name" : "uplink1"
        } ],
        "transport_zone_endpoints" : [ {
          "transport_zone_id" : "${TZ_VLAN_ID}"
        } ]
      } ],
      "resource_type" : "StandardHostSwitchSpec"
    },
    "display_name" : "${NODE_DISPLAY_NAME}",
    "description" : "",
    "_revision": ${REVISION}
}
EOF

Edgeクラスタの作成

Edgeクラスタを作成するRest API操作は以下の通りです。

NODE_DISPLAY_NAME_01="nsx-edge131.gokatei.go"
NODE_DISPLAY_NAME_02="nsx-edge132.gokatei.go"

NODE_ID_01=$(curl --request GET \
  -u admin:P@ssw0rdP@ssw0rd \
  --header "Content-Type:application/json" \
  -k https://192.168.1.121/api/v1/transport-nodes \
  | jq -r --arg arg ${NODE_DISPLAY_NAME_01} ' .results[] | select ( .display_name == $arg ) | .id ')
NODE_ID_02=$(curl --request GET \
  -u admin:P@ssw0rdP@ssw0rd \
  --header "Content-Type:application/json" \
  -k https://192.168.1.121/api/v1/transport-nodes \
  | jq -r --arg arg ${NODE_DISPLAY_NAME_02} ' .results[] | select ( .display_name == $arg ) | .id ')

curl --request POST -d @- \
  -u admin:P@ssw0rdP@ssw0rd \
  --header "Content-Type:application/json" \
  -k https://192.168.1.121/api/v1/edge-clusters << EOF
{
  "members" : [
    {
      "transport_node_id":"${NODE_ID_01}"
    },
    {
      "transport_node_id":"${NODE_ID_02}"
    }
  ],
  "resource_type" : "EdgeCluster",
  "display_name" : "cluster01"
}
EOF

セグメント作成

Tier-0ゲートウェイやTier-1ゲートウェイに接続されていないセグメントを作成するRest API操作は以下の通りです。

TZ_VLAN_NAME="tz-vlan-01"
TZ_VLAN_ID=$(curl --request GET \
  -u admin:P@ssw0rdP@ssw0rd \
  --header "Content-Type:application/json" \
  -k https://192.168.1.121/api/v1/transport-zones \
  | jq -r --arg arg ${TZ_VLAN_NAME} ' .results[] | select ( .display_name == $arg ) | .id ' )

curl --request PUT -d @- \
  -u admin:P@ssw0rdP@ssw0rd \
  --header "Content-Type:application/json" \
  -k https://192.168.1.121/policy/api/v1/infra/segments/external-vlan3 << EOF
{
  "type" : "DISCONNECTED",
  "vlan_ids" : [ "0" ],
  "transport_zone_path" : "/infra/sites/default/enforcement-points/default/transport-zones/${TZ_VLAN_ID}",
  "resource_type" : "Segment",
  "display_name" : "external-vlan3"
}
EOF

Tier-0ゲートウェイの作成

Tier-0ゲートウェイを作成するRest API操作は以下の通りです。

curl --request PUT -d @- \
  -u admin:P@ssw0rdP@ssw0rd \
  --header "Content-Type:application/json" \
  -k https://192.168.1.121/policy/api/v1/infra/tier-0s/t0-router << EOF
{
  "resource_type" : "Tier0",
  "display_name" : "t0-router"
}
EOF

Tier-0ゲートウェイとEdgeクラスタの紐付け

Tier-0ルータの詳細な設定は以下のようなlocale-servicesというURL体系で管理されます。GUIで操作した場合は<ロケールサービスID>に「default」という名前が使用されますので、API操作するときも「defualt」という名前を使用します。

 https://<fqdn>/policy/api/v1/infra/tier-0s/<t0ルータID>/locale-services/<ロケールサービスID>

Tier-0とEdgeクラスタを紐づけるRest API操作は以下の通りです。

CLUSTER_NAME="cluster01"
CLUSTER_ID=$(curl --request GET \
  -u admin:P@ssw0rdP@ssw0rd \
  --header "Content-Type:application/json" \
  -k https://192.168.1.121/api/v1/edge-clusters \
  | jq -r --arg arg ${CLUSTER_NAME} ' .results[] | select ( .display_name == $arg ) | .id ' )

curl --request PUT -d @- \
  -u admin:P@ssw0rdP@ssw0rd \
  --header "Content-Type:application/json" \
  -k https://192.168.1.121/policy/api/v1/infra/tier-0s/t0-router/locale-services/default << EOF
{
  "edge_cluster_path" : "/infra/sites/default/enforcement-points/default/edge-clusters/${CLUSTER_ID}",
  "resource_type" : "LocaleServices",
  "display_name" : "default"
}
EOF

Tier-0ゲートウェイのインターフェース作成

Tier-0にインターフェースを付与するRest API操作は以下の通りです。

CLUSTER_NAME="cluster01"
CLUSTER_ID=$(curl --request GET \
  -u admin:P@ssw0rdP@ssw0rd \
  --header "Content-Type:application/json" \
  -k https://192.168.1.121/api/v1/edge-clusters \
  | jq -r --arg arg ${CLUSTER_NAME} ' .results[] | select ( .display_name == $arg ) | .id ' )

curl --request PUT -d @- \
  -u admin:P@ssw0rdP@ssw0rd \
  --header "Content-Type:application/json" \
  -k https://192.168.1.121/policy/api/v1/infra/tier-0s/t0-router/locale-services/default/interfaces/external-131 << EOF
{
  "edge_path" : "/infra/sites/default/enforcement-points/default/edge-clusters/957930cd-9ca6-4de6-a455-7e02f3df2774/edge-nodes/0",
  "segment_path" : "/infra/segments/external-vlan3",
  "type" : "EXTERNAL",
  "resource_type" : "Tier0Interface",
  "display_name" : "external-131",
  "subnets" : [ {
    "ip_addresses" : [ "192.168.3.131" ],
    "prefix_len" : 24
  } ]
}
EOF

curl --request PUT -d @- \
  -u admin:P@ssw0rdP@ssw0rd \
  --header "Content-Type:application/json" \
  -k https://192.168.1.121/policy/api/v1/infra/tier-0s/t0-router/locale-services/default/interfaces/external-132 << EOF
{
  "edge_path" : "/infra/sites/default/enforcement-points/default/edge-clusters/957930cd-9ca6-4de6-a455-7e02f3df2774/edge-nodes/1",
  "segment_path" : "/infra/segments/external-vlan3",
  "type" : "EXTERNAL",
  "resource_type" : "Tier0Interface",
  "display_name" : "external-132",
  "subnets" : [ {
    "ip_addresses" : [ "192.168.3.132" ],
    "prefix_len" : 24
  } ]
}
EOF
タイトルとURLをコピーしました