評(píng)估一個(gè)云平臺(tái)的SLA败许,一般以可用性、數(shù)據(jù)可靠性為主要指標(biāo)互墓,而因?yàn)閱螜C(jī)穩(wěn)定性存在天花板以及云計(jì)算系統(tǒng)的集群屬性恕刘,談及云計(jì)算SLA時(shí)討論的重點(diǎn)主要在分布式系統(tǒng)而非單機(jī)缤谎。但在今年ArchSummit大會(huì)上,UCloud資深工程師邱模炯的分享《Linux內(nèi)核在UCloud云平臺(tái)上的實(shí)踐》則主要著眼于單機(jī)上的云主機(jī)穩(wěn)定性褐着,UCloud廣泛應(yīng)用的Linux內(nèi)核熱補(bǔ)丁技術(shù)可以實(shí)現(xiàn)宿主機(jī)不重啟的情況下完成內(nèi)核升級(jí)坷澡,從而避免對(duì)上面云主機(jī)的業(yè)務(wù)中斷。
InfoQ中文站編輯跟邱模炯進(jìn)行了一次交流含蓉,了解UCloud關(guān)注單機(jī)穩(wěn)定性背后的原因洋访。
嘉賓簡(jiǎn)介
邱模炯,UCloud資深工程師谴餐,2007年研究生畢業(yè)于北京大學(xué)計(jì)算機(jī)系姻政,之后分別在VMware、騰訊工作過(guò)岂嗓,目前供職于UCloud汁展。技術(shù)經(jīng)歷上以L(fǎng)inux內(nèi)核、虛擬化技術(shù)和數(shù)據(jù)中心自動(dòng)化運(yùn)維等方面為主。熱愛(ài)服務(wù)器和數(shù)據(jù)中心的各種技術(shù)食绿,研發(fā)和運(yùn)維兼顧侈咕,硬件和軟件兼顧,底層和應(yīng)用兼顧器紧。
邱模炯是2014年10月QCon上海大會(huì)《擴(kuò)展性耀销、可用性和高性能》專(zhuān)場(chǎng)的出品人。
InfoQ:云平臺(tái)的穩(wěn)定性是怎么定義的铲汪?它跟我們說(shuō)的“可用性”是否是一個(gè)概念熊尉?它從整體的統(tǒng)計(jì)角度和從用戶(hù)的角度,分別意味著什么掌腰?
邱模炯:穩(wěn)定性和可用性?xún)蓚€(gè)概念本來(lái)是很接近狰住,說(shuō)說(shuō)我的看法。
穩(wěn)定性是指持續(xù)一段時(shí)間內(nèi)一個(gè)系統(tǒng)不出故障的概率齿梁,也可以把它轉(zhuǎn)化為“一段時(shí)間內(nèi)系統(tǒng)有多少次故障”催植。
可用性是指一段時(shí)間內(nèi)這個(gè)系統(tǒng)可以正常運(yùn)行的時(shí)間是多少。
舉個(gè)例子勺择,比如說(shuō)一個(gè)小時(shí)內(nèi)一個(gè)系統(tǒng)出了10次故障创南,但每次故障只要十秒鐘就恢復(fù)了,那么這一個(gè)小時(shí)就一百秒出問(wèn)題省核。另一個(gè)情況是稿辙,我一個(gè)小時(shí)內(nèi)出一次故障,這一個(gè)故障花了半小時(shí)芳撒。這兩個(gè)誰(shuí)更嚴(yán)重邓深?從穩(wěn)定性的角度來(lái)講未桥,前面一個(gè)更嚴(yán)重笔刹,雖然它故障的時(shí)間只有一百秒;從可用性的角度來(lái)講的話(huà)冬耿,后面一個(gè)更加嚴(yán)重一些舌菜,因?yàn)橐粋€(gè)小時(shí)有半個(gè)小時(shí)都不能工作。這是關(guān)于穩(wěn)定性亦镶、可用性的概念日月。
這兩個(gè)指標(biāo)都是用戶(hù)可以感知的:穩(wěn)定性關(guān)系到給用戶(hù)帶來(lái)的打擾次數(shù),可用性關(guān)系到用戶(hù)的業(yè)務(wù)能夠保持正常運(yùn)行的時(shí)間缤骨。我們現(xiàn)在對(duì)云平臺(tái)的可用性一般會(huì)設(shè)置一個(gè)量化指標(biāo)爱咬,比如UCloud對(duì)外的服務(wù),云主機(jī)的可用性是99.95%绊起,存儲(chǔ)的可用性比如說(shuō)是四個(gè)九精拟、五個(gè)九。而另一方面,很少有人在量化指標(biāo)里去提穩(wěn)定性蜂绎,大家更關(guān)心的是可用性的概念栅表。
InfoQ:你們?cè)趦?nèi)部,如何把穩(wěn)定性目標(biāo)轉(zhuǎn)化為可監(jiān)控师枣、可量化的指標(biāo)怪瓶?
邱模炯:從研發(fā)角度來(lái)看,穩(wěn)定性和可用性同樣的重要践美。我們不能說(shuō)把一次故障時(shí)間盡量的壓縮洗贰,比如壓縮到十秒內(nèi),然后我們就可以一個(gè)小時(shí)內(nèi)打擾用戶(hù)十次拨脉,這樣對(duì)用戶(hù)業(yè)務(wù)也同樣會(huì)產(chǎn)生很大的影響哆姻。
穩(wěn)定性這個(gè)指標(biāo)以云主機(jī)為例,我們會(huì)統(tǒng)計(jì)它的宕機(jī)次數(shù)玫膀,宕機(jī)次數(shù)反映穩(wěn)定性矛缨,相對(duì)于宕機(jī)累計(jì)的時(shí)間則反映可用性。
影響穩(wěn)定性帖旨、可用性的因素箕昭,涉及到整個(gè)云平臺(tái)技術(shù)方方面面。從上往下看整個(gè)云平臺(tái)技術(shù)解阅,首先是一個(gè)云管理平臺(tái)——如OpenStack這樣的平臺(tái)落竹,然后是虛擬化技術(shù)——也是云平臺(tái)的一個(gè)核心技術(shù),下面是Linux內(nèi)核货抄,然后是硬件——云平臺(tái)最終是把數(shù)據(jù)中心的硬件述召、資源給池化,然后賣(mài)給用戶(hù)蟹地,所以涉及到硬件技術(shù)积暖。然后,我們這么多的硬件怪与,我們的內(nèi)核夺刑、虛擬化、云管理平臺(tái)分别,我們要怎么樣運(yùn)維它遍愿。這些方面都影響穩(wěn)定性、可用性耘斩,哪個(gè)環(huán)節(jié)做得不好都會(huì)導(dǎo)致穩(wěn)定性沼填、可用性的下降。
在這些因素里邊括授,我個(gè)人認(rèn)為內(nèi)核技術(shù)是最關(guān)鍵的坞笙。為什么呢轧邪??jī)?nèi)核是個(gè)承上啟下的東西。
所謂承上羞海,就是上面有云管理平臺(tái)忌愚、虛擬化,而虛擬化技術(shù)跟內(nèi)核技術(shù)也是緊密相關(guān)的却邓。內(nèi)核就像地基一樣硕糊,地基不穩(wěn),上面就是搭空架子腊徙。
所謂啟下是說(shuō)简十,因?yàn)橛布胁豢杀苊獾墓收下剩偸菚?huì)有問(wèn)題撬腾,但是我們可以通過(guò)內(nèi)核技術(shù)去降低硬件的故障率螟蝙。我們還可以通過(guò)內(nèi)核的工作去減少運(yùn)維的工作量。比如我們?cè)赨Cloud開(kāi)發(fā)了熱補(bǔ)丁技術(shù)民傻,做到免重啟修復(fù)內(nèi)核胰默。如果沒(méi)有熱補(bǔ)丁技術(shù),每次內(nèi)核升級(jí)不但運(yùn)維非常痛苦漓踢,因?yàn)樗貑⑺袡C(jī)器牵署;而且用戶(hù)也會(huì)被打擾,一重啟喧半,用戶(hù)云主機(jī)就中斷了奴迅。但是熱補(bǔ)丁技術(shù)解決了這個(gè)問(wèn)題:運(yùn)維很Happy,不用重啟機(jī)器了挺据,用戶(hù)也很Happy取具,他感受不到中斷。
InfoQ:你這個(gè)觀(guān)點(diǎn)挺有意思扁耐,因?yàn)橐话阄覀兟?tīng)到的觀(guān)點(diǎn)是說(shuō)暇检,云計(jì)算用分布式系統(tǒng)加上自動(dòng)化的運(yùn)維模式,去除單點(diǎn)做葵,把底層故障對(duì)系統(tǒng)造成的影響隱蔽掉占哟,這個(gè)關(guān)注點(diǎn)在于故障預(yù)測(cè)心墅、快速的自動(dòng)恢復(fù)酿矢。是什么原因造成你們的關(guān)注點(diǎn)不同?
邱模炯:你說(shuō)的對(duì)怎燥,大家提到云平臺(tái)瘫筐,非常容易想到有個(gè)大的分布式系統(tǒng),有分布式存儲(chǔ)铐姚、分布式網(wǎng)絡(luò)策肝。
但分布式存儲(chǔ)追求的是什么肛捍?我們平時(shí)為了提升性能,為了數(shù)據(jù)可靠性之众,往往通過(guò)分布式系統(tǒng)里邊的一些技術(shù)拙毫,比如說(shuō)通過(guò)寫(xiě)多份去避免單份失效,通過(guò)集群去解決總體性能棺禾。
但是云主機(jī)這個(gè)基礎(chǔ)產(chǎn)品缀蹄,在性能上面是單點(diǎn):因?yàn)橐慌_(tái)特定的云主機(jī)只能來(lái)自于一臺(tái)物理服務(wù)器。
云主機(jī)在可用性上也是單點(diǎn)膘婶。分布式系統(tǒng)追求的是怎么樣去避免單點(diǎn)故障缺前,但是我們現(xiàn)在看到各種分布式技術(shù)里面,它沒(méi)有辦法有效地解決云主機(jī)這個(gè)性能和可用性單點(diǎn)悬襟。所以我們現(xiàn)在盡可能地去挖掘單臺(tái)物理器的性能的極限衅码,還有可用性的極限。
UCloud的團(tuán)隊(duì)成員主要是來(lái)自于國(guó)內(nèi)頂級(jí)的互聯(lián)網(wǎng)公司脊岳,所以對(duì)于分布式系統(tǒng)方面非常有經(jīng)驗(yàn)逝段,大家想到的第一印象的東西——分布式系統(tǒng)、分布式存儲(chǔ)割捅、SDN網(wǎng)絡(luò)——我們已經(jīng)具備深厚的技術(shù)背景惹恃,已經(jīng)把這方面做得很好了。所以我們進(jìn)一步要把這個(gè)事情從良好做到優(yōu)秀棺牧,就要挖掘內(nèi)核巫糙。我們?cè)阶觯接X(jué)得內(nèi)核在這里邊起到的作用非常關(guān)鍵颊乘。
你剛剛提到我們做內(nèi)核工作是要去提升它的穩(wěn)定性和可用性参淹。我們做這些工作,追求的是:云主機(jī)永遠(yuǎn)不要宕機(jī)乏悄。聽(tīng)起來(lái)好像有點(diǎn)夸張浙值,其實(shí)我們已經(jīng)非常接近這個(gè)目標(biāo)了。
云主機(jī)的宕機(jī)有幾個(gè)因素影響:一個(gè)是內(nèi)核不穩(wěn)定檩小,另一個(gè)是下面的硬件故障开呐,主要是這兩個(gè)。內(nèi)核不穩(wěn)定规求,我們有熱補(bǔ)丁技術(shù)給它修復(fù)筐付,宿主機(jī)內(nèi)核還是云主機(jī)內(nèi)核都可以。至于下面的硬件——特別是內(nèi)存阻肿,內(nèi)存是硬件宕機(jī)故障的大頭瓦戚,那我們通過(guò)內(nèi)核技術(shù)把內(nèi)存硬件故障給隔離開(kāi),避免它引發(fā)宕機(jī)丛塌。
我昨天還想了想较解,過(guò)去至少連續(xù)三個(gè)月畜疾,我都沒(méi)有收到任何一起宿主機(jī)內(nèi)核引發(fā)宕機(jī)的報(bào)警短信。
InfoQ:所以其實(shí)你們認(rèn)為云主機(jī)完全不出故障是一個(gè)可以實(shí)現(xiàn)的目標(biāo)印衔?
邱模炯:對(duì)啡捶。除非出現(xiàn)一些不可抗力,比如說(shuō)一個(gè)機(jī)房奸焙、一臺(tái)服務(wù)器突然斷電届慈,那我是沒(méi)有辦法。
InfoQ:你在演講中提到內(nèi)核工作的第二個(gè)目標(biāo)是提升性能忿偷,包括IO加速模塊金顿,將IO讀寫(xiě)順序化記入Cache盤(pán)組,然后獲得IOPS的性能還是非常高的鲤桥。但是它是不是可能會(huì)對(duì)數(shù)據(jù)可靠性有影響揍拆?你們做過(guò)持續(xù)很長(zhǎng)時(shí)間的測(cè)試,它的表現(xiàn)怎么樣茶凳?
邱模炯:我們不光是測(cè)試嫂拴,我們已經(jīng)在生產(chǎn)環(huán)境下面穩(wěn)定運(yùn)營(yíng)了快一年,從來(lái)沒(méi)有發(fā)現(xiàn)過(guò)可靠性的問(wèn)題贮喧。相反筒狠,其實(shí)我們恰恰是從可靠性的角度來(lái)做這項(xiàng)工作的。
用戶(hù)是我們的核心資產(chǎn)箱沦,UCloud以用戶(hù)為中心辩恼,從用戶(hù)角度看待我們的產(chǎn)品。我們的研發(fā)谓形、產(chǎn)品的工作都是圍繞我們的用戶(hù)而作的灶伊。
我們的用戶(hù)需要那么高的IOPS,怎么辦寒跳?用SSD聘萨。但是,雖然現(xiàn)在廠(chǎng)商認(rèn)為SSD已經(jīng)非常穩(wěn)定了童太,過(guò)去還是發(fā)生過(guò)一些事件米辐,導(dǎo)致SSD盤(pán)的數(shù)據(jù)丟失。SSD盤(pán)數(shù)據(jù)丟失和我們平時(shí)那些機(jī)械盤(pán)數(shù)據(jù)丟失是不同的概念书释,SSD盤(pán)要是壞了一個(gè)點(diǎn)翘贮,就有可能整個(gè)盤(pán)的數(shù)據(jù)沒(méi)法恢復(fù)。所以說(shuō)征冷,我們是從數(shù)據(jù)可靠性的角度來(lái)做這項(xiàng)工作择膝,不光是性能誓琼。
InfoQ:能有一個(gè)量級(jí)的提升嗎检激?
邱模炯:數(shù)據(jù)可靠性有一個(gè)量級(jí)的提升肴捉,性能是兩個(gè)量級(jí)的提升:對(duì)于IOPS機(jī)械盤(pán)一般是一百到兩百,我們把它提升到兩萬(wàn)到三萬(wàn)叔收。
InfoQ:最后一個(gè)問(wèn)題是有關(guān)內(nèi)核人才這方面齿穗。國(guó)內(nèi)的內(nèi)核人才其實(shí)比較稀缺,而UCloud現(xiàn)在還算是一個(gè)初創(chuàng)企業(yè)饺律。你們?cè)趺慈ピu(píng)估自己維護(hù)內(nèi)核團(tuán)隊(duì)是不是劃算這件事情窃页?
邱模炯:UCloud內(nèi)核團(tuán)隊(duì)現(xiàn)在不到十個(gè)人。大家覺(jué)得不到兩百人的公司為什么需要十個(gè)人的內(nèi)核團(tuán)隊(duì)复濒,是不是太多了脖卖?相反我覺(jué)得人數(shù)少了,應(yīng)該再多一些巧颈。你想我們十人服務(wù)上萬(wàn)家客戶(hù),分給每個(gè)客戶(hù)只有0.1個(gè)人,對(duì)不對(duì)婶希。而我們的客戶(hù)孔轴,他們也要追求穩(wěn)定性,追求數(shù)據(jù)的可靠性唇礁,內(nèi)核技術(shù)對(duì)他們也很重要勾栗。
大公司為什么需要內(nèi)核團(tuán)隊(duì)?因?yàn)樗麄冇泻芏嗟姆?wù)器盏筐。UCloud也有大量的服務(wù)器围俘,我們目前有萬(wàn)臺(tái)級(jí)別的服務(wù)器。公司是否需要內(nèi)核團(tuán)隊(duì)琢融,其實(shí)是由服務(wù)器的數(shù)量楷拳、數(shù)據(jù)中心的規(guī)模,以及我們的客戶(hù)是否需要來(lái)決定的吏奸。
國(guó)內(nèi)的內(nèi)核人才確實(shí)比較稀缺』兑荆現(xiàn)在我們收簡(jiǎn)歷,能收到一大堆做分布式系統(tǒng)奋蔚、或者做前端開(kāi)發(fā)的簡(jiǎn)歷她混,但是很少收到內(nèi)核人才的,即使收到泊碑,也很少說(shuō)對(duì)云平臺(tái)有非常深的認(rèn)識(shí)和鉆研坤按,因?yàn)樵破脚_(tái)也很新。但內(nèi)核技術(shù)對(duì)于云平臺(tái)技術(shù)又非常關(guān)鍵馒过,考慮到這個(gè)情況臭脓,UCloud大概一年半之前就開(kāi)始建內(nèi)核團(tuán)隊(duì),現(xiàn)在正在發(fā)揮非常重要的作用腹忽。
Linux內(nèi)核是開(kāi)源的来累,UCloud的內(nèi)核成果從開(kāi)源中吸取砚作,從開(kāi)源中發(fā)展。UCloud不但掌握內(nèi)核嘹锁,而且發(fā)展內(nèi)核葫录,最終是希望把內(nèi)核成果回饋給我們的用戶(hù),我們的業(yè)界同行领猾。以后希望通過(guò)類(lèi)似InfoQ的活動(dòng)米同,把我們的實(shí)踐與思考不斷地反饋給大家。