大牛點評OpenStack和Mesos:誰才是私有云的未來?
本文是Quora上的一個問題,提問者對于私有云未來的發(fā)展趨勢感到疑惑,Mesos和OpenStack的關(guān)系是怎樣的,它們之間是否可以相互替代?來自Mesosphere以及Rackspace的專家們從OpenStack與Mesos的功能和產(chǎn)品定位上對這個問題進(jìn)行了解讀,它們之間的關(guān)系并非互相替代,而是各有側(cè)重,相輔相成,這取決于用戶的實際需求。希望本文內(nèi)容可以幫助讀者對私有云領(lǐng)域的開源產(chǎn)品和相關(guān)概念有更好的了解。
Quora上的問題
私有云的未來的發(fā)展趨勢是什么,是Mesos?還是OpenStack?
在私有云方面,Mesos和Docker二者似乎是一個完美的結(jié),Google一直致力于這方面的研究,我很好奇私有云的未來會是怎樣的,大家怎樣認(rèn)為的?
回答者:Lukas Löschea(在Mesosphere工作,之前在工作中曾使用OpenStack)
Mesosphere和Openstack解決的是完全不同的問題。實際上,它們是可以在一起協(xié)同工作的。用戶完全可以在OpenStack的集群上面運行Mesos,這樣做可以帶來很多額外的好處,比如提高系統(tǒng)的利用率和容錯性。
我發(fā)現(xiàn)OpenStack的初始配置工作比Mesos要困難許多,但是對于OpenStack系統(tǒng)的整體理解要容易許多,因為OpenStack集群的運行方式基本上與我們過去幾年運行系統(tǒng)的方式類似。OpenStack的基本理念是提供虛擬的服務(wù)器,為了實現(xiàn)這一目的,OpenStack也提供很好的硬件層抽象。但是虛擬機(jī)構(gòu)成的集群可能會讓你感到難以運維,對于每個虛擬機(jī)的維護(hù)也并非容易,用戶遇到的問題基本上和以前在直接維護(hù)物理機(jī)集群基本相似。你仍然需要一個操作系統(tǒng),一些配置和管理的工具,就像是Puppet、Chef、Salt、Ansible等等,并且需要采用獨立的主機(jī)來運行這些工具。容器化的思想是在這之后才有的技術(shù)。雖然在OpenStack上已經(jīng)有了Docker Nova的驅(qū)動,但是在我看來,大多數(shù)人使用OpenStack是為了創(chuàng)建虛擬機(jī)而并非容器。他們使用OpenStack的方式更類似于對AWS的使用方式。
而現(xiàn)實情況是,用戶并不需要那么多的服務(wù)器,用戶只是希望能夠?qū)⑺鼈兊姆?wù)運行起來,使其可以發(fā)揮作用。從這個角度來看,OpenStack能做的事情并不多。提供服務(wù)器是一種終極解決方案,最終來看,所有的服務(wù)都要運行在服務(wù)器上。但是如果我有其他選擇,我寧愿采用這樣的方式來運行我地服務(wù):服務(wù)可以無限擴(kuò)展(我不用在乎它們是怎樣運行以及運行在哪),當(dāng)服務(wù)失敗的時候能夠被自動檢測并且可以自動修復(fù),我也不需要在凌晨3點的時候被叫醒,對服務(wù)進(jìn)行維護(hù)。這就是Mesos所能完成的事情。
Mesos的用戶可以按照新的方式調(diào)整他們的工作模式,這樣可以大大簡化工作流程。比如,如果用戶使用Marathon來長時間地運行服務(wù),就可以這樣來設(shè)置工作流程:開發(fā)者可以將代碼提交到staging分支中,CI(Continuous integration)服務(wù)器(運行在Mesos集群當(dāng)中)會構(gòu)建一個docker image并且升級Marathon REST API來通過docker image進(jìn)行部署。如果在staging階段,服務(wù)運行的都很正常,開發(fā)者就會把他新提交的代碼合并到master/production分支中,從而完成了產(chǎn)品系統(tǒng)的升級和部署。
最終的效果應(yīng)該是這樣的:對用戶而言,所謂的部署過程僅僅意味著開發(fā)者將他的代碼提交到對應(yīng)的分支。類似于滾動部署(rolling deployments),服務(wù)之間的依賴,健康檢查以及自動重啟這些功能都可以由Mesos/Marathon來提供。
這是一種完全不同的工作方式,因為在這種模式下,運維人員不再需要去打包應(yīng)用部署代碼,或者啟動特定的監(jiān)控服務(wù)。
從復(fù)雜性的角度來看,我認(rèn)為,如果用戶想基于OpenStack來運行私有云平臺,至少需要了解 Heat、Nova、Glance、Keystone、Neutron以及Cinder這些組件。我過去曾經(jīng)做過OpenStack部署的工作,我發(fā)現(xiàn)由于OpenStack本身的設(shè)計原因,在維護(hù)過程中會出現(xiàn)來一些很復(fù)雜的問題。因為Openstack本身是一個企業(yè)級的產(chǎn)品,是并非社區(qū)產(chǎn)品,你會發(fā)現(xiàn),OpenStack平臺的安裝和運維工作至少需要來自不同部門的幾個人一起負(fù)責(zé)。因此,如果你在一個大的公司或組織里面工作,OpenStack平臺的維護(hù)工作可能恰好可以按照公司本身的組織結(jié)構(gòu)來進(jìn)行分工(系統(tǒng)支持、服務(wù)器硬件、基礎(chǔ)設(shè)施及網(wǎng)絡(luò)、安全等等)
在網(wǎng)上可以找到相關(guān)的教程,基本上可以幫助你在半個小時左右就設(shè)置好可以用于生產(chǎn)環(huán)境的Mesos集群。
從個人的觀點來看,Mesos的工作方式可能是未來我們運行數(shù)據(jù)中心的方式。所謂數(shù)據(jù)中心就是說我的所有的硬件資源都可以協(xié)同工作就像一整臺電腦一樣,而并非是以單個主機(jī)的方式進(jìn)行工作,并且用戶不需要通過手工決定服務(wù)要在哪里運行。
#p#
回答者:Florian Leibert
對于私有云平臺的構(gòu)建,Mesos+Marathon+Docker是一個很好的解決方案。Mesos是一個被實際驗證過的可以提供伸縮性服務(wù)的工具(Mesos被Twitter、Airbnb、Netflix、ebay、PayPal等等公司采納)。Marathon是一個集群范圍的初始化和控制系統(tǒng),它可以幫助用戶在cgroup和Docker容器中運行Linux服務(wù)。許多公司都看好這個技術(shù)上,所有的關(guān)鍵組件都是開源的,這些技術(shù)也構(gòu)成了我的公司的DCOS(Mesosphere Datacenter Operating System)商業(yè)產(chǎn)品的核心組成部分。
Mesos以及Mesophere系列技術(shù)可以提供一個類似的云環(huán)境,這個環(huán)境中可以運行已有的Linux任務(wù),它也可以提供一個本地的環(huán)境用于構(gòu)建新的分布式系統(tǒng)。
Mesos 是一個分布式的系統(tǒng)內(nèi)核,針對數(shù)據(jù)中心直接提供了編程所需的API。它將底層的硬件(裸機(jī)或者虛擬機(jī))進(jìn)行抽象,將這些硬件以一致的資源的形式提供給用戶。它包含著用于構(gòu)建分布式系統(tǒng)的基本功能(例如,Mesos支持Spark App、還有Chronos等等)例如消息傳遞,任務(wù)執(zhí)行等等。這樣,用戶就可以利用Mesos來構(gòu)建完整的服務(wù)。Apache Spark就是其中的一個例子,Spark框架在Mesos的基礎(chǔ)上進(jìn)行構(gòu)建,這很大程度上提升了開發(fā)工作的效率。比如Spark的開發(fā)者不用擔(dān)心網(wǎng)絡(luò)相關(guān)的問題,不用考慮如何將任務(wù)分布在不同的結(jié)點上來執(zhí)行,這些都是Mesos所具備的基礎(chǔ)核心功能。
可以參考Mesos在Apache.org上的頁面。Mesosphere及其合作伙伴正在對這些服務(wù)進(jìn)行認(rèn)證,并且正在將這些服務(wù)打包進(jìn)Mesosphere DCOS Datacenter Service中,這樣這些服務(wù)就可以通過一條指令直接被安裝完成。
Mesos的另一個很好的特性就是它可以運行在已有的OpenStack集群上,也可以直接在裸機(jī)上運行,只需要在每個節(jié)點上運行一個小的Linux進(jìn)程即可。
我認(rèn)為Mesos是云計算的未來,因為它提供了良好的服務(wù)伸縮性,有利于數(shù)據(jù)中心自動化運維,可以進(jìn)行自我診斷并且提供豐富的本地的服務(wù)生態(tài)系統(tǒng)(rich native application ecosystem),與此同時,還可以不用對代碼進(jìn)行修改就可以讓已有服務(wù)正常運行。
#p#
回答者:Nati Shalom(構(gòu)建了第一個Java PaaS解決方案, 與Amazon、RackSpace、Azure、VMware、Xen、JClouds專家一起工作,設(shè)計了一款在云端提供自動化服務(wù)和編排服務(wù)的產(chǎn)品。)
在IT行業(yè),每隔一段時間,就會有新的技術(shù)出現(xiàn),代替原有的“新的技術(shù)”,Mesos的案例似乎很符合這個情況。
事實上,雖然Mesos很成功,但并不能使其成為一個取代已有基礎(chǔ)云設(shè)施的通用的解決方案。在之前的一篇文章中:如果我使用Docker我還需要 OpenStack嗎?,我就指出,在特定的領(lǐng)域內(nèi),OpenStack與Docker一樣流行,因此Docker暫時還無法取代OpenStack。
我的觀點是,如果想回答這個問題,我們需要回顧一下最初的時候我們希望從類似于OpenStack一樣的云基礎(chǔ)設(shè)施中得到什么。并且對比一下。Mesos是否能提供覆蓋全部這些功能的替代方案。
像OpenStack一樣的云環(huán)境,除了可以主動獲取資源,分配工作負(fù)載之外,還可以針對各種各樣的計算、存儲以及網(wǎng)絡(luò)等核心功能提供基于多租戶的資源管理。
隨著許多主要的云服務(wù)提供商不斷投入到公有云基礎(chǔ)設(shè)施的研發(fā)中,OpenStack也逐漸發(fā)展成一個生態(tài)系統(tǒng)。
對于跨主機(jī)分配工作負(fù)載,Mesos也做得很好。但是我覺得不應(yīng)該把它看做是OpenStack云平臺的替代方案。如果想要替代OpenStack,就需要提供與OpenStack同樣級別的安全、存儲、網(wǎng)絡(luò)以及多租戶的服務(wù)。我也不認(rèn)為Mesos需要在所有方面做得都要比OpenStack更好。在我看來,Mesos至多可以和OpenStack運行的一樣好,而并非替代OpenStack。
#p#
回答者:Dale Bracey(Rackspace私有云OpenStack產(chǎn)品工程師)
雖然我根本不熟悉Mesos,但是我大致了解,這是另外一個可以共享主機(jī)內(nèi)核的容器化服務(wù)。
我嘗試在Lukas Lösche的觀點上再進(jìn)行一些補(bǔ)充。你完全可以將之前回答中所提到的內(nèi)容結(jié)合起來為你服務(wù)。OpenStack可以用來提供伸縮性,并且可以更方便地管理你的開發(fā)工具、網(wǎng)站、服務(wù)以及服務(wù)器。即使是直接對裸機(jī)的管理,OpenStack也是可以完成的(Ironic-OpenStack)
OpenStack整體的部署維護(hù)比較困難,雖然文檔內(nèi)容非常詳細(xì),但是仍然缺少細(xì)節(jié)性的指導(dǎo),比如告訴用戶從開始到最后的整個的步驟應(yīng)該怎樣完成。畢竟OpenStack是一個很大的項目,這種復(fù)雜性也是正常的。
OpenStack試圖成為一個可以管理多種Hypervisor、虛擬機(jī)以及存儲服務(wù)的編排層,但是目前仍然缺乏足夠的能力。之前提到了OpenStack-Docker Nova驅(qū)動,這個項目將Docker安裝在計算節(jié)點上,將容器按照虛擬機(jī)的方式提交給Nova/Glance,但實際上,容器并不虛擬機(jī),這樣用戶不僅可以利用容器技術(shù)本身的優(yōu)勢,還可以利用OpenStack提供的控制管理功能。此外還有一個CoreOS-OpenStack的項目,這個項目同樣也很流行,這兩個項目都有類似的特性。
當(dāng)然,用戶仍然需要使用一些配置系統(tǒng)來幫助你管理系統(tǒng),除非想讓事情變得更復(fù)雜。我們曾經(jīng)使用Chef,之后使用Ansible。令人難過得是,我剛剛才知道,Ansible的CTO Michael Dehaan今天離開了Ansible公司。我不知道這個公司今后將會怎樣發(fā)展,當(dāng)然這是題外話。
如果你僅僅希望自己的系統(tǒng)能夠運行,而不是去關(guān)心虛擬機(jī)和服務(wù)器,OpenStack的開箱即用并不能為你提供完全自動化的環(huán)境,但是你可以利用些現(xiàn)成的工具來實現(xiàn)這一目的。這些工具也是完全開放的,你可以對它們定制開發(fā)并且能按照你希望的方式來工作。你可以將Heat-OpenStack、Ceilometer-OpenStack、以及各種DevOps工具結(jié)合起來為你提供自動化服務(wù)。
最后為新產(chǎn)品做一個廣告:Rackspace也承認(rèn)OpenStack的部署工作確實很困難,我們一直致力于幫助客戶簡化部署的難度,我們在github上提供用于部署私有云的OpenStack結(jié)點,可以讓用戶免費使用(在stackgorge中有一個社區(qū)項目stackforge/os-ansible-deployment)我們也提供了其他的私有云的解決方案。
你可以嘗試使用一下,去閱讀部署文檔,提交bug提交新的特性請求,并為社區(qū)做貢獻(xiàn),讓我們來共同努力,簡化OpenStack的部署流程。用戶只需要關(guān)注服務(wù)的開發(fā)過程,不用考慮底層的基礎(chǔ)設(shè)施,我們會一直為你提供幫助,包括更新github上面的文檔。以下是一些相關(guān)的資料:
- Docs: Private Cloud Support and Management by Rackspace
- Install: rackspace.comPrivate Cloud Computing, Storage & Hosting by Rackspace & Openstack
- Learn more: Rackspace Community