我們知道vCloud Director對於如何將既有vCenter納管下的虛擬機轉移到某個租戶的環境有很多種不同的作法,今天我們來討論一下其中的”VM Auto-Import”的方式。並且我們也會稍微分析一下這個做法和所謂的”Adopt a vCenter”的做法的一些差異。
VM Auto Import
先來看一下VM Auto Import的做法,我們假設某個租戶的虛機已運行在某處,有可能是在他自己的機房或是已經被導出成OVA,現在我們想要將那些虛擬機器納入到vCloud Director的管轄範圍內,我們當然可以一台一台的將那些虛擬機放到vCenter,再從vCD的UI把那些虛機從vCenter Import進來(關機狀態),但這裡Auto Import的做法是把那些虛擬機放到Provider VDC裏的vCenter下,屬於那個租戶的資源池裡,vCD就可以自動發現到那些我們想要導入的虛擬機器,而且將那些虛擬機自動的放到vCD中屬於該租戶相對應的虛擬資料中心裡。
我們實際看一下是如何做的:
首先要啟動這個功能,到下圖所在位置點選”VM discovery enabled”:
為了模擬一個新的用戶,在vCD裡新增一個組織,在這裡我命名為T1,然後再新增一個虛擬資料中心給它。
記得順便也要把組織網路也是先建立好,如下。
這樣我們就有一個空間用來放未來要自動導入的虛機了(當然也可導入到既有的租戶空間去),一開始這個租戶的虛擬數據中心是空的,如下:
然後我們將要被導入T1這個租戶的虛機,放到屬於該租戶相對應於vCenter中的虛擬資料中心的資源池裡,在這裡我是Clone一台Linux,新增過程做了Customization並指明克隆完後開機,如下圖所示,克隆過程我將它放進相對應的組織虛擬資料中心的資源池裡:
佈署完成後我們看到它在vCenter裡的狀況是這樣的:
理論上我們已經按照要求把他放入指定的用戶裡的Resource Pool裡了,可是我們在vCD裡面卻還是看不到這台虛擬機顯示在用戶的Org VDC裡,怎麼一回事?
從vCD的release notes中我們看到以下要求:
Limitations When Adopting a Discovered vApp
When you adopt a discovered vApp that includes a powered-on VM, the process cannot always reconfigure the VM to be compatible with the target VDC.
- The VM must not include an IDE hard disk controller.
- The VM must be able to connect to a portgroup backing an existing network in the containing organization VDC.
- The containing organization VDC must be backed by a storage profile that includes the datastore to which the VM is currently deployed.
原來我們剛生成的VM網卡沒連接在組織資料中心的網路上,所以沒法被自動發現,我們將之連接上組織網路後,過一會在vCD中就可看到有一vApp被自動帶出了(vCD每隔3分鐘檢查一次),如下圖所示。
我們會看到有一前綴為”Discovered”的vApp被自動帶入到租戶的環境裡,其中包含的VM即為我們放入資源池內虛機的名稱。
我們可以將該vApp重新命名,或者將該vApp裡的VM移動到其他的vApp裡,要注意的是這種做法是一個VM被導入後,系統會自動包上一層vApp給該VM,所以每個vApp只有一台VM,導入後租戶管理員必須做一些虛機管理的操作,如更名,更改IP,移動等等,當虛機被移出vApp後,我們會發現相對應的vApp也會被刪除。
由於我的環境是vCD 9.0,用HTML 5看到的會是這樣。如此就完成了虛機自動匯入的過程。
Adopt a vCenter Server
從vCD 8.20開始提供另一種導入既有客戶虛機的機制,叫做Adopt a vCenter Server,顧名思義它是讓vCD可以將既有vCenter裡的虛機全部”過繼”給vCD,和以上介紹不同的是它是把vCenter當成Provider VDC的資源吸進來,當這個動作完成後,系統管理者就可以利用vCloud API把這個vCenter裡面某個資源池內的所有VM指定變成為某個租戶的。
以下是概略做法:
- 確認哪一個vCenter Servers是要被vCD納管的
- 記錄用戶和資源池的對應關係
- 確認事前已經在vCenter Server中有一個父資源池或一整個叢集可以被vCD拿來當成Provider vDC使用,要特別注意的是,如果規劃時是一個叢集的資源全部分給某一用戶的話,那必須在該叢集額外建立一個新的父資源池,所有的資源要被置放於該父資源池底下
- 於vCD加入該vCenter Server,新增一個以該vCenter Server為主的Provider vDC
- 在剛建好的Provider vDC裡分別為每個租戶建立相應組織(用戶名 )
- 利用API找出Organization, Provider vDC, Storage Policies和Resources Pool相關訊息
- 利用vCloud API在用戶裡,依照vCenter Server裡的資源層級分配原則(依照資源池或者叢集)建立相對應的組織vDC
由於用Adopt a vCenter Server的做法需要用較為複雜的vCloud API來完成,如果是小型的遷移,運營商不妨考慮利用第一種方式較為簡單,但如果是大量遷移,Auto Import可能比較不適用,這時可能需要考慮用vCloud Director Extender來做了。相關介紹可看這裡。