如果具有单独的 ESXi 主机,您无法通过基于 Web 的 vSphere Web Client 访问主机虚拟机。在这种情况下,您可以使用该过程将虚拟机连接到 NSX 逻辑交换机。

该过程中显示的示例说明了如何将名为 app-vm 的虚拟机连接到名为 app-switch 的逻辑交换机。

该图显示虚拟机连接到一个逻辑交换机

前提条件

  • 必须在已添加到 NSX Fabric 的 Hypervisor 上托管虚拟机。
  • Fabric 节点必须具有 NSX 管理平面 (MPA) 和 NSX 控制平面 (LCP) 连接。
  • 必须将 Fabric 节点添加到传输区域中。
  • 必须创建一个逻辑交换机。
  • 您必须具有 NSX Manager API 的访问权限。
  • 您必须具有虚拟机的 VMX 文件的写入访问权限。

过程

  1. 通过使用(基于安装的)vSphere Client 应用程序或某种其他虚拟机管理工具,编辑虚拟机并添加一个 VMXNET 3 以太网适配器。
    选择任何命名的网络。您将在后面的步骤中更改网络连接。

    “添加硬件”对话框的屏幕截图

  2. 使用 NSX API 发出 GET https://<nsx-mgr>/api/v1/fabric/virtual-machines/<VM-ID> API 调用。
    在结果中,找到虚拟机的 externalId。
    例如:
    GET https://<nsx-mgr>/api/v1/fabric/virtual-machines/60a5a5d5-ea2b-407e-a806-4fdc8468f735
    
    {
      "resource_type": "VirtualMachine",
      "id": "60a5a5d5-ea2b-407e-a806-4fdc8468f735",
      "display_name": "app-vm",
      "compute_ids": [
        "instanceUuid:50066bae-0f8a-386b-e62e-b0b9c6013a51",
        "moIdOnHost:5",
        "externalId:50066bae-0f8a-386b-e62e-b0b9c6013a51",
        "hostLocalId:5",
        "locationId:564dc020-1565-e3f4-f591-ee3953eef3ff",
        "biosUuid:4206f47d-fef7-08c5-5bf7-ea26a4c6b18d"
      ],
      "external_id": "50066bae-0f8a-386b-e62e-b0b9c6013a51",
      "type": "REGULAR",
      "host_id": "cb82b0fa-a8f1-11e5-92a9-6b7d1f8661fa",
      "local_id_on_host": "5"
    }
    
    
    
  3. 关闭虚拟机电源并从主机中取消注册虚拟机。

    您可以使用虚拟机管理工具或 ESXi CLI(如下所示)。

    [user@host:~] vim-cmd /vmsvc/getallvms
    Vmid    Name             File               Guest OS      Version   Annotation
    5      app-vm   [ds2] app-vm/app-vm.vmx   ubuntuGuest     vmx-08
    8      web-vm   [ds2] web-vm/web-vm.vmx   ubuntu64Guest   vmx-08
    
    [user@host:~] vim-cmd /vmsvc/power.off 5 
    Powering off VM:
    
    [user@host:~] vim-cmd /vmsvc/unregister 5
    
    
  4. NSX Manager UI 中,获取逻辑交换机 ID。
    例如:

    显示逻辑交换机摘要的 NSX Manager 屏幕

  5. 修改虚拟机的 VMX 文件。
    删除 ethernet1.networkName = "<name>" 字段并添加以下字段:
    • ethernet1.opaqueNetwork.id = "<logical switch's ID>"
    • ethernet1.opaqueNetwork.type = "nsx.LogicalSwitch"
    • ethernet1.externalId = "<VM's externalId>"
    • ethernet1.connected = "TRUE"
    • ethernet1.startConnected = "TRUE"

    例如:

    OLD
    ethernet1.pciSlotNumber = "224"
    ethernet1.virtualDev = "vmxnet3"
    ethernet1.networkName = "VM Network"
    ethernet1.addressType = "vpx"
    ethernet1.generatedAddress = "00:50:56:86:7b:d7"
    ethernet1.uptCompatibility = "true"
    ethernet1.present = "TRUE"
    
    
    NEW
    ethernet1.pciSlotNumber = "224"
    ethernet1.virtualDev = "vmxnet3"
    ethernet1.addressType = "vpx"
    ethernet1.generatedAddress = "00:50:56:86:7b:d7"
    ethernet1.uptCompatibility = "true"
    ethernet1.present = "TRUE"
    ethernet1.opaqueNetwork.id = "22b22448-38bc-419b-bea8-b51126bec7ad"
    ethernet1.opaqueNetwork.type = "nsx.LogicalSwitch"
    ethernet1.externalId = "50066bae-0f8a-386b-e62e-b0b9c6013a51"
    ethernet1.connected = "TRUE"
    ethernet1.startConnected = "TRUE"
    
    
  6. NSX Manager UI 中,添加一个逻辑交换机端口,然后使用虚拟机的 externalId 进行 VIF 连接。
  7. 重新注册虚拟机,然后打开虚拟机电源。

    您可以使用虚拟机管理工具或 ESXi CLI(如下所示)。

    [user@host:~] vim-cmd /solo/register /path/to/file.vmx
    
    For example:
    [user@host:~] vim-cmd solo/registervm /vmfs/volumes/355f2049-6c704347/app-vm/app-vm.vmx
    9
    
    [user@host:~] vim-cmd /vmsvc/power.on 9 
    Powering on VM:
    
    

结果

NSX Manager UI 中的 管理器模式下,选择 网络 > 逻辑交换机 > 端口。找到与虚拟机的 externalId 匹配的 VIF 连接 ID,并确保管理和运行状态为“已连接/已连接”。

如果两个虚拟机连接到同一逻辑交换机并在同一子网中配置了 IP 地址,则它们应该可以 ping 通对方。

下一步做什么

添加逻辑路由器。

您可以监控逻辑交换机端口上的活动以解决问题。请参阅NSX 管理指南中的“监控逻辑交换机端口活动”。