将 Edge 服务网关 虚拟机迁移到 NSX-T Edge 节点,并确认路由和服务都正常运行后,可以将 NSX-V 主机迁移到 NSX-T 主机传输节点。
您可以配置多个与主机迁移相关的设置,包括迁移顺序和启用主机。确保您了解这些设置的影响。有关详细信息,请参见配置 NSX-V 主机迁移。如果您使用分布式防火墙或 vSphere Distributed Switch 7.0 或更高版本,了解主机迁移设置是尤其重要的。
有关在主机迁移期间发生的情况的详细信息,请参见在端到端迁移中执行主机迁移期间所做的更改。
如果
NSX-V 环境中的安全策略使用合作伙伴服务以提供客户机侦测、网络侦测或两者,请选择主机迁移模式,如下表中所示。
合作伙伴服务 |
主机迁移模式 |
仅客户机侦测 |
支持就地和维护模式。 |
仅网络侦测 |
支持维护模式。不过,建议使用自动维护模式。 不支持就地模式。 |
客户机侦测和网络侦测 |
支持维护模式。 不支持就地模式。 |
重要说明: 在迁移
NSX-V 工作负载上运行的合作伙伴服务之前,请咨询 VMware 合作伙伴。向合作伙伴核实是否支持将其服务迁移到
NSX-T,并在迁移之前征求他们的意见。在将合作伙伴服务迁移到
NSX-T 时,合作伙伴具有自己的指导意见。
小心: 主机迁移应在与 Edge 迁移相同的维护时段内完成。
您必须先禁用 IPFIX 并重新引导 ESXi 主机,然后再迁移这些主机。
如果 NSX-V 环境中的合作伙伴服务提供客户机侦测服务或同时提供客户机侦测和网络侦测服务,请按照本主题中的过程逐个迁移集群。在将所有主机集群迁移到 NSX-T 后,请在每个 NSX-T 集群中执行基于主机的服务部署。
如果 NSX-V 环境中的合作伙伴服务仅提供网络侦测服务,请使用迁移具有网络侦测服务的主机中所述的主机迁移方法。
前提条件
- 确认 Edge 迁移已完成且所有路由和服务都正常运行。
- 在 vCenter Server UI 中,转到主机和集群页面,然后确认所有 ESXi 主机均处于正常运行状态。解决主机的任何问题,包括断开连接状态。不能有任何挂起的重新引导或挂起的任务才能进入和退出维护模式。
过程
- 在迁移主机页面上,单击开始。
如果为所有主机组选择了就地或自动维护迁移模式,将开始进行主机迁移。请注意,在自动维护模式下,迁移协调器不会重新配置已关闭电源的虚拟机。迁移后,您需要先手动配置这些虚拟机,然后再打开这些虚拟机的电源。
- 如果为任何主机组选择了手动维护迁移模式,则必须为每个虚拟机完成以下任务之一,以便主机能够进入维护模式。
选项 |
操作 |
关闭虚拟机电源或将虚拟机挂起。 |
- 右键单击虚拟机,并选择、或。
- 迁移主机后,将虚拟机接口连接到相应的 NSX-T 分段,然后打开虚拟机电源。
|
使用 vMotion 移动虚拟机。 |
右键单击虚拟机,并选择“迁移”。按照提示将虚拟机移至其他主机。请注意,在迁移过程中,迁移协调器通过 vMotion 将虚拟机移动到受临时规则保护的特定端口以保持安全性。对于手动 vMotion,不会将虚拟机移动到这些端口,因此,可能存在安全漏洞。要手动通过 vMotion 进行移动,必须使用 vSphere API 迁移虚拟机,其中,网络支持必须指向与 NSX 分段对应的 OpaqueNetwork ID(使用 NVDS 时),或者指向 VDS 端口组 ID(使用 VDS 7 时)。在这两种情况下,网络设备的 externalId 必须设置为字符串“VM_UUID:vNIC_ID”,其中 VM_UUID 是虚拟机的实例 UUID,vNIC_ID 是虚拟机的 vNIC 索引,其中第一个 vNIC 为 4000。 |
使用冷迁移移动虚拟机。 |
- 右键单击虚拟机,并选择、或。
- 右键单击虚拟机,并选择“迁移”。按照提示将虚拟机移至其他主机,并将其接口连接到相应的 NSX-T 分段。
|
以下 Python 代码用于为虚拟机中的每个 vNIC 指定外部 ID,然后通过 vMotion 移动虚拟机,以便这些 vNIC 使用正确的端口连接到 ID 为“ls_id”的
NSX-T 分段:
devices = vmObject.config.hardware.device
nic_devices = [device for device in devices if isinstance(device, vim.Vm.device.VirtualEthernetCard)]
vnic_changes = []
for device in nic_devices:
vif_id = vmObject.config.instanceUuid + ":" + str(device.key)
vnic_spec = self._get_nsxt_vnic_spec(device, ls_id, vif_id)
vnic_changes.append(vnic_spec)
relocate_spec = vim.Vm.RelocateSpec()
relocate_spec.SetDeviceChange(vnic_changes)
# set other fields in the relocate_spec
vmotion_task = vmObject.Relocate(relocate_spec)
WaitForTask(vmotion_task)
def _get_nsxt_vnic_spec(self, device, ls_id, vif_id):
nsxt_backing = vim.Vm.Device.VirtualEthernetCard.OpaqueNetworkBackingInfo()
nsxt_backing.SetOpaqueNetworkId(ls_id)
nsxt_backing.SetOpaqueNetworkType('nsx.LogicalSwitch')
device.SetBacking(nsxt_backing)
device.SetExternalId(vif_id)
dev_spec = vim.Vm.Device.VirtualDeviceSpec()
dev_spec.SetOperation(vim.Vm.Device.VirtualDeviceSpec.Operation.edit)
dev_spec.SetDevice(device)
return dev_spec
有关完整脚本的示例,请参见 https://github.com/dixonly/samples/blob/main/vmotion.py。
在移动或挂起所有虚拟机或将其关闭电源后,主机将进入维护模式。如果希望在要迁移的主机进入维护模式之前使用冷迁移将虚拟机移动到其他主机,必须在移动虚拟机时,至少让一个虚拟机保持运行状态。最后一个虚拟机断开电源或挂起后,主机会进入维护模式,并开始将主机迁移到
NSX-T 的过程。
结果
在主机使用就地迁移模式迁移到 NSX-T 后,您可能会看到严重警报,并显示网络连接中断 (Network connectivity lost) 消息。在 vSphere Distributed Switch (VDS) 6.5 或 6.7 迁移到 N-VDS 时,将会发出该警报,因为主机不再将物理网卡连接到它以前连接到的 VDS。要将迁移的主机恢复为“已连接”状态,请在每个主机上单击重置为绿色并禁止警告(如果有)。
如果某主机迁移失败,可以将它所在的主机组移动到组列表底部。这样在解决失败主机存在的问题时,可以继续迁移其他主机组。
如果某主机迁移失败,则迁移将在所有正在进行的主机迁移完成后暂停。解决了主机存在的问题后,请单击重试以重试迁移失败的主机。如果该主机仍无法迁移,则可以在该主机上手动配置 NSX-T 或从系统中移除该主机。在这种情况下,在主机迁移步骤结束时,由于主机迁移失败,将不会启用完成按钮。您需要使用 REST API 客户端(例如 postman 或 curl)调用 REST API POST https://<nsx-mgr-IP>/api/v1/migration?action=finalize_infra
(<nsx-mgr-IP> 是运行迁移服务的 NSX Manager 的 IP 地址)来完成迁移,然后执行迁移后任务。
有关解决其他主机迁移问题的信息,请参见对迁移问题进行故障排除。
下一步做什么
如果迁移的安全策略使用第三方合作伙伴服务,请在
NSX-T 中部署合作伙伴服务实例。有关详细说明,请参见: