吳 憲 湯紅波 趙 宇 許明艷
(解放軍信息工程大學 鄭州 450001)
(infinity_w@outlook.com)
隨著網絡結構的不斷演進,包括邊緣計算、物聯網甚至5G 核心網等網絡服務都將會部署在云化基礎設施上[1-2]. 云化為5G 等網絡服務帶來軟硬件解耦、切片友好運營等大量優勢,但也使得網絡服務更加依賴虛擬容器技術. 在云端虛擬容器面對集群硬件維護停機、集群負載失衡、云平臺故障、服務容器升級、更換云供應商以及特殊服務需要時,經常需要使用有狀態虛擬容器實時遷移技術[3].
針對虛擬化容器遷移技術的研究主要集中于同一集群內部的遷移方法優化,對跨集群容器遷移方法優化的研究相對較少,而且由于在實際工況下容器遷移應用場景經常面臨跨集群的情況,該場景下物理存儲介質不同導致容器在集群內部遷移方法無法應用,因此需要一種合理高效的遷移方法來縮短跨集群場景中的有狀態虛擬容器遷移造成的服務停機時間. 在有狀態虛擬容器跨集群遷移的過程中會存在3 個問題:
1) 當前用戶空間中的檢查點/還原工具(checkpoint/restore in userspace, CRIU)均采用一次性遷移全部狀態文件的方法,當CRIU 狀態文件過大或集群間網絡傳輸速率過慢時,狀態文件的遷移耗時會很長,將直接導致容器所提供服務的停機時間變得很長且不可控.
2) 同一集群內的虛擬容器遷移依賴底層存儲硬件的訪問共享,集群內遷移方法的高效執行均依賴硬盤、DRAM 以及內核的共享,而在跨集群場景中無法共享底層存儲介質. 因此這些方法均無法在有狀態容器的跨集群遷移過程中應用.
3) 在有狀態容器跨集群遷移過程中,經常遇到集群間距離遠、網絡延遲長的問題,較高的網絡延遲會對當前的一些遷移模型產生很大影響,導致對于遷移所需時間及服務停機時間的計算不準確.
為解決有狀態容器跨集群遷移過程中網絡延遲會導致服務停機時間長且不可控的問題,本文提出了一種針對網絡延遲的迭代遷移算法. 本文具體貢獻包括3 個方面:
1) 在有狀態虛擬容器跨集群遷移中使用迭代遷移的方式,縮短服務停機時間;
2) 在跨集群容器遷移場景中重點考慮網絡延遲,提出了一種迭代遷移模型,并確定了迭代過程的起始和終止條件,給出了最優迭代次數的計算方法;
3) 在模擬環境中的計算結果表明本文提出的迭代遷移算法能夠在滿足應用條件的情況下,有效縮短服務停機時間,并根據網絡延遲的情況,停機時間可縮短至未采用迭代傳輸方法服務停機時間的25%以下.
本文主要研究內容為通過迭代遷移的方法對有狀態虛擬容器跨集群遷移進行優化以縮短服務停機時間,接下來將對當前虛擬容器遷移方法的優化和容器迭代遷移2 個方面的相關研究工作進行闡述.
虛擬容器通過從內核隔離獨立的命名空間和用戶空間,實現容器中進程的虛擬化隔離. 一般虛擬容器由鏡像、容器、網絡和卷4 個部分組成[4].
鏡像中包含運行應用程序所需的內容,是一個能夠運行應用程序的基礎. 容器則是鏡像的實例,該實例包含了進程、日志和對原始文件系統的更改. 容器的遷移發生在2 個鏡像實例間,即容器的進程運行狀態和數據的遷移. 卷是容器的虛擬存儲器,通常在主機上以共享文件夾的方式實現. 這些卷可以在1個或多個容器上掛載,能夠永久存儲所連接容器的程序運行狀態和數據. 卷可以采用主機文件掛載的方式,使容器直接訪問主機的共享文件夾. 因此容器遷移過程中,如何快速合理地遷移卷的內容就成為了關鍵. 目前虛擬容器的實時遷移主要通過CRIU 完成. 該工具可以暫停運行中的容器,將生成的狀態文件遷移到目標容器后恢復運行狀態[5-6].
Yin 等人[7]提出了一種根據集群內節點的負載率選擇遷移目標節點的容器遷移優化方式,優化容器遷移后的各節點負載均衡,提高遷移后的服務性能. Venkatesh 等人[8]提出了一種將基于CRIU 的數據保存在虛擬地址空間(virtual address spaces, VAS)中的方法VAS-CRIU,利用其讀寫速度比磁盤快的特點提高容器遷移效率. Xu 等人[9]提出了對集群內容器遷移CRIU 功能的改進,使其能夠迭代地遷移CRIU增量,達到縮短服務停機時間的目的. Lei 等人[10]則在容器遷移過程中使用馬爾可夫模型預測內存訪問模式,調整內存頁面傳輸順序,提高遷移過程中的內存讀寫效率. Lv 等人[11]則提出了通信感知最壞適應減少(communication aware worst fit decreasing, CA-WFD)算法作為集群內容器遷移的放置策略,這個算法巧妙地把經典裝箱問題的最壞適應算法應用在了容器放置的場景中,該算法結合文獻中提出的另一個用于確定容器遷移計劃的掃描與搜索(Sweep&Search)算法,能夠高效地制定遷移計劃并將容器放置到最合適的地方,提高集群的整體性能. 該文獻提出的算法在百度大型數據中心進行了應用,實際性能比當時最先進的容器遷移放置方法提高了70%.
集群內虛擬容器遷移的優化方法均要求源容器與目的容器能夠共享、訪問物理存儲介質. 這是在跨集群容器遷移過程中無法做到的,因此這些優化方法不能直接應用在跨集群容器遷移的場景中.
雖然集群內容器遷移優化方法無法直接應用于跨集群容器遷移場景中,但其思路大體一致. 其中一部分方法經過改進擺脫對底層物理存儲共享的依賴就可以在跨集群容器遷移過程中應用. 同時,相比集群內容器遷移,跨集群場景下多了一種針對網絡傳輸過程的優化方法.
Di 等人[12]通過多線程并行遷移過程的方式更加合理地安排容器遷移的工作流程,提出了一種通過管道(pipeline)進行容器遷移的策略,降低遷移過程中的資源開銷,提高資源利用率及容器的遷移性能.趙倩等人[13]利用遠程直接內存訪問(remote direct memory access, RDMA)技術跳過了遷移過程中內存數據寫入磁盤的過程,節約了遷移時間. Stoyanov 等人[14]通過利用CRIU 的特性,即其獨有的緩存/代理技術,達到了縮短容器遷移總時間和服務停機時間的目的.
除針對遷移過程中硬件及性能的優化工作以外,還有大量針對遷移過程自身展開的研究. 這部分研究通過改進容器遷移的流程來提高容器遷移效率,達到縮短停機時間的目標,迭代遷移就是這類技術之一.
迭代遷移實現思路是通過CRIU 等工具,對源容器的運行狀態建立檢查點(checkpoint)并傳輸狀態文件. 但在checkpoint 建立過程、數據傳輸過程以及在目標容器內恢復過程中源服務并不停機,在第1 個checkpoint 傳輸完成后,將進程運行增量再次建立checkpoint 進行傳輸. 此過程不斷迭代進行,達到縮短單次傳輸時間的目的,直至滿足迭代終止條件,完成遷移過程. 完整遷移過程如圖1 所示.

Fig. 1 Illustration of iterate migration process圖1 迭代遷移過程示意圖
Junior 等人[15]將迭代遷移的思路應用于跨集群容器遷移中,并通過實驗證明迭代遷移能夠縮短服務的停機時間. 但在研究及實驗過程中由于沒有考慮集群間網絡延遲的影響,未能根據收益制定迭代過程的終止條件,無法確定最優迭代次數.
本節首先介紹算法所需的各個參數并根據模型列出計算重要參數的表達式,然后對使用迭代遷移的判定條件和終止條件進行計算,最后根據終止條件計算出最優迭代次數.
設遷移過程總迭代次數為n,每個遷移過程分為3 個階段,分別為快照拍攝階段a、快照在集群間網絡遷移階段b 和快照恢復階段c. 其中當整數x滿足0 ≤x≤n?1時,第x+1個checkpoint 的快照拍攝、傳輸和恢復過程的總用時為Tx,單次迭代遷移過程中的源容器進程增量拍攝快照消耗的時間為Txa,快照從源容器網絡傳輸到目標容器所消耗的時間為Txb,在目標容器中將快照恢復為進程狀態所需要的時間為Txc(單位為ms),需要遷移的狀態文件大小為Vx.
開始遷移時需要制作鏡像的進程狀態文件大小為V0,在遷移過程中進程狀態文件的增長速率為ΔV.本文模型認為在容器遷移過程中目標容器與源容器性能完全相同,因此快照的拍攝與恢復的速率均為vP,進程狀態文件快照的壓縮率用K來表示.
根據跨集群遷移的實際情況,網絡延遲經常會達到數十至數百毫秒,因此本文模型將網絡延遲作為重要參數納入考慮. 設源集群與目的集群間網絡延遲為TL,傳輸速率為vT. 本模型所用遷移環境參數含義如表1 所示.

Table 1 Migration Environment Parameters表1 遷移環境參數
在本文模型中,我們假設容器遷移過程中兩端的源集群和目的集群的性能相同,則可以認為在源容器中拍攝快照的速率與在目的容器中恢復快照的速率相同,即
因此第x+1個checkpoint 遷移過程的用時為
最后1 次遷移過程,即第n次遷移開始時,源容器停止服務,以防止遷移過程中產生新的進程增量,遷移過程完成后,在目標容器中恢復對用戶的服務,整個遷移過程結束. 因此,對用戶的服務停機時間即為第n次遷移的用時,可表示為
快照的拍攝速率與恢復速率均為vP,則可計算第x+1個快照鏡像及恢復的用時為
因為在一次連續的網絡傳輸過程中,網絡延遲只產生1 次影響,所以能夠得到鏡像的網絡傳輸用時:
將式(4)和式(5)代入式(2),可得
特別地,有
當1 ≤x≤n?1時,第x+1個進程狀態文件大小Vx受Tx?1影響,可以得到:
將式(9)代入式(6),可得
令
則式(10)可化作等比數列:
求其通項公式,可得
將式(12)和式(13)帶入式(14),可解得
實際的跨集群容器遷移場景中,2 個集群性能穩定,因此本文模型以集群間的網絡延遲TL的值作為迭代傳輸是否繼續的判斷依據.
在該迭代模型中,迭代傳輸的起始條件依賴的重要指標是T0與T1的差值,共存在3 種情況:
第1 種情況為滿足條件T0?T1<0,此時有T0ΔV<T1ΔV?V1<V2,則每次迭代傳輸過程中需要傳輸的狀態文件大小是遞增的,即每次迭代傳輸消耗的時間也是單調遞增的,傳輸過程總用時和對用戶的停機時間會隨著迭代次數的增加越來越高,迭代傳輸產生負收益. 因此應當通過一次傳輸完成整個遷移過程,即迭代次數為1,服務停機時間為第1 次的傳輸時間,即T=T0.
第2 種情況為滿足條件T0?T1=0,此時有T0ΔV=T1ΔV?V1=V2,則每次迭代傳輸過程消耗的時間相同,迭代并沒有起到縮短單次傳輸時間的效果,反而增加了集群的其他方面性能壓力以及傳輸總時間.因此與第1 種情況相同,在該情況下也應當通過一次傳輸完成整個遷移過程,即迭代次數為1,服務停機時間為第1 次的傳輸時間,即T=T0.
第3 種情況為滿足條件T0?T1>0,此時有T0ΔV>T1ΔV?V1>V2,每次迭代的傳輸過程消耗時間是單調遞減的,迭代傳輸將縮短單次傳輸的消耗時間,對用戶的停機時間隨迭代次數的增加而縮短,迭代遷移的使用產生收益,此時應當使用迭代遷移方法. 因此迭代遷移的起始條件為T0?T1>0.
令T0?T1>0,將其帶入式(10),可得
解此不等式,得
因此,當集群間網絡延遲TL滿足式(17)條件時,容器的遷移應采用迭代的方式. 將式(7)帶入式(17),可得
式(18)即為迭代遷移的起始條件. 當TL的值不滿足式(18)時,則不采用迭代遷移方法,通過1 次遷移完成容器的遷移過程,也可認為是迭代次數為1 的迭代遷移過程.
當滿足條件需要進行迭代傳輸時,需要確定傳輸過程的迭代次數. 本文認為迭代遷移的停止條件為第x次遷移時間與第x+1次遷移時間的差不大于網絡延遲TL時,網絡延遲時間成為影響單次迭代時間的主要原因,且不受迭代過程影響,因此此時應停止迭代過程完成傳輸. 即有當
時,停止迭代過程完成傳輸,總迭代次數為x. 在滿足迭代傳輸的條件下,一定有Tx?1>Tx,因此式(19)可展開為
因此式(20)為迭代遷移的終止條件.
將式(10)帶入式(20),得到
將Tn的通項式(15)帶入式(21),解得
根據式(17),結合網絡延遲的物理意義可知,網絡延遲TL為大于0 的實數,因此有
即
同時結合迭代次數n的物理意義,n為不小于1的正整數. 令總迭代次數n的值為式(22)結果向上取整,可得n的計算公式為:
當
時,n=1;
當
時,
本文提供的迭代遷移算法主要考慮網絡延遲對遷移過程的影響,因此在實驗環境的設置中保證了2 端集群和容器的硬件性能穩定,將集群間網絡延遲的變化作為實驗結果的重要影響因素.
本文將實驗環境設置為較為典型的云平臺性能條件,令開始遷移時的狀態文件大小V0=100 MB,遷移過程中狀態文件的增長速率 ΔV=0.03 MB/ms,checkpoint 快照拍攝速率與恢復的速率vP均為0.1 MB/ms,狀態文件快照的壓縮率K=68%,集群間的網絡傳輸速率vT=0.2 MB/ms.
在本實驗環境中,認為容器遷移過程中容器性能保持穩定,容器各性能的值在實驗過程中不發生變化.
針對本文主要研究目標,為驗證本文所提出的迭代遷移方法的貢獻,評價指標根據迭代遷移方法是否能夠縮短服務停機時間和能夠將服務停機時間縮短多少這2 方面進行劃分:
1) 當集群間網絡延遲滿足式(18)時,通過迭代遷移的方式能否縮短服務停機時間;
2) 在不同的網絡延遲條件下,采用迭代遷移方法能夠將服務停機時間縮短多少.
根據本文所建立模型,不采用迭代遷移的一次性遷移方式,也可看作是迭代次數為1 的迭代遷移方式,其服務停機時間即為第1 次迭代遷移過程的時間T0. 迭代遷移過程的服務停機時間即為最后一次迭代遷移過程的時間Tn?1. 在本模型中,采用二者的比值
來表示迭代遷移方法縮短服務停機時間的效率,R值越低效率越高.
根據迭代傳輸的起始條件式(18),將實驗環境中各參數的值帶入,計算得到滿足條件的網絡延遲TL<993.33. 為驗證迭代傳輸判定條件的有效性,分別取5 種不同網絡延遲TL1=1 200 ms,TL2=1 100 ms,TL3=993 ms,TL4=900 ms 和TL5=800 ms. 其中TL1和TL2不滿足式(18)條件,TL3的值與起始條件值相近,TL4和TL5滿足式(18)條件. 計算并繪制5 個條件下迭代過程的單次迭代傳輸時間Tn隨迭代次數n的變化情況如圖2 所示.

Fig. 2 Effect of the network latency on the iterative transmission time圖2 網絡延遲對迭代傳輸時間的影響
從結果中能夠看出,當TL與式(18)計算所得迭代傳輸起始條件TL的值相同時,每次迭代的時間幾乎沒有變化. 圖中TL3=993 ms 時,其對應的T0=3 333 ms而后續單次迭代傳輸時間為3 332 ms,主要原因為本文假設TL3=993 ms 與起始條件TL=993.33 ms 并非完全相同.
TL1與TL2大于式(18)計算所得迭代傳輸起始條件的值時,每次迭代傳輸的耗時是單調遞增的. 綜上可知,在網絡延遲滿足TL1=1 200 ms,TL2=1 100 ms,TL3=993 ms 這3 種情況時,迭代傳輸并沒有縮短單次傳輸時間,也就是服務的停機時間,同時隨著迭代次數的增加,也會增加對集群的性能壓力和傳輸總時間.
TL4與TL5滿足式(18)計算所得迭代傳輸起始條件的值時,能夠看到每次迭代傳輸的耗時是單調遞減的,此時迭代傳輸縮短了單次傳輸時間,達到了縮短服務停機時間的目的.
我們取3 個不同的滿足迭代傳輸起始條件的網絡延遲的值,分別為TL6=900 ms,TL7=600 ms,TL8=300 ms,計算并繪制單次迭代傳輸時間Tn隨迭代次數n的變化情況如圖3 所示.

Fig. 3 Effect of the network latency when the iteration conditions are met圖3 滿足迭代條件時網絡延遲的影響
結合圖2 與圖3 所示,可以從中得出2 點結論:
1) 當網絡延遲TL滿足迭代傳輸起始條件時,傳輸過程中單次迭代傳輸時間隨迭代次數的增加而縮短,迭代傳輸能夠達到縮短服務停機時間的目的;
2) 網絡延遲TL與起始條件值相差越大,相鄰2次迭代間減少的傳輸時間越多,最終停止迭代時單次傳輸時間更低,即服務停機時間越短,迭代傳輸的收益越大.
根據式(25)可知,當
時,n=1,化簡可得
將式(7)帶入式(29),計算并化簡后解得
將模型中的各項參數值帶入式(30),解得當網絡延遲TL≥409.71 ms 時,總迭代傳輸次數為1,即因為每次傳輸過程受網絡延遲TL影響較大,通過1 次傳輸完成容器遷移.
當網絡延遲TL<409.71ms 時,迭代次數將大于1,可通過式(27)計算總迭代次數n. 根據計算結果,繪制總迭代次數隨網絡延遲TL變化的圖像如圖4 所示.

Fig. 4 Trend plot of the number of iterations varying with the network latency圖4 迭代次數隨網絡延遲變化趨勢圖
從圖4 中能夠看出,總迭代次數是隨著集群間網絡延遲TL的增加而不斷降低.TL增加單次傳輸時間的影響越來越大,收益越來越低,因此總迭代次數不斷下降,直至總迭代次數為1.
實際環境中,跨集群間的網絡延遲通常在30~500 ms 之間,可以看到本文建立的遷移模型在這個延遲區間的總迭代次數變化平穩.
在得到不同網絡延遲對應的總迭代次數的基礎上,結合式(28)計算不同網絡延遲時迭代遷移方法能夠提供的服務停機時間縮短的效率. 在網絡延遲為100~400 ms 時,以50 ms 作為間隔,對服務停機時間縮短效率進行分析. 從表2 中可以看出,隨著集群間網絡延遲的降低,總迭代次數增加會使服務停機時間縮短的效率提高. 在網絡延遲足夠低時,甚至可將服務停機時間縮短至不使用迭代遷移方法停機時間的1/4 以內.

Table 2 Features Comparison of the Main Strategies with TLP Enhancing表2 提升TLP 的主要策略的特點對比
在真實的有狀態容器跨集群遷移過程中,網絡延遲和集群性能并非穩定,從4.2 節的分析結果來看,一次完整的遷移過程可能會持續數秒甚至數十秒,這個時間對于遠距離的網絡傳輸來說,很難保證性能持續穩定.
針對傳輸性能不穩定對傳輸過程造成的影響,我們分別從網絡延遲和集群性能2 個方面來討論.
1)在集群性能穩定的情況下,網絡延遲TL的波動會對單次迭代傳輸時間Tx產生影響,進而會影響到下一次迭代過程中的狀態文件大小,對后續的傳輸過程產生影響. 當傳輸過程中TL增大時,會使下一次迭代過程中的狀態文件大小Vx變大,導致單次迭代傳輸時間變長. 但是由于網絡延遲波動造成的意外情況,TL會隨著后續的迭代過程再次縮短,最終導致的結果可能是,按照確定好的迭代次數完成整個容器遷移過程時,并不能滿足迭代過程的終止條件Tx?1?Tx≤TL.
同時,網絡延遲的變化存在著另一種變化方式,即傳輸過程中網絡延遲TL變小. 這種情況可能會導致在達到確定好的迭代次數之前即滿足終止條件Tx?1?Tx≤TL. 產生的后果是雖然已經滿足了終止條件,卻仍然在進行迭代過程,直至達到遷移過程開始前確定好的迭代次數為止. 這種情況下,會造成網絡資源和集群性能的浪費.
2)集群性能的波動對傳輸過程的影響與網絡延遲的影響類似,集群性能同樣影響到當前傳輸過程的單次迭代傳輸時間Tx. 因此集群性能的降低所產生的影響與網絡延遲增大所產生的影響一樣,而集群性能的提高則與網絡延遲降低對迭代遷移過程產生的影響一致.
本文方法中總迭代次數是根據性能參數在容器遷移過程開始之前確定的,因此遷移過程中性能的波動不會對總迭代次數產生影響,但會影響到后續的單次迭代傳輸過程的時長,可能會造成最后一次迭代過程不能滿足終止條件,以及提前滿足終止條件而對網絡和集群性能造成浪費的情況.
本文提出了一種考慮集群間網絡延遲的迭代遷移算法,提高了有狀態容器跨集群遷移效率,縮短服務停機時間. 根據提出的遷移方法確定遷移過程的總迭代次數,并通過實驗分析了迭代遷移對服務停機時間的縮短效率,證明了本文提出方法能夠有效大幅度縮短有狀態容器跨集群遷移過程導致的服務停機時間.
未來我們還將繼續完善迭代遷移方法、優化方向有2 個:1)考慮優化迭代遷移過程,通過改進迭代方法提高遷移效率;2)根據實際遷移情況,考慮其他的迭代遷移終止條件. 對真實環境容器遷移過程中的性能波動更進一步分析,定量地研究遷移過程中網絡延遲和集群性能對遷移過程終止條件的影響.
作者貢獻聲明:吳憲負責模型設計并完成論文撰寫;湯紅波改進模型,確定迭代遷移方式的收益計算方法并指導實驗;趙宇提出實驗方法并審核實驗結果;許明艷指導論文寫作,并設計和修改論文的插圖.