網管人雜誌
本文刊載於 網管人雜誌第 93 期 - 2013 年 10 月 1 日出刊,NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。文章目錄
1、前言2、實作環境
3、即時遷移(Live Migration)環境需求
4、即時遷移(Live Migration)運作流程
5、實作即時遷移(Live Migration)
Hyper-V 主機信任委派服務類型
Hyper-V 主機即時移轉功能
測試即時移轉功能
6、結語
1、前言
虛擬化技術始於 1960 年代 IBM Mainframe System z Platform 大型主機上,首次開發出用於分割大型主機硬體資源,以便提高大型主機的硬體資源使用效率,當時 IBM 公司所採用的虛擬化技術作法為,將大型主機就邏輯觀念上分割為多個虛擬主機,以同時執行多個執行程序(Process)及應用程式(Application)。時至今日,x86 架構主機運算能力一日千里,但也遭遇到當年大型主機同樣的問題「工作負載利用率不佳」。現在,x86 架構主機已經突破虛擬化難關充分利用硬體資源,因此造就了目前虛擬化浪潮勢不可擋的趨勢,許多企業及組織已經從早期持觀望態度到引進內部測試環境,確定虛擬化技術真的可行後,便紛紛將線上營運服務遷移到虛擬化環境當中。
Microsoft 於 2008 年 6 月時所發行的 Windows Server 2008 作業系統當中,便已經開始內建 Hyper-V 1.0 虛擬化技術,緊接著在 2009 年 10 月發佈的 Windows Server 2008 R2 中則升級為 Hyper-V 2.0 虛擬化技術,於去年 2012 年 10 月所發行的 Windows Server 2012 雲端作業系統(Cloud OS)則為 Hyper-V 3.0 虛擬化技術,最新則是在 2013 年 6 月 TechEd 2013 大會上,發佈了 Windows Server 2012 R2 的技術預覽版本(Preview Version),更是增加了不少 Hyper-V 虛擬化技術特色功能。
圖 1、Microsoft Hyper-V 運作元件架構示意圖
2、實作環境
- Hyper-V 3.0虛擬化平台: Windows Server 2012
3、即時遷移(Live Migration)環境需求
在舊版本 Windows Server 2008 R2 虛擬化環境當中,您「必須」要建置容錯移轉叢集環境(Failover Cluster),並且啟用叢集共用磁碟(Cluster Shared Volume,CSV)機制,才能實作出「即時遷移(Live Migration)」的進階功能。現在,新一代的 Windows Server 2012 虛擬化環境當中「不一定」要建置容錯移轉叢集環境,也能夠實作出即時遷移的進階功能(請注意!! 一定要具備 Windows AD 網域環境才行)。同時,也支援採用 SMB 3.0 檔案等級(File Level)的儲存設備,來擔任 VM 虛擬主機的儲存空間(舊版本僅支援資料區塊等級 Block Level 的儲存設備)。
圖 2、SMB 3.0 檔案伺服器支援即時遷移運作示意圖
並且,在舊版 Hyper-V 2.0 虛擬化環境中,同一時間您只能移動「一台 VM」虛擬主機,而新一代 Hyper-V 3.0 虛擬化環境中,您可以同一時間移動「無限制台 VM」虛擬主機,到別台 Hyper-V 主機內(請注意!! 傳輸速度的瓶頸將會在二台 Hyper-V 主機之間的網路頻寬)。
此外,在企業或組織內部建立 Hyper-V 3.0 虛擬化平台時,要能順利運作即時遷移機制的話,還需要注意如下建置需求資訊:
來源端與目的端(Source / Destination Host)的 Hyper-V 主機
- 必須身處於「同一」Active Directory 網域,或是彼此信任的 Active Directory 網域
- 必須「支援」硬體虛擬化技術(Intel VT-x / AMD AMD-V)
- 必須採用相同廠牌的中央處理器(例如,都是 Intel 或者都是 AMD)
- 必須要安裝 Hyper-V 伺服器角色
- 支援單機環境或容錯移轉叢集環境(單機 <-> 叢集)
使用者帳戶及電腦帳戶的權限設定
- 設定限制委派的使用者帳戶,必須隸屬於 Domain Administrators 群組的成員
- 設定和執行即時移轉的使用者帳戶,必須隸屬於本機 Hyper-V Administrators 群組的成員
- 必須同時是來源端與目的端主機上,隸屬於 Administrators 群組的成員
即時移轉驗證通訊協定方式
- 採用「CredSSP」驗證通訊協定方式,則只能夠在「來源端」Hyper-V 主機操作,才能順利將 VM 虛擬主機執行「推送」即時遷移的動作(否則將會產生錯誤,並停止執行即時遷移)
- 採用「Kerberos」驗證通訊協定方式,則必須要在 Active Directory 網域 Computers 容器當中,針對二台主機所屬的電腦帳戶設定「委派」信任服務(否則將會產生錯誤,並停止執行即時遷移)
即時遷移網路流量
- 建置專門使用的即時遷移傳輸網路,避免與其它服務混用造成傳輸瓶頸
- 建置專用受信任的私有即時遷移網路,因為即時遷移流量在執行資料移轉動作時,並不會「加密」所傳輸的資料流量,因此可以大大提高主機整體安全性
4、即時遷移(Live Migration)運作流程
即時遷移機制,可以將線上運作(Power On)中的 VM 虛擬主機,在不影響其使用者存取服務以及應用程式運作的狀況下,將VM虛擬主機由 Hyper-V Host A,線上不中斷的遷移到 Hyper-V Host B,它是怎麼辦到的? 以下為即時遷移機制的運作流程拆解:1. 虛擬化平台管理人員於管理介面中,觸發執行即時遷移(Live Migration)的動作。此時,二台 Hyper-V 主機建立連接程序(TCP Connection),並在目的端 Hyper-V 主機中建立同樣名稱的 VM 虛擬主機,並且擁有跟來源端一樣的 VM 虛擬主機「設定內容(Configuration Data)」。
圖 3、即時遷移(Live Migration)初始化階段
2. 來源端 Hyper-V 主機中線上運作的 VM 虛擬主機,將其擁有的「記憶體內容(Memory Content)」,複製為一個副本之後切割成許多 Memory Page(每個 Page 4 Kilobytes),進行傳送到目的端 Hyper-V 主機的任務。
圖 4、進行記憶體內容(Memory Content)複製階段
3. 當初始記憶體內容由來源端 VM 虛擬主機,複製到目的端完畢時,此時來源端 VM 虛擬主機的記憶體狀態,將會因為使用者的存取行為而改變。因此,此階段中將透過「追蹤(Tracked)及標記(Marked)」機制,將剩餘的變動記憶體區塊(Modified Memory Pages),再次傳送到目的端主機當中,直到二端主機之間的記憶體狀態「一致(Up-to-Date)」時,目的端 VM 虛擬主機便準備接手服務。
圖 5、傳送變動記憶體區塊並準備接手服務
4. 此時,「切換」成由目的端 Hyper-V 主機當中,所運作的 VM 虛擬主機存取共用儲存設備中的檔案(VHD/VHDX Disks 或 Pass-Through Disks)。
圖 6、目的端 VM 虛擬主機接手儲存資源
5. 目的端 VM 虛擬主機執行「恢復(Resume)」動作,正式接手來源端 VM 虛擬主機的服務,但因為所處 Hyper-V 主機實體網路卡 MAC Address 不同,此時將會發送 RARP 網路封包給實體交換器,以便交換器重新學習並更新 MAC Address Tables 內容,進而找到正確的 MAC Address 及 Port 號進行通訊。此階段耗用時間非常短暫,若此時有外部主機持續 ping 該台 VM 虛擬主機的話,基本上不會掉任何 ICMP 回應封包(最多掉 1 個 ICMP 回應封包)。
圖 7、目的端 VM 虛擬主機順利接手服務
5、實作即時遷移(Live Migration)
Hyper-V 主機信任委派服務類型
新一代的 Hyper-V 3.0 虛擬化平台,可以在不須架設容錯移轉叢集環境中運作,並且可以整合 SMB 3.0 檔案伺服器,擔任 VM 虛擬主機的儲存資源。但是,必須要額外設定 Hyper-V 主機電腦帳號(Computer Account),給予信任委派權限才行(若是架設容錯移轉叢集則無須設定!!),否則屆時將因電腦帳戶未具備信任委派權限,而導致即時遷移作業失敗。請於網域控制站(Domain Controller)主機中,依序點選「伺服器管理員 > 工具 > Active Directory 使用者和電腦」,接著切換至「Computers 容器」當中,點選 Hyper-V 主機電腦帳戶後按下滑鼠右鍵,於右鍵選單中選擇「內容」項目準備進行信任委派權限設定。
圖 8、準備進行 Hyper-V 主機信任委派權限設定
在彈出的電腦帳戶內容視窗中請切換到「委派」頁籤,其預設值為不要信任這台電腦進行委派項目,請改為選擇「信任這台電腦,但只委派指定的服務」以及「只使用 Kerberos」項目後,按下「新增」鍵以準備新增信任服務。
在彈出的新增服務視窗中請按下「使用者或電腦」鍵,準備委派信任服務的電腦及服務類型。在選取使用者或電腦視窗中,請輸入 SMB 檔案伺服器主機名稱,然後按下「檢查名稱」鍵後按下「確定」鍵。在新增服務視窗中,您會在可用的服務區塊中看到許多服務項目,因為此實作中採用的為 SMB 檔案共用的方式,因此請選擇新增的服務類型為「cifs」項目後按下「確定」鍵即可。
此時,這台 Hyper-V 主機便能將 VM 虛擬主機,存放於 SMB 主機所分享的檔案共用資源當中,接著依同樣的設定方式將「Microsoft Virtual System Migration Service」服務類型加入,若需要實作出無共用儲存即時遷移(Shared-Nothing Live Migration)機制的話,則必須將目的端 Hyper-V 主機的「cifs」服務類型也加入其中。
請依上述設定方式,將來源端及目的端的 Hyper-V 主機都設定信任委派服務類型,二台 Hyper-V 主機都必須允許 SMB 主機的 cifs 服務類型,並且互相加入對方信任對方 Microsoft Virtual System Migration Service 服務類型(如圖 9 所示)。
圖 9、Hyper-V 主機設定信任委派服務類型
Hyper-V 主機即時移轉功能
若您的環境當中並未架設容錯移轉叢集,那麼您必須針對「每一台」Hyper-V 主機,啟用即時移轉功能及調整相關設定,請開啟 Hyper-V 管理員點選 Hyper-V 主機,在右方動作窗格中點選「Hyper-V 設定」項目。在彈出視窗的 Hyper-V 設定視窗當中,請點選「即時移轉」項目後在右邊窗格中先勾選「啟用連入與連出即時移轉」項目,在驗證通訊協定區塊中請選擇「使用 Kerberos」項目,而在並行即時移轉欄位中預設數值為 2,此數值表示您可以「同時」執行 2 台 VM 虛擬主機進行線上遷移的動作,原則上此數值並沒有限制您可以隨意調整(最大值為 1,999,999,999),屆時傳送的瓶頸會是在您的網路架構上,因此請您視所管理的網路架構以及要進行線上遷移 VM 虛擬主機的記憶體大小決定,而在連入即時移轉區塊中,由於此實作環境中有規畫專用於線上遷移流量的網路卡,因此請選擇「使用這些 IP 位址來進行即時移轉」後按下「新增」鍵,輸入用於線上遷移流量的 IP 位址網段「172.20.75.0/24」,確認設定無誤後按下「確定」鍵啟用即時移轉功能。請為環境中的每台 Hyper-V 主機,進行啟用即時移轉功能的設定。
圖 10、Hyper-V 主機啟用即時移轉功能
若虛擬化運作環境具備容錯移轉叢集,那麼只需要在容錯移轉叢集管理員中「統一設定」即時移轉功能(無須單台 Hyper-V 主機進行設定),請開啟容錯移轉叢集管理員,在管理視窗中點選「網路」後於右鍵選單中選擇「即時移轉設定」。
在彈出的即時移轉設定視窗當中,您只需要勾選用來進行即時移轉的叢集網路,以及叢集網路使用的優先順序即可,此實作中將優先使用合併叢集心跳以及即時移轉的網路 Heartbeat,若該叢集網路發生中斷或不通時,才使用 VM 虛擬主機用於服務的叢集網路 VM Traffic(將管理及服務網路流量進行切割),因此即時移轉的網路設定為「Heartbeat > VM Traffic」,確認無誤後按下「確定」鍵。
圖 11、容錯移轉叢集即時移轉網路設定
測試即時移轉功能
若是在「未」架設容錯移轉叢集環境中,請於 Hyper-V 管理員進行操作即可,點選欲移動的 Hyper-V 主機內運作的VM虛擬主機,並於右鍵選單中選擇「移動」項目。
圖 12、準備執行 VM 虛擬主機即時遷移
此時將會彈出移動精靈視窗,確認要對 VM 虛擬主機進行即時遷移動作的話,請按「下一步」鍵繼續移動程序。在選擇移動類型頁面中,由於我們此次要移動的是 VM 虛擬主機(Node 1 -> Node 2),因此請選擇「移動虛擬機器」項目後按「下一步」鍵繼續移動程序。
圖 13、選擇移動虛擬機器項目
在指定目的電腦頁面中,請按下「瀏覽」鍵於選取電腦的視窗中輸入「node2」後按下「檢查名稱」鍵後按下「確定」鍵,因為環境中有網域控制站且先前設定好信任委派,因此順利通過檢查步驟並主機名稱將顯示為 NODE2,請按「下一步」鍵繼續移動程序。
圖 14、指定 VM 虛擬主機即時遷移的目的端 Hyper-V 主機名稱
在選擇移動選項頁面中,因為所要移動的是 VM 虛擬主機(Node 1 -> Node 2),並非是 VM 虛擬主機的儲存資源,因此請選擇「只移動虛擬機器」項目即可,請按「下一步」鍵繼續移動程序。
圖 15、選擇只移動虛擬機器項目
於正在完成移動精靈頁面中,會顯示此次即時遷移的概要資訊也就是 VM 虛擬主機名稱「VM」,將會移動到「NODE2」主機中,確認要執行即時遷移請按下「完成」鍵便立即執行遷移作業。在執行即時遷移作業期間在 Hyper-V 管理員當中,您可以看到目前移動 VM 虛擬主機的進度百分比,當然在即時遷移過程中 VM 虛擬主機仍然可以正常進行操作,且對外的服務也不會有任何中斷情況發生。
圖 16、即時遷移過程中可看到 VM 虛擬主機移動進度百分比
在 VM 虛擬主機即時遷移期間,你可以在二台 Hyper-V 主機中開啟工作管理員,查看是否使用我們所規劃專用的遷移網路,以達成管理及服務網路流量切割的目的,除了不會讓網路流量混用之外,更可以保障 VM 虛擬主機即時遷移安全性(因為遷移流量並不會將資料內容加密!!)。
圖 17、Hyper-V 主機採用所規劃專用的遷移網路進行傳送
當來源端 Hyper-V 主機(Node 1)傳送完 VM 虛擬主機記憶體狀態時,在切換到目的端 Hyper-V 主機(Node 2)的「瞬間」,您會看到外部主機對 VM 虛擬主機的持續 ping 封包掉了「0 ~ 1 個」,這是因為 VM 虛擬主機遷移到不同的 Host 主機(MAC Address 不同),因此交換器需要更新其 MAC Address Tables 所導致。
圖 18、VM 虛擬主機即時遷移至另一台 Hyper-V 主機的瞬間
此外如果您有持續開啟 VM 虛擬主機 Console 進行觀察的話,在切換 Hyper-V 主機的瞬間會看到 VM Console 畫面閃一下,之後便由原本的 NODE 1 切換為 NODE 2,若是在舊版本 Hyper-V 2.0 虛擬化平台時,VM Console 會中斷連線必須「手動」再次重新連接才行,但是在新版 Hyper-V 3.0 虛擬化平台中,則是會「自動」進行切換不需重新連接。
若是在「已經」架設容錯移轉叢集環境中,請於容錯移轉叢集管理員中進行即時移轉的操作,若是像剛才一樣在 Hyper-V 管理員嘗試操作時,那麼便會得到「無法開啟移動精靈,因為該虛擬機器已叢集化」的錯誤訊息。
圖 19、無法開啟移動精靈視窗,因為該台 VM 虛擬主機已經叢集化
請開啟容錯移轉叢集管理員,點選該台 VM 虛擬主機於右鍵選單中選擇「移動 > 即時移轉 > 選取節點 或 最佳可行節點」項目,準備執行 VM 虛擬主機即時遷移作業。
- 選取節點: 管理人員可以自行選取,要將VM虛擬主機移動至哪一台叢集節點主機。
- 最佳可行節點: 容錯移轉叢集將進行智慧判斷後,自動選擇最佳的叢集節點主機。
圖 20、在容錯移轉叢集環境中,執行 VM 虛擬主機即時遷移作業
同樣的在執行 VM 虛擬主機即時遷移作業期間,在容錯移轉叢集管理員介面中,可以看到遷移進度百分比。此時,您也應該要檢視 Hyper-V 主機網路流量,是否使用我們所規劃的遷移網路,以達成管理及服務流量切割的目的,當然在傳送完 VM 虛擬主機記憶體狀態時,在切換 Hyper-V 主機的「瞬間」,您會看到外部主機對 VM 虛擬主機的持續 ping 封包掉了「0 ~ 1個」,這是因為 VM 虛擬主機遷移到不同的 Host 主機(MAC Address 不同),因此交換器需要更新其 MAC Address Tables 所導致。
圖 21、即時遷移期間可以看到 VM 虛擬主機移動進度百分比