當基礎結構做好延伸第 2 層網路的準備後,您即可將 NSX-V 主機移轉至 NSX 主機傳輸節點。

必要條件

  • 請設定數個關於主機移轉的設定,包括移轉順序和啟用主機。請務必瞭解這些設定的效果。如需詳細資訊,請參閱設定 NSX-V 主機移轉。使用分散式防火牆或 vSphere Distributed Switch 7.0 時,更有必要瞭解主機移轉設定。
  • VMware vCenter UI 中,移至主機和叢集頁面,並確認所有 ESXi 主機都處於運作狀態。解決主機的任何問題,包括已中斷連線的狀態。若要進入及結束維護模式,不得有擱置中的重新開機或擱置中的工作。

程序

  1. 移轉主機頁面上,按一下開始

    如果您針對所有主機群組選取就地自動維護移轉模式,主機移轉隨即啟動。請注意,在自動維護模式下,移轉協調器不會重新設定已關閉電源的虛擬機器。移轉之後,您需要先手動設定這些虛擬機器,然後再開啟這些虛擬機器的電源。

  2. 如果您為任何主機群組選取了手動維護移轉模式,則必須為每個虛擬機器完成下列其中一項工作,讓主機可以進入維護模式。
    選項 動作
    關閉虛擬機器電源或暫停虛擬機器。
    1. 以滑鼠右鍵按一下虛擬機器,然後選取電源 > 關閉電源電源 > 關閉客體作業系統,或電源 > 暫停
    2. 在主機移轉後,將虛擬機器介面連結至適當的 NSX 區段,並開啟虛擬機器的電源。
    使用 vMotion 移動虛擬機器。 以滑鼠右鍵按一下虛擬機器,然後選取 [移轉]。依照提示將虛擬機器移至其他主機。請注意,在移轉期間,移轉協調器透過 vMotion 將虛擬機器移至受臨時規則保護的特定連接埠以保持安全性。對於手動 vMotion,不會將虛擬機移至這些連接埠,因此,可能存在安全性漏洞。若要手動透過 vMotion 進行移動,必須使用 vSphere API 移轉虛擬機器,其中,網路支援必須指向與 NSX 區段對應的 OpaqueNetwork 識別碼 (使用 NVDS 時),或者指向 VDS 連接埠群組識別碼 (使用 VDS 7 時)。在這兩種情況下,網路裝置的 externalId 必須設定為「VM_UUID:vNIC_ID」字串,其中 VM_UUID 是虛擬機器的執行個體 UUID,vNIC_ID 是虛擬機器的 vNIC 索引,其中第一個 vNIC 為 4000。
    使用冷移轉移動虛擬機器。
    1. 以滑鼠右鍵按一下虛擬機器,然後選取電源 > 關閉電源電源 > 關閉客體作業系統,或電源 > 暫停
    2. 以滑鼠右鍵按一下虛擬機器,然後選取 [移轉]。依照提示,將虛擬機器移至不同的主機,並將虛擬機器介面連線至適當的 NSX 區段。
    以下 Python 程式碼用於為虛擬機器中的每個 vNIC 指定外部識別碼,然後透過 vMotion 移動虛擬機器,以便這些 vNIC 使用正確的連接埠連線至識別碼為「ls_id」的 NSX 區段:
    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

結果

使用就地移轉模式將主機移轉至 NSX 後,您可能會看到嚴重警示,並顯示訊息網路連線中斷。此警示會在 vSphere Distributed Switch (VDS) 6.5 或 6.7 移轉至 N-VDS 時發生,因為主機不再有任何實體 NIC 連線至其先前所連線的 VDS。若要將已移轉的主機還原為已連線狀態,請在每部主機上按一下重設為綠色,然後隱藏該警告 (如果有)。

如果主機無法移轉,您可以將其主機群組移至群組清單的底端。您在解決故障主機的問題時,可以繼續移轉其他主機群組。

如果主機無法移轉,則在所有進行中的主機移轉完成後,移轉程序將會暫停。當您解決主機的問題之後,按一下重試,以重試移轉故障的主機。如果該主機仍無法移轉,則可以在該主機上手動設定 NSX 或從系統中移除該主機。在這種情況下,在主機移轉步驟結束時,由於無法移轉的主機,將不會啟用完成按鈕。您必須使用 REST API 用戶端 (例如 Postman 或 curl) 呼叫 REST API POST https://<nsx-mgr-IP>/api/v1/migration?action=finalize_infra (<nsx-mgr-IP> 是執行移轉服務所在位置的 NSX Manager 的 IP 位址) 才能完成移轉,然後執行移轉後工作。

下一步

  1. 確認預期的組態項目已移轉至 NSX 環境。例如,請確認是否已成功移轉下列組態:
    • 使用者定義的分散式防火牆規則。
    • 所有群組物件,例如 IP 集合、群組、標籤等。
    • 有效成員會顯示在動態群組中。
    • 標籤會套用至已移轉的工作負載虛擬機器。
    確認執行於 NSX 主機上的虛擬機器已連線至正確的 NSX 覆疊區段,並驗證下列連線:
    • NSX 網路中虛擬機器對虛擬機器的連線。
    • 虛擬機器對 NSX 網路外部機器的連線 (若 DFW 規則允許的話)。
  2. 移轉主機頁面上,按一下完成

    此時會出現對話方塊,以確認完成移轉。如果已完成移轉,系統會清除所有移轉詳細資料。無法再檢閱此移轉的設定。例如,解決組態頁面上輸入的內容,或已排除在移轉之外的主機。