趙旭彤,賈京峰,李志明
(華云數(shù)據(jù)集團有限公司,江蘇無錫214000)
云計算平臺中,管理員或用戶在配置、創(chuàng)建云主機后,系統(tǒng)還需要通過配置引導啟動創(chuàng)建的云主機,此階段對用戶來說,云主機實際上是處于不可用階段。此節(jié)點一般情況下,Linux系統(tǒng)為20s以上,Windows系統(tǒng)則更久,有時甚至超過1min。如何有效減少此不可用階段的時間,提升云主機的使用友好性,是云計算平臺的一大難題。
在基于Openstack的IaaS云平臺中[1],創(chuàng)建云主機的一般過程如下:①用戶從自服務Web界面進行配置,并確定創(chuàng)建云主機;②服務器端控制臺接收用戶創(chuàng)建信令消息,調用計算節(jié)點 API創(chuàng)建虛機;③計算節(jié)點Nove接受API調用,并進行認證等相關輔助流程,確認調用可信后調用Libvrit API進行處理;④Libvrit調用QEMU,QEMU跟進用戶的資源配置要求,準備調用網(wǎng)絡存儲等相關資源創(chuàng)建虛機,同時QEMU返回云主機創(chuàng)建中的消息,通過逐層通知,告知用戶云主機創(chuàng)建中;⑤QEMU開始進入虛機創(chuàng)建階段,準備網(wǎng)絡存儲等資源,進入虛機Bootloader,啟動虛機,重啟系統(tǒng)和服務,直到交付給用戶最終可用的云主機。
我們定義,從第一步到第四步之間消耗的時間段,為T1;第五步消耗的時間段,為T2。在整個流程中,T1一般耗時少于1min;但對T2,虛擬機在創(chuàng)建后,進入虛機啟動階段,通常Linux系統(tǒng)需要耗費10s以上,Windows則更久,有時候甚至超過1min。
T1加T2是用戶從創(chuàng)建到可用的總時間,而控制臺返回的往往是T1時間,只是告訴用戶,機器已經(jīng)激活,但實際上云主機還處于不可用狀態(tài),指導T2結束,用戶才可以進入云主機的登錄界面。提升用戶服務體驗最有效的方式,就是如何減少T2階段所消耗的時間。
云主機秒級可用技術使用以下技術細節(jié),減少T2階段所耗時間:①創(chuàng)新性定制化虛擬化軟件,技術革新支持統(tǒng)一內(nèi)存快照加速,加速虛機啟動;②云主機內(nèi)存和CPU熱升級技術,用于將虛機升級或降級至用戶配置;③QGA技術用于用客戶化定制服務以及功能。
基于以上核心技術點,可以成功將云主機創(chuàng)建時的啟動時間從20s以上,縮短至1~3S左右。秒級可用技術詳細架構功能流程,說明如下:①用戶從自服務Web界面進行配置,并確定創(chuàng)建云主機;②計算節(jié)點Nova創(chuàng)建磁盤,此時使用定制化研發(fā)的統(tǒng)一內(nèi)存快照加速技術,拉取系統(tǒng)集成鏡像,創(chuàng)建磁盤快照,并拉取此磁盤快照對應的虛擬機的配置、狀態(tài)信息;③Libvrit基于磁盤快照啟動虛機,進入云主機創(chuàng)建流程;④檢查內(nèi)存中是否有特定的可用虛擬機模板,有則直接使用,沒有則啟動一個虛擬機模板;⑤通過第二步的虛擬機配置、狀態(tài)信息,對比用戶待創(chuàng)建云主機的配置規(guī)格,逐項熱升級到用戶指定的云主機配置規(guī)格;⑥更改虛擬機的狀態(tài)信息,如網(wǎng)絡地址、用戶名密碼信息等,完成云主機的創(chuàng)建過程。
秒級可用技術,規(guī)避了OS的啟動過程,通過對比云主機配置與系統(tǒng)內(nèi)虛機實例模板的配置、狀態(tài)信息,逐項更新的方式,大大減少了云主機的整體創(chuàng)建時間,快速地為用戶提供一個可用的云主機,用戶點擊完創(chuàng)建與開通云主機后,幾乎無須等待即可使用,提升了用戶云主機服務體驗。
在現(xiàn)有大多數(shù)的IaaS云平臺上,云主機的CPU和內(nèi)存熱升級,要經(jīng)歷關機再開機的配置生效過程。時間一般以分鐘來計,而且這個過程中應用程序和業(yè)務會經(jīng)歷中斷。如果是高可用架構,在業(yè)務集群中一般采用逐臺升級的方式來避免業(yè)務影響,但也會需要大量的運維操作。
現(xiàn)有業(yè)務經(jīng)常出現(xiàn)客戶不希望中斷業(yè)務,實現(xiàn)虛擬機的CPU資源的動態(tài)升級。因此需要在虛擬機運行狀態(tài)實現(xiàn)CPU和內(nèi)存業(yè)務完美融合。為了更好地應對不同的業(yè)務需求,在設計時我們將CPU和內(nèi)存的熱升級做成兩個獨立的選擇,保證云主機秒級可用技術,或者用戶在單項資源不足時,可以靈活地調整資源配置,而不是非要固定地選擇某一種類型。
第一,CPU熱升級技術。CPU熱升級使用的是max和current調整CPU,我們現(xiàn)有這種方法基本是仿效Ovirt的CPU熱升級的設計。
通過提升current sockets值完成CPU的熱升級。
第二,內(nèi)存熱升級技術。業(yè)內(nèi)現(xiàn)有技術實現(xiàn)內(nèi)存的熱升級,使用的是memory ballooning。 Memory ballooning這種技術相比對操作系統(tǒng)和物理機要求較高,需要虛擬機和物理機一起合作完成。
內(nèi)存熱升級技術:Hotplug內(nèi)存熱插拔,這是一個確定的發(fā)展方向,降低了內(nèi)存的占用。內(nèi)存相當于一個獨立的設備掛載給虛擬機,方便升降適應性更好。Hotplug可以動態(tài)地增加或減少虛擬機系統(tǒng)中可用的內(nèi)存數(shù)量??梢灾С指嗟牟僮飨到y(tǒng)和固件,這種垂直縱向的擴大和縮小可以很好地滿足業(yè)務場景的需求。
第三,關鍵技術點實現(xiàn)機制。在控制層,調度層和計算服務層增加CPU和內(nèi)存熱升級相應的邏輯,在成功添加CPU和內(nèi)存后將其信息推送到持久化層,保證業(yè)務數(shù)據(jù)統(tǒng)一。我們從兩個方面進行了技術更新,一方面是,業(yè)務接口調整內(nèi)容如下:①增加CPU熱添加接口;②自動更新VM的Flovar中的配置;③增加新的接口動態(tài)添加內(nèi)存 ;④熱添加的內(nèi)存持久化到數(shù)據(jù)庫;⑤硬重啟虛擬機后讀取之前的信息并加回;⑥增加動態(tài)刪除內(nèi)存接口;⑦增加關機狀態(tài)下清理內(nèi)存接口。另一方面是,虛擬機模板調整:虛擬機內(nèi)不同的系統(tǒng)對于添加的CPU和內(nèi)存的策略。我們的定制模板為方便用戶,自動激活熱掛載的CPU和內(nèi)存。
使用云主機秒級可用技術后,IaaS云平臺有以下優(yōu)勢與亮點:①減少用戶等待時間:用戶從之前的T1+T2的時間大大縮短到秒級,大大提高用戶體驗,實現(xiàn)真正的創(chuàng)建即使用。②對后端鏡像存儲沒有限制:后端鏡像存儲,可選用Ceph或者其他解決方案。特別的,對于Ceph有特別優(yōu)化,性能可用性支持更好。③支持所有鏡像:對于所有系統(tǒng)鏡像均可以使用,免去鏡像困擾。④節(jié)約用戶成本:計費時用戶創(chuàng)建時即開始,運用此技術可以降低用戶對于系統(tǒng)啟動時間的花費。
通過一個實驗,將能夠明顯地感受到云主機秒級可用技術的有效性。本次實驗環(huán)境為:①系統(tǒng):CentOS7.2;②內(nèi)核版本:3.10.327;③OpenStack版本:Mitaka版;④Libvrit版本:定制化發(fā)行版V2.0;⑤QEMU版本:定制化發(fā)行版V2.3;⑥CPU:Intel Xeon 2056 V3;⑦內(nèi)存:128G;
本次測試云主機配置為:4核 8G,300G磁盤,OS為CentOS7.2。目標是測試開啟和不開啟云主機秒級可用技術下,T1+T2的總耗時對比。
測試結果顯示,未開啟云主機秒級可用技術,T1+T2總耗時為30.8秒;開啟云主機秒級可用技術后,T1+T2總耗時為3.1秒。可以明顯看到開啟云主機秒級可用技術后帶來的效果。
使用云主機秒級可用技術,相對于傳統(tǒng)方法[2],可以大大提高了用戶的體驗,與此同時,使用此功能后可以做到:①減少用戶等待時間,讓用戶更快速地部署系統(tǒng),甚至如果用戶已經(jīng)在鏡像中部署好服務,那用戶創(chuàng)建云主機后數(shù)秒即可提供相關服務。②減少用戶成本,云主機的計費方式主要按照資源使用量以及時間計費,無用時間的下架勢必減少用戶成本,在大批量創(chuàng)建的時候尤為明顯。
云主機創(chuàng)建開通后即可使用,本技術能夠滿足在系統(tǒng)部署時希望快速登入系統(tǒng)的用戶,尤其是自動化開通,自動化部署服務的用戶。隨著強勁的業(yè)務與服務的快速交付要求,以及CICD應用部署的普及,云主機秒級可用技術將得到極大的應用,產(chǎn)生極高的價值。