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