虛擬化在線遷移優化實踐系列(二)之典型應用場景
本文承接上篇將具體分析UCloud在典型應用場景下對KVM虛擬化遷移技術各個階段所做的優化。
快速遷移場景
通過普通應用場景遷移優化之后,UCloud平臺上的在線遷移方案已經可以達到很高的遷移成功率,為用戶虛擬機的性能與可靠性提供了重要保障。但考慮到部分用戶存在大容量數據盤,如果進行正常在線遷移,整體遷移時間會非常長,無法快速降低源物理機負載,不利于資源動態調整和故障處理,特別是當用戶虛擬機正在運行高IO負載業務,則會使磁盤遷移過程遲遲無法結束,最終導致遷移失敗。為此,UCloud平臺針對這種場景專門進行了磁盤高負載虛擬機的快速遷移優化。
由于正常在線遷移在目標端DestHost上拉起虛擬機之后,需要先通過磁盤遷移來確保目標端DestHost上虛擬機訪問的磁盤數據和源端SourceHost相同,為此需要跳過磁盤遷移進行快速遷移方案。
首先,需要打通目標端DestHost和源端SourceHost之間的存儲系統,即共享兩個Host上虛擬機鏡像的磁盤數據;在此基礎上進行共享存儲的跨機遷移,從而實現虛擬機內存、CPU等數據遷移,以便在目標端DestHost快速拉起虛擬機,緩解源端SourceHost的內存和CPU壓力。其次,將虛擬機的大磁盤數據從源端SourceHost拉取到目標端DestHost。***,刪除源DestHost和目標SourceHost的直接共享存儲。
快速在線遷移的具體實現步驟如圖 3-1所示:
(圖3-1遠程拉取磁盤數據示意圖)
通過快速遷移優化,完整遷移過程所需時間與傳統遷移方法所需時間相當。但遷移過程中,共享存儲遷移的過程非常短暫,可以快速在目標端DestHost上拉起虛擬機VM,迅速降低源端SourceHost負載,改善用戶VM之間的資源競爭,改善用戶VM性能,特別是對擁有大數據盤的VM用戶具有重要意義。
目前,UCloud平臺的快速遷移方法已經全面上線,成功為眾多用戶完成快速跨機遷移,幫助用戶解決VM的性能與可靠性問題。
跨機型場景
前述各種遷移方法,通常用于相同類型的云主機之間進行遷移。不過需要特別指出的是,目標端云主機和源云主機上的虛擬機配置必須完全一致。在UCloud云平臺,除了存在普通云主機機型外,還存在類似方舟機型、SSD機型等許多不同存儲類型的虛擬機,其上所使用的虛擬機磁盤配置也并不完全相同。
當用戶存在機型切換要求時,以往的做法是對用戶虛擬機停機進行機型轉換遷移,會造成用戶業務中斷,不利于用戶根據不同業務需求進行不同機型的切換。但當用戶提出這種跨機型遷移需求時,通常伴隨著其關鍵業務負載無法滿足要求,或者關鍵業務需要在更加安全可靠的環境下運行,而如果對關鍵業務進行停機切換又往往無法接受,也極大限制了云平臺的彈性擴展。
為了滿足用戶對機型升級切換的業務需求,同時又不停止虛擬機以保證用戶業務在升級過程中繼續運行,UCloud為此專門開發了跨機型特殊在線遷移方案。針對跨機型的特殊遷移,關鍵點在于解決磁盤設備的類型轉換問題。在UCloud云平臺上,用戶虛擬機作為一個Qemu進程運行,該進程需要根據底層磁盤鏡像類型選用不同底層塊設備驅動進行數據讀寫。因此,在進行特殊跨存儲遷移時,需要通過Libvirt的特殊配置,先在目標端建立一個不同存儲類型的虛擬機(其他配置完全一樣),然后再進行后續數據遷移。
如圖3-2所示,特殊配置之后,源端Qemu將通過qcow2驅動從qcow2磁盤文件中讀取客戶磁盤數據,再通過網絡發送到目標端,目標端Qemu在接收到數據后,再通過raw驅動將數據寫入到lvm塊設備中。經過多次反復迭代最終完成整個磁盤的遷移,并最終將源端普通云主機上的用戶虛擬機遷移切換到目標端SSD機型的云主機上。整個遷移過程對用戶是透明的,不會對用戶業務造成不利影響,即便目標端虛擬機遷移失敗也不會影響源端用戶虛擬機的正常運行。
(圖3-2 跨機型遷移的存儲格式變換示意圖)
當前,UCloud云平臺可以實現普通云主機到SSD云主機的相互遷移,也可以實現普通云主機到方舟高可靠機型的相互遷移,甚至通過這種遷移實現底層磁盤類型的轉換,從而方便用戶根據業務需求切換不同云主機類型,而且不需要中斷線上業務就實現云平臺彈性與擴展性的提高。
這種跨機型遷移技術目前在國內云服務提供商中是首創,極大提高了用戶選擇的彈性,有利于用戶按需根據業務的運營狀況適時的選擇不同的云服務。
本地升級場景
使用UCloud云平臺的在線遷移方案,可以實現在用戶無感知的情況下,將用戶虛擬機遷移到升級過的新虛擬化運行環境中,在避免中斷用戶業務的前提下,實現對虛擬化組件的性能優化、故障修復以及新功能上線等軟件升級。
然而,在線遷移過程中,遷移用戶磁盤鏡像數據花費時間占到整體遷移時間的絕大部分,特別是大磁盤用戶,進行一次跨機在線遷移所需時間往往是數小時。而且在線上運行大量虛擬機的情況下,如果都進行在線遷移要花費的時間成本非常巨大,這使得在線遷移方案無法大規模用于虛擬化環境的升級。
當前,UCloud云平臺的虛擬化組件就由KVM、Qemu和Libvirt等構成,同時大多數軟件升級是通過升級Qemu和Libvrit完成。由于Libvirt位于虛擬化組件最上層,其升級不會影響正在運行的虛擬機,可直接生效,無需停機和遷移就能完成,而Qemu升級一般需要通過在線遷移才能保證無感知升級。
前面也提到磁盤遷移占據大部分遷移時間,如果能夠避免磁盤遷移就可以極大節省軟件升級的時間。為此,UCloud云平臺專門開發了本地熱遷移方案,以完成對Qemu軟件的性能優化、故障修復、漏洞修補以及新功能上線等升級功能。這種方法無需遷移虛擬機磁盤,只進行內存遷移,從而快速完成軟件升級。
如圖3-3所示,在進行本地熱升級時,需要在本地安裝新版Qemu_new,而原有虛擬機VM_old仍為舊版Qemu_old,之后將創建一臺相同配置的新虛擬機VM_new。此時,新建虛擬機VM_new的Qemu版本為Qemu_new,并且新虛擬機VM_new正處于paused狀態。新虛擬機VM_new和舊虛擬機VM_old之間通過socket文件進行內存數據遷移,這個遷移過程與普通在線遷移過程一致,也是先進行一次全量內存遷移,再進行多次迭代增量內存遷移,并短暫停機完成***一次內存和虛擬機機器信息等遷移。
(圖3-3 虛擬機本地遷移的內存遷移過程)
本地熱遷移方案已在UCloud云平臺上大規模應用,在實際使用過程中,不僅具備普通在線遷移的優點,而且整個遷移過程更加快速,基本上可以秒級完成用戶虛擬機的Qemu升級,對用戶基本沒有影響。目前,UCloud已經使用本地熱遷移方案成功解決了多個高危安全漏洞對線上Qemu的影響,另外通過本地熱遷移方案還實現對線上運行Qemu版本的精簡統一,方便Qemu版本的維護工作。
總結
綜上所述,目前UCloud虛擬化云平臺已經對熱遷移技術進行了全方位優化,包括熱遷移技術各個階段(宿主機選擇、磁盤和內存優化、網絡切換設置等)的優化、快速遷移優化、跨存儲類型遷移優化和本地熱升級優化等。此外,UCloud虛擬化云平臺還提供單獨遷移虛擬機磁盤內容的磁盤漂移技術以及針對加密盤的遷移技術。這些遷移技術在UCloud云平臺上廣泛用于用戶虛擬機負載均衡、宿主機故障處理,甚至各種虛擬化組件在線升級等。
通過這些全方位遷移優化,極大保證了用戶虛擬機的不間斷穩定運行,有力地凸顯了UCloud虛擬化云平臺高效、彈性、高可靠性的優勢。后續UCloud還將繼續對跨機熱遷移技術的高內存負載、GPU機型以及其他使用新型網卡、加速卡的特殊VM場景進行深入開發和優化。
【本文是51CTO專欄機構作者“大U的技術課堂”的原創文章,轉載請通過微信公眾號(ucloud2012)聯系作者】