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