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