【關鍵詞】OpenStack;云計算;時間序列;智能調度;負載均衡
隨著信息技術的迅猛發展,云計算已成為當今重要的熱點和趨勢,近年來云計算全球市場穩步增長,預計2023年全球公有云市場規模將達4001億美元。云計算是一種基于虛擬化技術,由大量的物理計算機以及網絡等其他硬件組成的資源池,提供給用戶按需的計算、存儲、網絡服務等。
當今開源IaaS云計算管理平臺有Open Stack 、CloudStack等一系列解決方案,而OpenStack作為一種旨在為公有云和私有云IaaS層提供可靠的、可擴展的彈性服務獲得了業界廣泛的關注,并已成為目前最主流的云計算管理平臺。OpenStack是美國國家宇航局和基礎設施服務商Rackspace共同發起,全球眾多IT公司共同參與開發的開源項目,OpenStack由多個組件組成,包括計算服務(Nova)、網絡服務(Neutron)、塊存儲服務(Cinder)、管理界面(Horizon)等[1-2]。
前期OpenStack云管理平臺為客戶端創建虛擬機實例時,選擇目標主機的方式比較單一,如單純比較宿主機剩余CPU或內存空間的大小,選取剩余空間最大的主機作為創建虛擬機實例的目標主機,但是這種僅僅考慮單一要素已經無法滿足現在業務越來越復雜的需求。而隨著相關技術的快速發展,宿主機的CPU、內存、磁盤空間、IP等都是目標主機選擇的重要參考要素,然而這類算法首先并沒有充分考慮虛擬機承載的業務對于CPU、內存等資源的需求屬性,而是平等對待,導致耗CPU型虛擬機實例可能會被分配到目前CPU較高、內存較低的宿主機上。其次目前調度更多關注的是宿主機的資源分配率,然而分配率與實際的宿主機利用率相差較大,最后其僅僅將宿主機的CPU、內存等的瞬時值作為選擇目標宿主機的決定值,但在實際應用中宿主機的CPU、內存等的使用率并不穩定,會出現某一瞬間負載過高或過低而誤估資源負載的情況,導致選擇的目標主機非最優,進而引起集群某些宿主機資源利用率過高,影響其承載的其他業務虛擬機實例,同時也會引起整個集群的資源利用率不均衡[3]。
隨著大數據、人工智能技術的飛速發展,以及GPU 在高速計算方面的性能優勢逐步顯現,需要大量實時計算的算法以及技術的落地成為可能。本文利用時間序列預測技術中的自回歸模型,提出了一種基于物理主機CPU、內存、磁盤、帶寬多維度的歷史數據來預測未來某一時間段宿主機負載情況的方法,可以有效解決OpenStack平臺為創建虛擬機實例選擇目標宿主機方式單一以及對于主機負載情況判斷不準確,導致選擇的目標主機非最優,進而引起集群資源利用率不均衡的問題。同時也考慮了業務類型的不同,可以針對虛擬機實例的CPU、內存、磁盤空間以及帶寬需求設置不同的權重,避免相同的業務類型(如同屬于耗CPU型的業務)放置在同一臺主機上的問題,達到了不同業務類型的虛擬機實例資源需求互補的效果,進而實現了集群內資源利用均衡的需求。
本文根據業務類型的不同,可以針對需要創建的虛擬機實例的CPU、內存、磁盤空間以及帶寬需求設置不同的權重,并利用時間序列預測技術中的自回歸模型模型AR(p)實現了OpenStack虛擬機實例的智能預測,具體算法如下文所述。
(一)接收客戶端請求
OpenStack平臺接收客戶端發送的創建虛擬機實例的請求信息,包括虛擬機實例的CPU、內存、磁盤和網絡帶寬以及該虛擬機實例對于資源的需求權重,該權重的值越大表示該虛擬機實例對該項要求越高,權重值的大小與該虛擬機實例承載的業務類型息息相關,如CPU的權重較大則表示該虛擬機實例對CPU要求比較高,承載的是耗CPU型的業務。
(二) 獲取宿主機集合一
從資源池的數據庫內選擇所有滿足虛擬機實例需求服務的宿主機,并將所述主機列為主機集合一,若不存在滿足條件的主機則返回錯誤信息,并結束操作。
(三)利用AR(p)模型預測主機集合一的負載
利用時間序列預測技術中的自回歸模型AR(p),結合主機集合一中主機當前時刻k及之前的m個時刻的負載數據,預測主機未來n個時刻的CPU、內存、磁盤空間、帶寬使用情況,對其取平均值,得到未來n個時刻的主機負載數據,進而得到宿主機資源利用率和剩余資源數據。
(四)獲取宿主機集合二
根據上一節利用AR(p)模型預測的主機的可用資源與創建虛擬機實例的資源需求,從宿主機集合一中進一步篩選出滿足條件的主機,列為宿主機集合二,若不存在滿足條件的主機則返回錯誤信息,并結束操作。
(五)獲取宿主機集合三
根據第一小節中根據不同的業務需求設置的虛擬機實例的CPU、內存、磁盤、帶寬的權重值,然后通過主機權重公式對所述宿主機集合二中的物理主機進行權重計算,并根據計算得到的權重對所述主機集合二進行升序排列,獲取宿主機集合三。
(六)獲取創建虛擬機的目標宿主機
從所述宿主機集合三中選擇權重最小的主機,將該主機確定為創建虛擬機實例的目標主機,并在該目標主機上為客戶端創建虛擬機實例。
上一章主要講述了OpenStack平臺虛擬機實例的智能創建系統模型,本章將針對上章節的OpenStack云管理平臺的虛擬機實例智能創建進行詳細的算法實現。
(一)獲取客戶端虛擬機實例需求
OpenStack云計算管理平臺首先接收客戶端發送的創建虛擬機實例的資源請求信息,包括虛擬機實例的CPU、內存、磁盤和網絡帶寬需求以及該虛擬機實例對于資源的需求權重,該權重是根據虛擬機承載的業務類型而定的;假設a、b、c、d為根據不同的業務需求,設置的虛擬機實例需求的CPU、內存、磁盤和帶寬的權重,且a+b+c+d=1,a,b,c,d∈[0,1]其中a、b、c、d的值越大表示該虛擬機實例對該項要求越高,如a=0.6,b=0.2,c=0.1,d=0.1,表示該虛擬機實例對CPU要求比較高,承載的是耗CPU型的業務。
(二)獲取宿主機集合一實現算法
從資源池的數據庫內選擇所有滿足虛擬機實例服務的主機,并將所述主機列為主機集合一,若不存在滿足條件的主機則返回錯誤信息,并結束操作。
(三)基于AR(p)模型獲取宿主機穩態資源情況實現算法
利用自回歸模型AR(p)預測宿主機集合一中主機未來n個時刻的CPU、內存、磁盤空間、帶寬使用情況,分別對其取平均值,得到未來n個時刻的宿主機平均負載情況以及剩余資源,具體實現步驟如下所示:

步驟S103:通過下式可以進一步得到主機能夠提供的CPU、內存、磁盤以及帶寬的大小,計算公式如下:

(四)獲取宿主機集合二實現算法
根據步驟上一節預測的主機的可用資源與創建虛擬機實例資源需求篩選出滿足條件的主機,列為宿主機集合二,若不存在滿足條件的主機則返回錯誤信息,并結束操作。
(五)獲取宿主機集合三實現算法
根據第一小節設置的虛擬機實例的CPU、內存、磁盤、帶寬的權重,然后通過下式對所述主機集合二中的主機進行權重計算,并根據計算得到的權重對所述主機進行升序排列,獲取宿主機集合三,具體實現步驟如下:

步驟202:根據計算得到的權重對集合二中的宿主機進行升序排列,獲取宿主機集合三。
(六)獲取目標宿主機
從上一節得到的集合三中選擇權重最小的主機,將所述權重最小的主機確定為創建虛擬機實例的目標主機,并在該目標主機上為客戶端創建虛擬機實例。
本文研究了OpenStack云計算管理平臺虛擬機實例的創建算法,并利用時間序列預測技術中的自回歸模型提出了一種基于宿主機的歷史負載數據而預測未來某一時間段的宿主機負載情況的方法,可以準確評估主機可以提供的資源情況,同時本文全方位地評估了創建虛擬機實例對于主機的CPU、內存、磁盤空間以及帶寬的要求,并且可以根據業務類型的不同,對虛擬機實例的CPU、內存等設置不同的權重,避免了相同業務類型虛擬機放置在同一臺主機上的問題,滿足了不同業務類型的虛擬機實例資源需求互補的效果,進而實現了整個集群資源的均衡。