1. 程式人生 > >5年!我對OpenStack的一些看法

5年!我對OpenStack的一些看法

5年!我對OpenStack的一些看法

付廣平 雲技術之家 雲技術之家

微訊號 cloudtech1024

功能介紹 傳播新技術,關注雲端計算、大資料、虛擬化、AI、安全、區塊鏈、物聯網、雲運維、儲存、分散式、OpenStack、SDN、Ceph等前沿領域發展,分享資訊、經驗、技術、堅持乾貨。

9月18日

近年,新型技術不斷湧現,容器、AI、區塊鏈、SDN等技術應接不暇,很多搞OpenStack的開始轉向研究其他技術,OpenStack的活躍度也確實沒有前幾年高了。最近更是頻頻一些諸如某某技術取代OpenStack、某某公司放棄OpenStack、OpenStack陷入中年危機等PR或者文章出現,很多人開始擔憂OpenStack的前途。作為折騰OpenStack也有5年多,既是OpenStack Developer,也是OpenStack User,也談談我自己的看法。

 

這幾年大家都在提去IOE,講自主可控,我認為未來資料中心基礎設施中的計算資源發展趨勢將是X86+KVM+開源雲如OpenStack/Kubernetes,這也是很多傳統IT公司自主可控最有效最快的途徑。OpenStack的強勢在於IaaS,我認為這一塊已經做得挺好了,至少可以用起來了,足夠滿足使用者的資源集中式納管、資源分散式排程與分配等大多數功能需求。Nova、Neutron、Cinder越來越穩定,功能也完善了很多。

 

若站在使用者的角度以及產品的角度,現在OpenStack的外圍系統如管理介面、監控系統、日誌系統、部署工具等確實做得不是那麼完善,但我認為這都是無可厚非的。外圍系統企業都有自己的一套標準和規範,社群不可能做出一個能契合所有企業需要的工具,更做不了拿來即用、開箱即用的企業一體化方案,OpenStack也從來沒有這麼說過。社群提供了開放的API讓企業很易於整合現有外圍系統或者開源工具,如puppet、logstash、pacemaker、haproxy等。

 

那些很難定標準的東西開源做不了,否則就必然綁死在一家或者少數家之上。比如OpenStack高可用,假定社群決定使用pacemaker做,很多公司肯定又不願意,為什麼要用pacemaker,萬一pacemaker出現問題,又有一堆人吐槽OpenStack這不好,那不好,這不可靠、那不穩定、就是不靠譜。我們現在生產環境還有一套OpenStack使用pacemaker實現虛擬機器高可用,記憶體洩露的問題一直沒有解決,吃完記憶體吃swap,不得不定時重啟。因此社群這個做不了,但在文件中有關於使用pacemaker實現OpenStack高可用的介紹作為參考,這已經足夠了。

 

我認同UNIX的設計理念,所謂Do one thing,and do it well。Linux中沒有哪個命令或者工具能夠解決你的所有問題,但組合起來可以,管道是一個很強大的功能,OpenStack的API就像管道。之前有人吐槽Linux為什麼沒有一個標準的IDE,集開發、編譯、除錯、打包,我當時辯論說沒有這個必要,暫且不說整合這麼多工具會有多臃腫,做出的樣子就一定能夠保證所有挑剔使用者喜歡嗎?所以Linux目前也沒有一款標準的所謂官方的IDE,但目前存在很多開源的以及廠商開發的IDE,這其中很多工具底層都離不開vim、gcc、gdb,比如DevC++。OpenStack就好比現在的Linux kernel,永遠不要指望OpenStack做成ALL in一體化方案,幫你做個映象裝在U盤一鍵部署幾千節點,幫你監控所有系統,幫你處理各類日誌,還要廠商幹嘛,畢竟OpenStack社群不是公司,不要拿OpenStack當乙方,更不是苦力。不要說社群,就人的本性來說,誰都更想做核心功能,而不願意做那些吃力不討好的東西。

 

關於OpenStack穩定性問題,很多人沒有區分根源是底層故障還是平臺故障。之前在解決客戶問題中遇到很多故障,發現其實很多都是由於底層網路、儲存、中介軟體(訊息佇列、資料庫)引起的。在一些老版本OpenStack中,可能會由於Nova丟訊息導致虛擬機器一直卡在一個狀態或者Nova與Cinder卷狀態不一致導致卸不了盤,新版本OpenStack平臺本身改善了很多。加上OpenStack各個元件基本都可以實現AA高可用,比如API服務通過LB實現例項冗餘、RPC服務本身就支援多例項部署,新版本中cinder-volume也支援通過分散式鎖實現AA高可用,在使用共享儲存前提下nova-compute掛了虛擬機器也可以觸發疏散遷移實現虛擬機器HA。再加上監控系統保障,真正OpenStack平臺本身無緣無故出現掛掉的概率其實並不大,即使OpenStack某些服務掛掉了,在底層儲存和網路正常的情況下,基本不會影響業務執行。換句話說,保證OpenStack平臺的穩定性,首先需要保證底層儲存、網路的穩定性。儲存不穩定可以換商業儲存,ovs不穩定可以用Linux Bridge,甚至可以用硬體SDN替換Neutron整個核心只保留API,總之哪個覺得不行,就換一個自己覺得招架得住的,OpenStack沒有繫結,允許你自由組合,前期規劃中技術選型很重要。大家經常拿Vmware和OpenStack的穩定性做對比,很多人都說Vmware很穩定,OpenStack就是問題多。暫且不說OpenStack和Vmware對比是否合理,想想比較的時候底層硬體是否相當呢?為Vmware花了多少錢,配的都是Netapp、EMC商業儲存,OpenStack用的是開源免費的Ceph儲存。在前幾年Ceph還不是很穩定的時候,經常會出現叢集不可用的問題,很多人就歸咎於OpenStack的問題。

 

當然,沒有100%穩定的系統,OpenStack已經是一個非常複雜的分散式系統了,並且涵蓋的技術包括硬體、作業系統、網路、架構、分散式、虛擬化等龐大的技術生態,出現問題不可避免,需要有強大的運維水平保障。很多人說OpenStack太複雜,難運維,試問有哪個分散式系統可以做到不復雜、不難運維了,Hadoop、Spark哪個系統真正運維起來不脫層皮。運維OpenStack難的根本原因不是由於它本身做複雜了,而是它的性質決定的,作為IaaS解決方案,它要求運維人員的技能水平包括傳統伺服器、資料中心、分散式、虛擬化、網路架構、作業系統、自動化、資料庫、高可用、訊息佇列等,傳統的技術以及現代技術都有。高層服務如Trove還需要對資料庫的運維非常瞭解。而其實很多hold不住OpenStack的運維人員或者實施人員,真的很難同時具備這些能力,往往懂作業系統的不懂網路,搞網路的不懂作業系統,懂網路的還有隻懂underlay傳統網路不懂overlay、不懂SDN的,就算好不容易找到一個既懂作業系統又懂網路的不懂底層虛擬化、不懂資料庫,靠幾個人根本不可能招架得住。不要覺得搞個DevStack或者參照網上教程部署個OpenStack就覺得OpenStack很簡單,信心滿滿覺得一個人就能搞定OpenStack的所有事,真正出事的時候找不到頭緒,是不是OpenStack平臺的問題都確定不了,明明是底層網路故障或者儲存掛了,看到一堆OpenStack服務ERROR了就說OpenStack真爛。真正要能hold得住OpenStack,必須靠多個團隊協作運維與支援,大公司還好,很多小公司很難具備這麼完備的運維團隊,往往是一個人或者幾個人就負責整個專案的溝通、實施交付、測試、運維等整個週期。至少國內就有一家大公司就做得還不錯,自動化部署和自動化運維平臺做得也很好,至少我們的環境到現在沒有出現什麼大的問題。

 

使用者應該公平的對待和包容OpenStack,不應該持偏見態度,我遇到很多客戶只要OpenStack出點問題就開始吐槽OpenStack不穩定、不靠譜,零容忍。但vcenter出點問題就感覺理所當然,畢竟有Vmware大公司背書,而又有誰替OpenStack背書?

 

另外談談OpenStack的一些其他IaaS+專案以及PaaS相關高階服務專案,如Trove、Magnum、Sahara,願景和設計理念都是非常不錯的,很有價值,擴充套件生態,更是體現了社群的開放心態、胸懷格局以及生態意識,而不是非得揚言替換誰拼得你死我活,只是有些專案進展的確實不是那麼好 ,很多原因。使用者認為是OpenStack做雜了,精力分散了,我認為人手不足(很多人轉向容器、AI)以及使用者剛需沒那麼聚焦(部署OpenStack一定會用虛擬機器,但不一定要用容器和大資料)是很重要的兩個原因,畢竟越到高層,可組合的方案就越多,使用者就越分散,用的人越少,反饋得也越少,投入的開發人員也必然減少,OpenStack很多專案基本就是一兩個人堅持在維護。

 

OpenStack從來沒有承諾一定要做公有云超AWS,所以不要對著AWS的一點一點指責OpenStack,AWS多少團隊做了多少年。OpenStack也沒有承諾一定要做成私有云超Vmware。OpenStack能做成什麼樣,除了OpenStack自身提供一個核心,做成什麼樣,看公司的本事。我看國內就有好幾家基於OpenStack做公有云做得也還不錯的,也有公司基於OpenStack做私有云交付也不錯的。不要指望OpenStack開箱就是一個公有云,開啟就是一個私有云。

 

有人說社群沒管好,功利性太強,Openstack 社群搞那個commits統計,搞得現在參與開源不是考慮技術本身,很多都是看那個數字。我認為“功利”是部分合理的,開源也需要公司支援和投入,排除個別幾個做開源純粹的geek,只為情懷,大多數公司都算kpi的,不是做慈善,得有利益驅動。確實有少數人投機取巧刷commit,但這畢竟少數,並不代表整個社群氛圍。還有人說社群無休止的扯皮,OpenStack成員來自世界各地各大公司,扯皮的事不可避免,不說社群,就是公司這個個體,不也經常無休止扯皮,無休止開無意義的會議嗎?

 

關於OpenStack的未來,我還是堅持樂觀態度。雖然目前確實大不如從前活躍度高,但已經有大量客戶在大規模使用,包括各行各業,如網際網路、銀行以及運營商,無論是私有云還是公有云,並且還在不斷擴充套件新叢集,不斷在新部署,短期內不會有被完全取代的可能。它的發展趨勢可能會像Linux一樣,即便不再是飯桌上天天聊得火熱的話題,也必將在IDC中處處存在它的身影。退一萬步說,假如真的OpenStack如當年的CloudStack一樣,逐漸被另一種IaaS解決方案xxxStack1、xxxStack2取代,OpenStack也將會存在於任何xxxStack中,就如UNIX系統一樣,形體永遠存在於Linux、BSD中。

 

另外,對於我個人,我由衷地感謝OpenStack。從研一開始折騰OpenStack,通過OpenStack讓我逐漸從一點都不通雲端計算的小白到現在對雲端計算有了些理解和認識,瞭解了雲端計算是如何運轉和落地的。在OpenStack開發中,也學到了很多工程上的知識和技能,分散式系統元件之間如何通訊,如何實現高可用,軟體架構的設計理念等等。同時,也認識了很多雲計算領域的先輩大牛們,向他們學到了很多技能。

 

本來原標題是《我為OpenStack正名》的,後來想想,正名這個詞表達主觀針對性太強了。畢竟一千個人眼中有一千個哈姆雷特,必然會有千萬種不同的看法和爭議,我認為沒有絕對的誰對誰錯,更沒有正邪之分,大家站在不同的視角自然有不同的觀點,不同的訴求。大家一塊爭論也是好事,多爭幾次,多發表各自的看法,說不定大家反而更理解對方了,也能讓大家能從更多的維度去真正瞭解OpenStack,也暴露一些確實存在的一些問題[呲牙]。因此本文僅代表我個人的看法,不存在討伐誰、正名誰這麼一說。如果你也認同我的觀點,請點上一讚,讓我知道有人和我存在一樣的看法。作大家一塊爭論也是好事,多爭幾次,多發表各自的看法,說不定大家反而更理解對方了,也能讓大家能從更多的維度去真正瞭解OpenStack,也暴露一些確實存在的一些問題[呲牙]如果不認同,希望能夠在評論中指出不認同之處,碰碰撞撞,或許能碰出火花 :)