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