技術透析:Hyper-V實時遷移指南
原創【51CTO精選譯文】實時遷移是微軟向Windows Server 2008 R2 Hyper-V添加的最重要的功能,通過實時遷移功能,在Hyper-V主機之間移動虛擬機(VM)就無需再停機了,正常維護Hyper-V主機時,可以將它托管的所有VM全部移走,等到維護結束后,又移回來,整個過程不會引起業務中斷。此外,利用實時遷移功能還可以更好地動態調整主機資源利用率,將繁忙的Hyper-V主機上的部分VM移動到相對空閑的Hyper-V主機上,這樣可以確保即便在業務高峰期也能給終端用戶提供很好的性能。
實時遷移可以手工啟動,也可以使用System Center Virtual Machine Manager(SCVMM)2008 R2或System Center Operations Manager 2007(SCOM 2007)實現自動化實時遷移,本文將介紹如何為兩個系統配置實時遷移的詳細過程,首先我會介紹一下實時遷移是如何工作的,然后會介紹實施實時遷移需要的硬件和軟件先決條件,最后介紹Hyper-V的重點和實施實時遷移必須要要的故障轉移集群配置。
實時遷移是如何工作的
實時遷移是發生在兩個Hyper-V主機之間的,本質上就是在兩臺Hyper-V主機之間復制VM內存,內存復制完畢后,VM就可以在新的主機上訪問它的虛擬硬盤(VHD)文件繼續運行了,兩個Hyper-V主機都訪問的是共享存儲上的VM VHD文件,當你啟動實時遷移時,如圖1所示,發生以下行為。
圖 1 初始化實時遷移
1、在目標服務器上創建新的VM配置文件;
2、將源VM的初始內存狀態拷貝到目標主機;
3、將源VM上做上標記的變動內存頁拷貝到目標主機上;
4、持續這個過程,直到變動的內存頁數量越來越小;
5、暫停源節點上的VM;
6、將源VM的最終內存狀態復制到目標主機;
7、在目標主機上恢復VM;
8、更新網絡路由表。
#p#
實時遷移的先決條件
在硬件方面,你需要兩個x64系統,處理器要相互兼容,必須是同一家處理器廠商,且必須是同一處理器家族,雙方處理器相同是最好的,如果一臺Hyper-V主機是AMD處理器,另一臺是英特爾的處理器,在它們之間是不能執行實時遷移的。
此外,每臺服務器至少需要三塊千兆網卡,一個用于連接外部網絡,一個用于連接iSCSI存儲,最后一個用于節點管理,理想情況下最好有一塊專門用于實時遷移的網卡,但并非必須的,實時遷移通信也可以走外部網絡連接,只是速度會稍慢一點,值得注意的是,如果你也想整合服務器,最好添加一塊網卡用于VM網絡通信。
在軟件方面,所有參與實時遷移的節點必須安裝Windows Server 2008 R2 64位操作系統,可以是標準版,企業版或數據中心版,Hyper-V Server 2008 R2也支持實時遷移,此外,在所有參與實時遷移的服務器上必須安裝Hyper-V角色和故障轉移集群功能。
另外還需要共享存儲,可以是iSCSI SAN或FC SAN,我這里以iSCSI SAN為例,注意iSCSI SAN必須支持iSCSI 3規范,因為實時遷移需要該規范定義的持久化預留存儲功能,有些開源iSCSI解決方案,如OpenFiler目前尚不支持這項功能,如果你只是想在本地測試一下實時遷移功能,可以選擇免費的StarWind服務器產品。
#p#
故障轉移集群網絡配置
實時遷移必須使用故障轉移集群,也只能在故障轉移集群內節點之間實時遷移VM,創建故障轉移集群的第一步是配置網絡和存儲,圖2顯示了本例使用的故障轉移集群網絡配置。
圖 2 故障轉移集群網絡配置
圖2中使用192.168.100.xxx的子網是客戶端連接,iSCSI SAN運行在獨立的物理網絡上,使用的是192.168.0.xxx子網,理想情況下還應該為管理和實時遷移配備獨立的網卡和對應的IP地址,但并非必須,實時遷移對每一方網卡的最低要求是兩塊。
#p#
存儲配置
我使用的是LeftHand的iSCSI SAN,我在上面安裝了一個SQL Server,在iSCSI SAN上,我創建了4個LUN,其中一個500MB大小,用于集群仲裁,另一個大小為1024GB,托管10個VM,其它兩個分別用于SQL Server(500GB)和分布式事務協調(DTC,200MB)。
創建好LUN后,我在雙方Windows節點上配置了iSCSI Initiator,接著選擇“管理工具”*“iSCSI Initiator選項”,在“發現”標簽上,我選擇“搜索門戶”選項,彈出搜索門戶對話框,在這里輸入IP地址和SAN的iSCSI端口,我分別輸入了192.168.0.1和3260。
接下來,在“連接到目標”對話框中,我指定了目標iSCSI SAN的名字,通過SAN屬性可以查看其名字,根據廠商、域名和LUN名字的不同,SAN的名字也不同,我選中了“將本連接添加到常用目標列表”復選框。完成iSCSI配置后,iSCSI Initiator目標標簽就使用LUN填充好了。
最后,使用磁盤管理器給LUN分配驅動器號,我給仲裁LUN分配Q,DTC分配R,SQL Server分配S,VM分配V,你需要先在一個節點上分配,將驅動器脫機,然后在另一個節點上做同樣的分配,圖3顯示了在一個節點上看到的驅動器號分配情況。
圖 3 在一個節點上看到的驅動器
#p#
添加Hyper-V角色和故障轉移功能
選擇“管理工具”*“服務器管理器”,點擊“添加角色”鏈接,在選擇服務器角色對話框中,選擇“Hyper-V”,然后點擊“下一步”,將會顯示創建虛擬網絡提示,其本質是在Hyper-V VM和外部網絡之間建立一個橋。
選擇你想用于VM通信的網卡,注意不要選中用于iSCSI SAN連接的網卡,點擊“下一步”結束添加角色向導,重啟系統,需要在集群的所有節點上執行這些操作。
接下來在服務器管理器中,點擊“添加功能”選項,啟動添加功能向導,選擇“故障轉移集群”功能,點擊“下一步”結束向導,這個過程也必須在所有節點上執行。
#p#
配置故障轉移集群
接下來就該創建故障轉移集群了,可以在任一集群節點上做這件事,選擇“管理工具”*“故障轉移集群管理器”,在打開的故障轉移集群控制臺窗口中,選擇“驗證配置”鏈接啟動驗證向導,顯示“選擇服務器或集群”對話框。
輸入要加入集群的所有節點的完全限定名稱,然后一路點擊“下一步”,完成集群驗證測試,包括檢查操作系統,網絡配置和所有節點的存儲配置,最后一頁會顯示測試結果摘要信息,如果驗證成功,就可以開始創建集群了,如果遇到錯誤,必須先糾正后才能繼續。
在故障轉移集群控制臺窗口中點擊“創建集群”鏈接,和驗證過程差不多,首先需要輸入所有節點的名字,點擊“下一步”,顯示“集群管理接入點”對話框,如圖4所示。
圖 4 集群管理接入點
在這里輸入集群的名字和IP地址,名字和IP地址必須是網絡中唯一的,在圖4中,你可以看到我給集群取的名字是WS08R2-CL01,給集群分配的IP地址是192.168.100.200,如果你使用的是Windows Server 2008 R2,可以指定通過DHCP分配IP地址,但推薦使用靜態IP地址,這樣便于出現問題時進行故障診斷和排除。
點擊“下一步”,顯示確認界面,如果確定沒有需要修改的配置信息就點擊“下一步”創建集群,接著顯示一個集群配置摘要信息界面,這就是配置集群的全部過程。
創建集群向導會自動為仲裁選擇存儲,但不是總能選中你創建的仲裁驅動器,你可以在故障轉移集群控制臺窗口的集群名字上點擊右鍵,選擇“更多操作”*“配置集群仲裁設置”,檢查和修改仲裁驅動器,在彈出的對話框中,向導會自動選擇最佳的仲裁類型,主要取決于集群中節點的數量,在雙節點集群中,它選擇了“節點和磁盤優先”仲裁類型。
接下來顯示配置存儲對話框,我將默認值修改為我想要的Q,點擊“下一步”保存集群仲裁配置。
#p#
啟用集群共享卷
集群配置的下一步是啟用集群共享卷,集群共享卷允許多個集群節點同時訪問相同存儲位置,但默認沒有啟用,在故障轉移集群控制臺的集群名稱上點擊右鍵,然后選擇“啟用集群共享卷”,顯示集群共享卷摘要信息對話框,初始是空白的。
在行為面板中選擇“添加存儲”選項,在彈出的對話框中,選擇存儲的位置,我選擇了V驅動器,實際上它是LeftHand SAN上的一個LUN,點擊“確定”啟用集群共享卷,完成后將會在所有集群節點上創建一個掛載點,默認這個掛載點被標記為C:\ClusterStorage\Volume1。
#p#
在集群共享卷上創建VM
可以使用Hyper-V Manager或System Center Virtual Machine Manager創建Hyper-V VM,在Hyper-V Manager中,點擊管理工具,然后選擇“新建VM”選項,顯示如圖5所示的新建虛擬機向導對話框。
圖 5 新建虛擬機向導
我這里將虛擬機名字命名為vWS08-SQL01,VM存放位置選擇了C:\ClusterStorage\Volume1,VM配置文件也創建在共享存儲上。
點擊“下一步”給VM分配內存,再點擊“下一步”給VM選擇網絡連接,雖然給VM配置專用網絡不是必須的,但如果你選擇了外部網絡連接,一定要確保所有Hyper-V節點上外部網絡連接的名字要相同,我這里就選擇使用外部網絡連接。
點擊“下一步”顯示連接虛擬磁盤對話框,最初這里顯示Hyper-V管理器默認指定的名字和位置,我將VHD文件的名字改為vWS08-SQL01.vhd,將位置改為C:\ClusterStorage\Volume1,點擊“下一步”指定客戶機操作系統安裝選項,所有客戶機操作系統,包括Linux在內都可以使用實時遷移功能,剩下的步驟就和創建普通VM的步驟差不多了。
結束創建虛擬機向導后,VM將會創建在集群共享卷上,下一步是啟動VM安裝客戶機操作系統和需要的應用程序。
#p#
啟用VM實時遷移功能
打開故障轉移集群控制臺,導航到服務和應用程序節點,點擊右鍵,選擇“配置服務或應用程序”啟動高可用向導,在選擇服務或應用程序對話框中,從服務列表中選擇虛擬機,然后點擊“下一步”,顯示選擇虛擬機對話框,選擇你想啟用實時遷移的VM,我選擇前面的vWS08-SQL01 VM,如果沒有執行這一步VM是不能運行的。
在VM名字前選中復選框,一路點擊“下一步”結束向導,最后會顯示一個確認對話框和一個摘要信息對話框,如果你看到有“成功”的標志,就表明VM啟用實時遷移成功。
#p#
遷移!
至此,可以使用故障轉移集群管理器啟動一個實時遷移了,展開服務和應用程序節點,然后選擇它下面的VM節點,這時會顯示一個摘要面板,顯示VM的狀態,如圖6所示。
圖 6 VM摘要信息面板
在圖6中,你可以看到VM vWS08-SQL01正在運行中,目前屬于WS08R2-S1節點,要啟動實時遷移,轉到行為面板,點擊“實時遷移虛擬機”選項,飛出一個菜單提示你指定目標節點,我這里選擇“1-實時遷移到節點WS08R2-S2”,點擊這個選項啟動實時遷移,摘要信息窗口中的狀態改為正在運行實時遷移。
實時遷移需要的時間取決于VM的大小和活動,以及兩節點之間網絡速度和網絡流量,在我的測試網絡中通常只需要10秒,最多只要1分鐘,實時遷移完成后,摘要信息面板又重新顯示VM的當前所有者,正常情況下就是目標節點的名字。
#p#
虛擬化樂土
實時遷移解決了計劃內停機時間,它奠定了動態數據中心的基礎,雖然實時遷移的步驟不少,如果你仔細瀏覽就會發現其實就幾個關鍵點,相信你有了Hyper-V實時遷移的幫助,一定會在虛擬化道路上快樂地前行!
【51CTO.com譯稿,合作站點轉載請注明原文譯者和出處。】
原文:Hyper-V Live Migration: A Step-by-Step Guide 作者:Michael Otey
【編輯推薦】