您可以在一个集群上同时配置 NSX Manager、主机传输节点和 NSX Edge 虚拟机。集群中的每个主机都提供了两个为 NSX-T 配置的物理网卡。

重要事项:NSX-T 2.4.2 或 2.5 版本开始,可部署完全合并的单一 vSphere 集群拓扑。

此过程中引用的拓扑将使用:

  • 通过集群中的主机来配置的 vSAN。
  • 每个主机中的至少两个物理网卡。
  • vMotion 和 Management VMkernel 接口。
图 1. 拓扑:单个 N-VDS 交换机,用于管理主机与 NSX Edge 和客户机虚拟机之间的通信

前提条件

  • 所有主机必须属于同一个 vSphere 集群。
  • 每个主机都启用了两个物理网卡。
  • vCenter Server 注册所有主机。
  • vCenter Server 上确认共享存储器可供这些主机使用。
  • 主机 TEP IP 和 NSX Edge TEP IP 必须位于不同的 VLAN 分段中。来自主机工作负载的任何南北向流量封装在 GENEVE 中并发送到 NSX Edge 节点(将源 IP 作为主机 TEP,并将目标 IP 作为 NSX Edge TEP)。由于这些 TEP 必须属于不同的 VLAN 或子网,必须通过架顶式 (TOR) 交换机路由流量。在该图中,用于主机的传输 VLAN 为 VLAN 200,用于 NSX Edge 的传输 VLAN 为 VLAN 600。为主机 TEP 和 NSX Edge TEP 配置单独 VLAN 的原因是,TEP 只能在物理网络适配器上发送或接收流量,而不能从内部端口组中接收流量。

过程

  1. 准备四个 ESXi 主机,vmnic0 位于 vSS 或 vDS 上,vmnic1 处于空闲状态。
  2. 在主机 1 上,安装 vCenter Server,配置 vSS/vDS 端口组,然后在主机上创建的端口组中安装 NSX Manager
  3. 准备要用作传输节点的 ESXi 主机 1、2、3 和 4。
    1. 使用指定的绑定策略创建 VLAN 传输区域和覆盖网络传输区域。请参见创建传输区域
    2. 为主机的隧道端点 IP 地址创建一个 IP 池或 DHCP。请参见创建 IP 池以分配隧道端点 IP 地址
    3. 为 Edge 节点的隧道端点 IP 地址创建一个 IP 池或 DHCP。请参见创建 IP 池以分配隧道端点 IP 地址
    4. 创建包含指定绑定策略的上行链路配置文件。请参见创建上行链路配置文件
    5. 通过应用传输节点配置文件来将主机配置为传输节点。在此步骤中,传输节点配置文件仅将 vmnic1(未使用的物理网卡)迁移到 N-VDS 交换机。在将传输节点配置文件应用于集群主机后,将创建 N-VDS 交换机,并将 vmnic1 连接到 N-VDS 交换机。请参见添加传输节点配置文件
    所有主机上的 vmnic1 都会添加到 N-VDS 交换机。因此,在两个物理网卡中,有一个会迁移到 N-VDS 交换机。vmnic0 接口仍会连接到 vSS 或 vDS 交换机,这可确保到主机的连接可用。
  4. NSX Manager UI 中,为 NSX ManagervCenter ServerNSX Edge 创建支持 VLAN 的分段。请确保为每个支持 VLAN 的分段选择正确的绑定策略。不要将 VLAN 中继逻辑交换机用作目标。在 NSX Manager UI 中创建目标分段时,在输入 VLAN 列表字段中,只输入一个 VLAN 值。
  5. 在主机 2、主机 3 和主机 4 上,必须将 vmk0 适配器和 vmnic0 一起从 VSS/VDS 迁移到 N-VDS 交换机。更新每个主机上的 NSX-T 配置。迁移时,请确保:
    • vmk0 已映射到 Edge 管理分段
    • vmnic0 已映射到活动上行链路 uplink-1
  6. 在 vCenter Server 中,转至主机 2、主机 3 和主机 4,同时确认 vmk0 适配器已连接到 N-VDS 上的 vmnic0 物理网卡且必须可访问。
  7. 在 NSX Manager 用户界面中,转至主机 2、主机 3 和主机 4,并确认这两个物理网卡都位于 N-VDS 交换机上。
  8. 在主机 2 和主机 3 上,从 NSX Manager UI 中安装 NSX Manager 并将 NSX Manager 连接到分段。等待大约 10 分钟以形成集群,并验证集群是否已形成。
  9. 关闭第一个 NSX Manager 节点的电源。等待大约 10 分钟。
  10. NSX Manager 和 vCenter Server 重新连接到先前创建的逻辑交换机。在主机 4 上,打开 NSX Manager 的电源。等待大约 10 分钟,然后验证集群是否处于稳定状态。在第一个 NSX Manager 关闭电源后,执行冷 vMotion 以将 NSX ManagervCenter Server 从主机 1 迁移到主机 4。

    有关 vMotion 限制的信息,请参见 https://kb.vmware.com/s/article/56991

  11. NSX Manager 用户界面中,转至主机 1,将 vmk0 和 vmnic0 一起从 VSS 迁移到 N-VDS 交换机。
  12. 用于安装的网络映射字段中,确保 vmk0 适配器已映射到 N-VDS 交换机上的 Edge 管理分段
  13. 在主机 1 上,通过 NSX Manager UI 安装 NSX Edge 虚拟机。
  14. NSX Edge 虚拟机加入管理平面。
  15. 要建立南北向流量连接,请为 NSX Edge 虚拟机配置一个外部路由器。
  16. 验证 NSX Edge 虚拟机与外部路由器之间的南北向流量连接。
  17. 如果出现了要重新引导整个集群的电源故障,则 NSX-T 管理组件可能无法启动并与 N-VDS 通信。为了避免出现这种情况,请执行以下步骤:
    小心: 错误地运行任何 API 命令都会导致与 NSX Manager 的连接中断。
    注: 在单集群配置中,管理组件将作为虚拟机托管在 N-VDS 交换机上。出于安全考虑,管理组件默认情况下连接到的 N-VDS 端口会初始化为已阻止的端口。如果发生电源故障而需要重新引导所有四个主机,则会将管理虚拟机端口初始化为已阻止状态。为避免出现循环依赖关系,建议在 N-VDS 上创建处于未阻止状态的端口。未阻止的端口可确保在集群重新引导时,NSX-T 管理组件可以与 N-VDS 通信以恢复正常功能。
    在该子任务结束时,迁移命令会采用以下信息:
    • NSX Manager 所在主机节点的 UUID。
    • NSX Manager 虚拟机的 UUID,并且会将其迁移到处于未阻止状态的静态逻辑端口。
    如果所有主机都已关闭电源或都已打开电源,或者如果 NSX Manager 虚拟机移至另一台主机,则 NSX Manager 在恢复后会连接到未阻止的端口,从而防止与 NSX-T 管理组件的连接中断。
    1. NSX Manager UI 中,转到管理器模式 > 网络 > 逻辑交换机选项卡(3.0 和更高版本)。搜索分段计算虚拟机分段。选择概览选项卡,然后找到并复制 UUID。此示例中使用的 UUID 为 c3fd8e1b-5b89-478e-abb5-d55603f04452
    2. 为每个 NSX Manager 各创建一个 JSON 负载。
      • 在 JSON 负载中,将 logical_switch_id 的值替换为之前创建的 Edge 管理分段的 UUID,以便在初始化状态为 UNBLOCKED_VLAN 时创建逻辑端口。
      • 在每个 NSX Manager 的负载中,attachment_type_iddisplay_name 的值各不相同。
      重要事项: 重复此步骤以创建总共四个 JSON 文件 - 其中三个文件用于 NSX Manager,一个用于 vCenter Server Appliance (VCSA)。
      port1.json
      {
      "admin_state": "UP",
      "attachment": {
      "attachment_type": "VIF",
      "id": "nsxmgr-port-147"
      },
      "display_name": "NSX Manager Node 147 Port",
      "init_state": "UNBLOCKED_VLAN",
      "logical_switch_id": "c3fd8e1b-5b89-478e-abb5-d55603f04452"
      }
      其中,
      • admin_state:端口的状态。必须为“已启动”。
      • attachment_type:必须设置为 VIF。所有虚拟机都已通过 VIF ID 连接到 NSX-T 交换机端口。
      • id:VIF ID。每个 NSX Manager 的值必须是唯一的。如果您有三个 NSX Manager,则将有三个负载,其中每个负载必须具有不同的 VIF ID。要生成唯一的 UUID,请登录到 NSX Manager 的 root shell,然后运行 /usr/bin/uuidgen 以生成唯一的 UUID。
      • display_name:必须是唯一的,以便帮助 NSX 管理员将其与其他 NSX Manager 显示名称区分开来。
      • init_state:如果将值设置为 UNBLOCKED_VLAN,NSX 会为 NSX Manager 取消阻止端口,即使 NSX Manager 不可用也是如此。
      • logical_switch_idEdge 管理分段的逻辑交换机 ID。
    3. 如果部署了三个 NSX Manager,则需要创建三个负载,即为 NSX Manager 的每个逻辑端口创建一个负载。例如,port1.json、port2.json、port3.json。

      运行以下命令以创建负载。

      curl -X POST -k -u '<username>:<password>' -H 'Content-Type:application/json' -d @port1.json https://nsxmgr/api/v1/logical-ports

      curl -X POST -k -u '<username>:<password>' -H 'Content-Type:application/json' -d @port2.json https://nsxmgr/api/v1/logical-ports

      curl -X POST -k -u '<username>:<password>' -H 'Content-Type:application/json' -d @port3.json https://nsxmgr/api/v1/logical-ports

      通过执行 API 创建逻辑端口的示例。

      root@nsx-mgr-147:/var/CollapsedCluster# curl -X POST -k -u 
      '<username>:<password>' -H 'Content-Type:application/json' -d @port1.json https://localhost/api/v1/logical-ports
      {
        "logical_switch_id" : "c3fd8e1b-5b89-478e-abb5-d55603f04452",
        "attachment" : {
          "attachment_type" : "VIF",
          "id" : "nsxmgr-port-147"
        },
        "admin_state" : "UP",
        "address_bindings" : [ ],
        "switching_profile_ids" : [ {
          "key" : "SwitchSecuritySwitchingProfile",
          "value" : "fbc4fb17-83d9-4b53-a286-ccdf04301888"
        }, {
          "key" : "SpoofGuardSwitchingProfile",
          "value" : "fad98876-d7ff-11e4-b9d6-1681e6b88ec1"
        }, {
          "key" : "IpDiscoverySwitchingProfile",
          "value" : "0c403bc9-7773-4680-a5cc-847ed0f9f52e"
        }, {
          "key" : "MacManagementSwitchingProfile",
          "value" : "1e7101c8-cfef-415a-9c8c-ce3d8dd078fb"
        }, {
          "key" : "PortMirroringSwitchingProfile",
          "value" : "93b4b7e8-f116-415d-a50c-3364611b5d09"
        }, {
          "key" : "QosSwitchingProfile",
          "value" : "f313290b-eba8-4262-bd93-fab5026e9495"
        } ],
        "init_state" : "UNBLOCKED_VLAN",
        "ignore_address_bindings" : [ ],
        "resource_type" : "LogicalPort",
        "id" : "02e0d76f-83fa-4839-a525-855b47ecb647",
        "display_name" : "NSX Manager Node 147 Port",
        "_create_user" : "admin",
        "_create_time" : 1574716624192,
        "_last_modified_user" : "admin",
        "_last_modified_time" : 1574716624192,
        "_system_owned" : false,
        "_protection" : "NOT_PROTECTED",
        "_revision" : 0
    4. 确认已创建逻辑端口。
    5. 找到每个 NSX Manager 的虚拟机实例 ID。您可以从清单 → 虚拟机中检索实例 ID,选择 NSX Manager 虚拟机,选择概览选项卡,然后复制实例 ID。或者,您可以从 vCenter Server 的受管对象浏览器 (Managed Object Browser, MOB) 中搜索实例 ID。将 :4000 添加到 ID,以获取 NSX Manager 虚拟机的 VNIC 硬件索引。
      例如,如果虚拟机的实例 UUID 为 503c9e2b-0abf-a91c-319c-1d2487245c08,则其 vnic 索引将为 503c9e2b-0abf-a91c-319c-1d2487245c08:4000。三个 NSX Manager vnic 索引分别为:

      mgr1 vnic: 503c9e2b-0abf-a91c-319c-1d2487245c08:4000

      mgr2 vnic: 503c76d4-3f7f-ed5e-2878-cffc24df5a88:4000

      mgr3 vnic: 503cafd5-692e-d054-6463-230662590758:4000

    6. 找到托管 NSX Manager 的传输节点 ID。如果您有三个 NSX Manager,并且分别托管在不同的传输节点上,则请记下传输节点 ID。例如,三个传输节点 ID 分别为:
      tn1: 12d19875-90ed-4c78-a6bb-a3b1dfe0d5ea
      tn2: 4b6e182e-0ee3-403f-926a-fb7c8408a9b7
      tn3: d7cec2c9-b776-4829-beea-1258d8b8d59b
    7. 在将 NSX Manager 迁移到新创建的端口时,检索要用作负载的传输节点配置。
      例如,
      curl -k -u '<user>:<password' https://nsxmgr/api/v1/transport-nodes/12d19875-90ed-4c78-a6bb-a3b1dfe0d5ea > tn1.json
      curl -k -u '<user>:<password' https://nsxmgr/api/v1/transport-nodes/4b6e182e-0ee3-403f-926a-fb7c8408a9b7 > tn2.json
      curl -k -u '<user>:<password' https://nsxmgr/api/v1/transport-nodes/d7cec2c9-b776-4829-beea-1258d8b8d59b > tn3.json
    8. NSX Manager 从上一个端口迁移到在 Edge 管理分段上新创建的未阻止逻辑端口。VIF-ID 值是先前为 NSX Manager 创建的端口的连接 ID。
      迁移 NSX Manager 时需要使用以下参数:
      • 传输节点 ID
      • 传输节点配置
      • NSX Manager VNIC 硬件索引
      • NSX Manager VIF ID
      用于将 NSX Manager 迁移到新创建的未阻止端口的 API 命令为:
      /api/v1/transport-nodes/<TN-ID>?vnic=<VNIC-ID>&vnic_migration_dest=<VIF-ID>

      例如,

      root@nsx-mgr-147:/var/CollapsedCluster# curl -k -X PUT -u 'admin:VMware1!VMware1!' -H 'Content-Type:application/json' -d @<tn1>.json 'https://localhost/api/v1/transport-nodes/11161331-11f8-45c7-8747-34e7218b687f?vnic=5028d756-d36f-719e-3db5-7ae24aa1d6f3:4000&vnic_migration_dest=nsxmgr-port-147'
    9. 确保采用静态方式创建的逻辑端口已启动
    10. 对集群中的每个 NSX Manager 重复上述步骤。