Mesos的現實使用場景
【編者的話】文中內容來源于stackoverflow上的一個 問題 ,提問者想知道Mesos在實際的使用中都有哪些使用場景,來自推ter的工程師從容器編排、資源利用率、優先級和資源搶占、以及服務運行等幾個角度,對問題進行了回答。
我嘗試探究用戶使用Mesos的原因究竟有哪些,以下是暫時列出的幾個要點,不知道還有沒有其他的例子?
1)讓用戶把所有的服務都運行在同一個集群中而不是運行在專用的集群中(比如通過終端應用的集群+DevOps的方式,例如像Jekins)
2) 在同一個集群中運行不同類型的成熟的服務(dev,test,production)不知道這樣是否可行?Kubernetes中已經可以通過lables標簽來提供類似的功能。
3) Mesos 通過提供簡化部署、統一標準的API、資源裝箱等一系列的操作,簡化了傳統的分布式服務(比如像Hadoop)的使用流程。
回答(Dave Lester):
我目前在推ter工作,我同時參與到了Apache Mesos以及Autora項目的相關工作中,下面是我對Mesos使用場景的理解。
Mesos的實際使用場景可能會受到以下幾個因素的影響:集群規模(數十臺服務器到成千上萬臺)、可使用的硬件(專用的/靜態的,或者是云端的/可擴展的)、以及工作量(提供基本的服務或是批量處理的服務,或兩種服務同時提供)
上面所列出的幾點都很有道理,這里我再加上幾種新的使用案例。
容器編排
隨著容器環境(比如Docker)變得越來越流行,許多潛在的用戶正在尋找一種 Mesos+調度器的方案來管理鏡像在創建之后的編排工作。Mesos到目前為止已經相當成熟,已經被證明可以規模化地提供服務,我認為Mesos的解決方案比某些臨時出現的方案要好很多。
提升資源利用率
對于使用超過50臺服務器的公司而言,一個通常的使用Mesos的動機就是提升資源利用率,并且減少運維成本。目前已經有許多這樣的公司,比如各種公有云 和私有云服務的提供商。在Ebay的案例中,它們曾經在Mesos上運行Jekins這樣可以減少虛擬機的使用。Mesosphere也發布了相關的文章 對于 HubSpot (運行在AWS上)的案例研究,文章中介紹了HubSpot是如何使用幾十臺大型的服務器來替代了幾百臺小型的服務器,使得硬件的利用率更高。
優先級和資源搶占
在推ter,我們通過一個調度器: Apache Aurora 來運行Mesos服務。在這個使用場景中,我們有一種方式可以提高資源的利用率:在同一個集群上運行不同的成熟的服務。Aurora有一個環境變量的概 念,這可以讓用戶可以運行不同環境類型的服務,比如production、development、或者是test環境。此外,Aurora還有一種內建 的優先級搶占機制,這可以允許它來優先考慮production環境下的任務,當這些資源需要被production環境中的任務使用的時候,系統可以及 時結束非production的任務,在每一種環境中,都有類似的優先級系統。
長期的,功能性相關的資源搶占功能也將會存在于Mesos本身的內核中 -- 這是一個殺手級的特性,這個功能可以增強資源利用率,并且在不同的環境下(dev、test、prod)運行不同的成熟的服務。如果你對相關的話題感興 趣,可以參考MESOS-155以及MESOS-1474。
同時運行批處理服務和普通服務
可以在一個共享的Mesos集群中同時運行批處理任務以及其他的普通服務,這將對資源利用率的提升起到關鍵作用。讓我們回顧一下Myriad項 目,這個項目希望把Mesos以及YARN的工作任務放在同一個集群中。在這個時候,用戶并不在意同時進行批量服務和普通服務的大規模的部署工作,在一個 共享的集群中運行多個框架也將變得更加簡單,這也是社區發展的一個方向。