呂書林+李金旭
摘 要:通過分析當前流行的虛擬資源伸縮技術,文章提出基于需求預測機制和實時監測相結合的資源伸縮策略,能從一定程度上解決虛擬化資源在調度過程中造成的服務時效性差和資源利用率低的問題。
關鍵詞:云平臺;負責均衡;虛擬資源伸縮
1 研究意義
云平臺的優勢是能提高資源的利用率,降低能源消耗,通過引入虛擬化技術等方式,來細化物理資源分配單元,從而提升系統分布的密度,提高系統使用效率,降低對物理設備的需求,從而降低IT設備投入,降低能耗節約成本。
云平臺中一個很關鍵的技術就是資源的虛擬化,并根據不同業務在不同時間對資源需求的不同特點,來動態地調節平衡虛擬化資源的配置,從而實現在現有物理資源規模情況下資源的高效利用[1]。那么,虛擬化資源的分配調度策略便成為云平臺技術研究的重點之一。虛擬化資源調度策略中研究的關鍵問題有兩個,一是何時需要進行虛擬資源的擴充和伸縮,二是通過什么方式進行虛擬資源的伸縮。這兩個問題的解決,使云平臺能夠在最佳時機以最優的策略進行資源的動態配置。
2 虛擬資源伸縮技術概述
虛擬化資源的管理可以通過虛擬機管理程序來實現,隨著虛擬化技術的不斷發展,目前針對虛擬化資源的伸縮技術研究主要分為兩個層面:一是基于水平層面的水平伸縮[2],一是基于垂直層面的垂直伸縮。
水平層面的伸縮是基于虛擬機層面來實現資源的動態配置,通過增減虛擬機的數量來完成資源的補充和釋放。水平伸縮是一種非常容易實現的虛擬資源伸縮方式,在目前的各種云平臺中被廣泛使用。通過這種方式可以調整的資源規模相對較大,但同時因調配基于虛擬機層面,會造成不必要的資源浪費。并且部署和啟動虛擬機需要較長的時間才能完成,會造成服務等待的情況,對平臺服務的實效性有一定的影響。
垂直層面的伸縮是基于正在運行的虛擬機自身的資源層面來實現資源的動態調配。目前的技術已經可以做到在虛擬機正常運行的情況下完成在線虛擬機資源的動態調整。并且,基于該層面的資源伸縮過程很短,在毫秒級時間內即可完成。垂直層面資源伸縮技術的實現方式有多種,可以是同一臺物理機上的虛擬機之間進行資源調度,也可以將物理機上空閑的資源分配給該物理機上的其他虛擬機。這兩種方式適用的應用場景不同,在進行伸縮方式選擇時需要根據具體情況分析,綜合考慮。
(1)第一種方式是基于同一臺物理機上不同虛擬機之間服務類型不同、服務請求分布不均、處理能力不同等因素為出發點,通過虛擬機之間的資源調配,實現在擴充虛擬機資源要求的情況下又不占用其他空閑資源。它的特點是資源調配時間短,但同時存在調配的資源規模相對較小的問題,不能滿足較大規模的資源伸縮需要。
(2)第二種方式是利用物理機的空閑資源進行動態的調配,在虛擬機需要資源擴充時申請空閑資源完成資源的增加,在資源需求降低時釋放部分空閑資源到物理機上。它的特點是充分利用物理機空閑資源,能夠根據用戶需求的變化做到快速響應,但同時也存在第一種方式中資源調度規模較小的問題。
3 資源伸縮策略探討
為了實現云平臺虛擬資源的可伸縮性,平臺應該能夠根據服務所需資源的變化動態增加或者減少虛擬資源,當需要增加虛擬資源時,最簡便的方式是當監測到虛擬資源利用率超過約定上限時啟動虛擬機來滿足資源擴充。但是虛擬機的啟動會耗費一定的時間,在這段時間內,因虛擬機尚在調配過程中不能向用戶及時提供服務,將會影響服務性能,造成對用戶服務請求響應的滯后。
基于上述情況,人們對云平臺的資源伸縮便有了具體的要求。云平臺需要能夠根據具體的服務請求來動態選擇適合的方式進行虛擬資源的增減??梢酝ㄟ^兩種方式來改善動態調配過程中存在的服務時效性和資源調度成本問題。
(1)一是為不同的應用設定資源使用底限和上限,并加入對下一階段資源需求預測機制,根據動態的預測結果來及時補充或釋放虛擬資源。由于資源的調配是基于預測結果進行,這就給資源的調度時間提供了一個比較寬松的環境,基于該策略的調度可以在水平和垂直兩個層面進行。
(2)二是通過實時監控的方式進行資源的實時擴展和實時釋放。因為實時擴展過程中要盡量保證服務的實效性,那么就要求云平臺能夠較快地完成調度過程,我們可以選擇基于垂直層面的第一種資源伸縮方式來實現。釋放資源不存在影響服務時效性的問題,對調度時間的要求比較低,這使得預先釋放資源的意義不大,所以可以在監測到資源使用率低于規定的下限時進行實時資源釋放。
為了進一步提高資源伸縮的實際效率,可以綜合考慮以上兩種方法,并在資源調度過程中引入基于預測伸縮和實時伸縮相結合的方法來解決實際問題。
基于垂直層面進行資源伸縮的兩種方式適合實時資源調整規模較小的情況,而虛擬機層面的水平伸縮適合對實時性要求不高的資源調整規模較大的場景。所以,在基于未來資源需要預測的伸縮過程中,根據平臺負載預測結果對平臺進行基于水平伸縮(虛擬機層面)和基于垂直層面第二種伸縮方式進行資源的伸縮。在實時擴展過程中,對平臺進行基于垂直層面的兩種方式進行擴展,在實時釋放過程中,對平臺進行水平層面和基于垂直層面第二種伸縮方式的資源釋放。
4 云平臺負載預測方法探討
4.1 云平臺負載預測研究現狀
負載預測對于云平臺資源伸縮來說是十分必要的,并且當前針對云平臺的負載預測問題已經有了相當多的研究成果,這些研究成果對于云平臺的資源伸縮技術的改進和進步都有不同的貢獻。例如,有研究人員提出的一種基于自回歸滑動平均模型(Autoregressive Moving Average Model, AMAM)的方法進行負載預測,方法是根據服務器負載動態變化的統計分析結果所總結出的負載變化規律,提出了基于服務器負載和時間序列的預測方法,并且在應用中使用該方法對網關服務器的負載情況進行預測。另外還有一種基于二階自回歸滑動平均模型的負載預測方法,采用了類似的策略。還有研究人員提出了一種基于負載熱點檢測預測法,該方法的實現分為兩個步驟:第一步是依據針對負載的監測結果對負載未來發展趨勢作出預判,然后依據作出的趨勢判斷使用相應的負載預測算法進行預測;這種基于負載熱點的預測方法,能夠有效預測出負載的突發性增長并及時報警,從而為資源的及時擴充提前做好準備。
這幾種方法的優點是計算量相對較小,但方法中使用到的預測模型是相對固定的,模型不能夠依據負載實際的變化情況而進行動態的調整,這就容易出現預測結果不夠準備的結果。
除以上幾種方法外,還有基于模式匹配和狀態遷移的負載預測方法,如PRESS。方法首先使用信號處理技術來標識重復的負載片段,此時會出現兩種情況。一是發現當前的負載片段與以往的負載出現了重合,此種情況下方法就依據重復片段進行負載預測。二是發現當前的負載與以往的負載不存在相似性,此種情況下就使用基于統計的狀態驅動方法來捕捉短時間內的負載模式,并使用離散時間的馬爾可夫鏈來預測未來的負載情況。然而,馬爾可夫預測模型存在預測精度低、誤差大、適用范圍小等缺點。這種預測方法是通過對歷史負載數據分析來預測服務負載的,負載預測結果比較準確,但是這類方法通常需要大量的計算和較長的時間,為平臺帶來很大計算開銷。徐風苓、孟祥武等使用的基于移動任務上下文相似度的協同過濾推薦算法,也是基于字符串匹配和模式匹配的方法,首先來判斷識別相似的負載片段,然后再進行負載的預測。
4.2 云平臺負載的特點
云平臺的負載是比較復雜的,很多情況下單靠負載分布曲線是無法準確描述的。具體來說,存在以下幾方面的特點。
(1)時間關聯性,上一時間段的負載對下一時間段的負載存在很大的影響。
(2)波動性,負載可能在很長一段時間內相對穩定,但也存在突然波動很大的偶發情況,不能用一般的線性規律模型進行描述。
(3)自相似性,負載在不同的時間周期內在某些特定的時間段內存在一定的相似性。
4.3 云平臺負載預測方法的選取建議
通過對以上云平臺負載特點的分析,我們可以得出一些建議。針對較短時間內云平臺負載存在的線性相關性,我們可以基于此建立線性模型來進行預測,也就是說根據云平臺當前的負載情況來預測下一段的負載是可行的;針對云平臺負載變化的歷史自相似性,我們也可以建立基于歷史數據的負載估測模型或采用模式識別算法來預測運行過程中相似時期的負載情況;針對負載的波動性特點,我們需要在預測算法中加入相應的調整和修正策略,來盡可能地保證預測的準確性。在進行模型建立和算法設計時,同時需要考慮模型和算法的復雜度,盡量對算法本身進行優化,以減少負載預測時帶來的額外開銷,以降低對平臺性能的影響。
5 結語
本文探討了云平臺中負載預測和資源伸縮策略,建議在實際伸縮時對平臺運行狀態進行監測,當平臺資源利用率超出預定上限時使用基于垂直層面相關伸縮策略及時擴充資源來滿足應用需求,在平臺資源利用率低于約定下限時釋放資源。同時,對云平臺的負載預測方法提出相關的建議。從以上思路出發,使得云平臺在滿足更多服務請求的前提下能夠盡量減少資源的使用,并降低平臺成本。