觀點(diǎn) | 邱模炯:為什么說(shuō)云主機(jī)比物理機(jī)故障率更低?
作者介紹
邱模炯
UCloud平臺(tái)開(kāi)發(fā)中心總監(jiān),北京大學(xué)計(jì)算機(jī)系研究生畢業(yè),擅長(zhǎng)操作系統(tǒng)、虛擬化和數(shù)據(jù)中心自動(dòng)化等云平臺(tái)的基礎(chǔ)技術(shù)。
引言
很多朋友對(duì)云平臺(tái)可用性有所擔(dān)心,認(rèn)為用物理機(jī)更加放心。今天我想就這個(gè)話題拋出個(gè)人看法。希望對(duì)大家有參考意義。先拋出結(jié)論:
從業(yè)務(wù)程序的角度,云主機(jī)的可用性可以做到比物理機(jī)高,即故障率更低(可用性和故障率接近但不是一個(gè)概念,為了便于闡述,下面只討論故障率)。
我見(jiàn)過(guò)很多客戶抱怨云主機(jī)的故障率。同時(shí),我也見(jiàn)過(guò)并且?guī)秃脦讉€(gè)使用物理機(jī)的客戶解決問(wèn)題:
他們沒(méi)有專業(yè)團(tuán)隊(duì)及大規(guī)模環(huán)境,對(duì)于復(fù)雜點(diǎn)的軟硬件故障幾乎束手無(wú)策,有時(shí)甚至解決的過(guò)程把小問(wèn)題變成大問(wèn)題。
這也是我今天分享這個(gè)話題的動(dòng)力。下面進(jìn)入正題,下圖是云主機(jī)和物理機(jī)軟硬件層次對(duì)比:
影響云主機(jī)故障率的主要因素有:
· 服務(wù)器硬件質(zhì)量
· 宿主機(jī)內(nèi)核
· 虛擬化層(KVM+QEMU或Xen)
· Linux內(nèi)核(承載業(yè)務(wù)程序)
影響物理機(jī)故障率的主要因素有:
· 服務(wù)器硬件質(zhì)量
· Linux 內(nèi)核(承載業(yè)務(wù)程序)
從上面的對(duì)比看,云主機(jī)比物理機(jī)故障率貌似要高,因?yàn)樘摂M化層和宿主機(jī)內(nèi)核非常復(fù)雜,引入額外的故障率。這是直覺(jué),而且很有道理:
AWS 去年就因?yàn)樘摂M化層內(nèi)核的安全漏洞大規(guī)模重啟了物理機(jī),多數(shù)AWS 用戶受影響。虛擬化層和宿主機(jī)內(nèi)核的BUG 也會(huì)同樣造成宕機(jī)及重啟。
那為什么還說(shuō)云主機(jī)故障率可以低于物理機(jī)呢?
備注:這里我是從終端用戶的角度看的,“從廠商購(gòu)買的”物理機(jī),來(lái)對(duì)比“從云平臺(tái)購(gòu)買的”云主機(jī)。
原因在于:簡(jiǎn)單來(lái)說(shuō),云平臺(tái)廠商往往管理幾萬(wàn)幾十萬(wàn)臺(tái)物理服務(wù)器,并有比較專業(yè)的基礎(chǔ)運(yùn)維團(tuán)隊(duì)和內(nèi)核團(tuán)隊(duì),可以在故障率上做大量的工作,以達(dá)成這樣的效果:
1. 虛擬化層和宿主機(jī)內(nèi)核的故障率接近0。這兩層是內(nèi)核,通過(guò)內(nèi)核優(yōu)化來(lái)達(dá)到;
2. 服務(wù)器硬件質(zhì)量可以不斷提升;
3. 承載業(yè)務(wù)程序的Linux內(nèi)核,云平臺(tái)可以幫助用戶進(jìn)行維護(hù)。并解決BUG,修復(fù)安全漏洞等。
有人會(huì)說(shuō),我自己購(gòu)買的物理機(jī)也能做上述優(yōu)化,效果比云主機(jī)更好。真的是這樣的么?現(xiàn)實(shí)情況是:
絕大部分公司管理的服務(wù)器數(shù)量不多,不足以建立相應(yīng)的團(tuán)隊(duì);同時(shí)因?yàn)榉?wù)器數(shù)量少(比如不到萬(wàn)臺(tái)),做軟硬件優(yōu)化的環(huán)境不理想。
下面就上述要點(diǎn)展開(kāi)。
虛擬化層和宿主機(jī)內(nèi)核的故障率如何降低?
這主要通過(guò)自主掌控虛擬化層和宿主機(jī)內(nèi)核,這整套內(nèi)核來(lái)實(shí)現(xiàn)。
1. 自主維護(hù)Linux內(nèi)核
商業(yè)Linux發(fā)行版(如RHEL6.X)的內(nèi)核其實(shí)有不少BUG,因?yàn)閮?nèi)核太龐大、太復(fù)雜,BUG 修之不盡而且不斷涌現(xiàn),只要內(nèi)核有人在改動(dòng),更多的BUG就還在路上。
但我們自己維護(hù)的Linux內(nèi)核,我們可以迅速修復(fù)并應(yīng)用進(jìn)實(shí)際環(huán)境,不像商業(yè)Linux要等待較長(zhǎng)的發(fā)布周期。
我們還可以預(yù)先研究別人犯過(guò)的錯(cuò)誤,把更新補(bǔ)丁打入現(xiàn)在的內(nèi)核;還可以屏蔽不必要的特性和改動(dòng)避免BUG的引入。
簡(jiǎn)單講,自主維護(hù)內(nèi)核很靈活,最終質(zhì)量不低于商業(yè)Linux發(fā)行版。國(guó)內(nèi)有海量服務(wù)器的公司如騰訊和阿里都運(yùn)行自主維護(hù)的Linux內(nèi)核。
2. 免重啟熱補(bǔ)丁技術(shù)
這是指通過(guò)二進(jìn)制指令修改的方式修改Linux內(nèi)核達(dá)到修復(fù)的目的。
結(jié)合自主維護(hù)Linux內(nèi)核,如果發(fā)現(xiàn)了BUG并制作修復(fù)補(bǔ)丁后,可以免重啟應(yīng)用到生產(chǎn)環(huán)境的Linux內(nèi)核里。
這點(diǎn)目前主流Linux廠商不提供。但云平臺(tái)廠商可以自己做。
3. 熱遷移技術(shù)
特殊情況下的熱遷移,可規(guī)避尚未完全定位的內(nèi)核問(wèn)題。
這三點(diǎn)的綜合效果,使得某些云廠商,因?yàn)閮?nèi)核原因造成的宕機(jī)低到可以忽略。幾萬(wàn)臺(tái)服務(wù)器半年可以減少到一兩次。
可能有些早期用戶應(yīng)該比較有感覺(jué),幾年軟件宕機(jī)不少,給客戶推送的故障報(bào)告不時(shí)就和內(nèi)核有關(guān),但經(jīng)過(guò)一年半載的工作后,現(xiàn)在幾乎沒(méi)有了。
服務(wù)器硬件質(zhì)量如何提升?
服務(wù)器硬件故障率的影響因素有廠商品牌、機(jī)型、服務(wù)器運(yùn)行時(shí)間、以及部件型號(hào)的故障率。
這里的工作需要海量服務(wù)器來(lái)做,比如上萬(wàn)臺(tái)才有意義,而幾百上千臺(tái)意義不大。
這里有一張圖,體現(xiàn)我們可以主動(dòng)采取部分措施。
1. 服務(wù)器故障率和廠商機(jī)型關(guān)系密切
我們可以監(jiān)控各廠商機(jī)型的故障率,主動(dòng)下架比較差的,從而提升總體質(zhì)量。
一般來(lái)說(shuō),小廠的服務(wù)器故障率會(huì)高一些,但大廠即使DELL、聯(lián)想的個(gè)別機(jī)型也會(huì)有較高故障率。
這主要和機(jī)型設(shè)計(jì)和生產(chǎn)質(zhì)量管控有關(guān),就不闡述了。我們能做的是選擇故障率低的廠商和機(jī)型。
2. 服務(wù)器運(yùn)行時(shí)間久了,故障率會(huì)隨之提升
對(duì)于云平臺(tái)廠商,可以監(jiān)控這一切故障發(fā)生前的征兆,并主動(dòng)采取措施,通過(guò)熱遷移手段避免云主機(jī)受影響。
3. 硬件宕機(jī)和部件缺陷關(guān)系很大
我們的統(tǒng)計(jì)發(fā)現(xiàn),部件種類里,硬盤故障故障率最高,其次內(nèi)存硬件、RAID卡等。
對(duì)于硬盤故障,可以通過(guò)RAID方式規(guī)避。對(duì)于內(nèi)存硬件,可以通過(guò)內(nèi)存故障隔離等內(nèi)核手段,大幅度減少其硬件故障造成的宕機(jī)及影響。
總的來(lái)講,通過(guò)上述這些工作,云平臺(tái)廠商可以讓服務(wù)器硬件故障率逐步降低。其實(shí),可以做的更多,篇幅原因就不講了。而這樣的工作,對(duì)于沒(méi)有海量環(huán)境的公司是很難做的,效果也不佳。
另外,云平臺(tái)廠商可以替用戶修復(fù)云主機(jī)內(nèi)核的BUG和安全漏洞,降低內(nèi)核故障率。
我們?cè)谶@方面做了一些工作,內(nèi)核版本會(huì)及時(shí)更新,關(guān)鍵漏洞會(huì)提供免重啟熱補(bǔ)丁修復(fù)包。
觀點(diǎn)總結(jié)
簡(jiǎn)要總結(jié)一下本文的主要觀點(diǎn):
1. 云主機(jī)相比物理機(jī),虛擬化層和宿主機(jī)內(nèi)核的額外復(fù)雜性及故障率可以被優(yōu)化至接近0即可以忽略。
2. 服務(wù)器硬件故障,云平臺(tái)可以不斷降低其故障率,主要手段通過(guò)內(nèi)核隔離硬件故障、熱遷移規(guī)避故障隱患,以及監(jiān)控故障率并主動(dòng)下架不良廠商機(jī)型等。
上述這些工作都需要非常專業(yè)的運(yùn)維團(tuán)隊(duì)和內(nèi)核團(tuán)隊(duì)才能實(shí)施,如果沒(méi)有足夠大的服務(wù)器數(shù)量是很難開(kāi)展的。
而大型云廠商往往管理幾萬(wàn)、幾十萬(wàn)服務(wù)器,因此具備這樣的條件。也因此,云主機(jī)故障率能低于物理機(jī)(當(dāng)然,如果什么都不做,云主機(jī)故障率一定是高于物理機(jī)的)。
如何一起愉快地發(fā)展
鳴謝高效運(yùn)維給予本文轉(zhuǎn)載授權(quán)。
“高效運(yùn)維”公眾號(hào)(如下二維碼)值得您的關(guān)注,作為高效運(yùn)維系列微信群的唯一官方公眾號(hào),每周發(fā)表多篇干貨滿滿的原創(chuàng)好文:來(lái)自于系列群的討論精華、運(yùn)維講壇線上精彩分享及群友原創(chuàng)。“高效運(yùn)維”也是互聯(lián)網(wǎng)專欄《高效運(yùn)維最佳實(shí)踐》及運(yùn)維2.0官方公眾號(hào)。