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