Mesos功能和特點?
Mesos是如何實現整個資料中心統一管理的呢?
核心的概念就是資源兩級供給和作業兩級排程。先說說從下而上的資源兩級供給吧。
- 在Mesos叢集中,資源的供應方都來自Mesos Slave所在的物理節點。資源可以包括CPU、記憶體、儲存空間、IO吞吐能力等
圖片來自mesos.apache.org,圖⽚片版權歸屬原作者
這些資源通過供給的方式,從Mesos Slave提供給了Mesos Master的Leader。(具體的領導者選舉過程將在後續容器編排章節詳細闡述)這就是第一級的資源供給。 - Mesos master進一步將資源整合後,作為可選項提供給了各種framework框架。這些框架中最主流的就是Marathon長服務框架,但也可能是其他如Jenkins CI/CD框架、Spark大資料框架、Kafka中介軟體框架、Chronos任務管理框架、Aurora應用管理框架等。各種框架可以有選擇地對Mesos Master整合後的資料中心資源提出要求。
而Mesos和各種框架對於資源的要求處理過程,正是從上而下的兩級排程機制的核心:
- 首先,各個框架都有自己的排程器Scheduler,它會根據使用者需求啟動特定的工作任務。排程器在上層第一級確定工作任務需要的資源情況,是否需要接受Mesos提供的CPU、記憶體和儲存資源來執行特定的工作負載。
- 同時Mesos對於上層框架的需求也不是予取予求。他會採用預設的DRF優勢資源公平演算法(Dominant Resource Faireness)來決定各種框架任務的資源分配情況,從而使整個資料中心利益最大化。比如上層框架中的Marathon排程器需要啟動Nginx任務,而同時Spark框架需要啟動streaming任務,Mesos的DRF演算法會根據框架提出的資源請求,將盡量多的記憶體和CPU分配給Nginx用於進行反向代理服務,同時將盡可能多的IO吞吐效能提供給Spark進行流處理。
Mesos的主要特點包括:
- 輕量級的master:僅保留了framework和slave的一些狀態,易於重構,因此採用zookeeper很容易解決HA問題
- 配合container技術的slave:利用Linux-Container和Docker技術可以實現很方便地實現任務間的CPU與記憶體資源隔離
- 資源分配排程比較簡單:預設的DRF演算法可以輕鬆實現資源的最大化利用,不需要複雜的人工干預和配置
Marathon功能和特點?
一個作業系統有了優秀的核心只是完成了一半工作,強大易用的服務管理(如init、systemd系統等)才是作業系統得以生存發展的另一半天。
相同的道理,有了Mesos這個分散式作業系統核心,還得有一個可以支援分散式的長服務執行排程框架,這就是Marathon。
圖片來自360doc.com,圖⽚片版權歸屬原作者
Marathon的主要特點有:
- 高可用性:Marathon作為主動/被動群集執行,領導者選舉可以實現100%的高可用執行時間。
- 資源分佈可控:可以允許每個機架/節點等僅放置應用程式的一個例項,從而緩解單點故障的影響。
- 服務發現和負載平衡:可以通過HA Proxy和DNS等方式自動實現負載均衡。
- 健康檢查:可以使用HTTP或TCP檢查評估應用程式的執行狀況。
- 活動訂閱:提供HTTP端點以接收通知。例如,與外部負載均衡器整合。
- UI:美麗而強大的UI。
- API:完整的REST API,易於整合和編寫指令碼.
- 安全:Basic Auth和SSL
- 監控:以JSON格式在/metrics查詢它們或將它們推送到諸如graphite,statsd和Datadog之類的系統。
使用場景
如果想執行長生命週期的應用服務(而不是短時作業等),想將資料中心的多種形式的任務結合管理(如CI/CD連續整合連續部署、大資料、訊息中介軟體、搜尋引擎等),但應用之間不需要太強的叢集耦合(如Oracle資料庫心跳、Keepalive節點心跳等),Mesos+Marathon這一對資料中心作業系統解決方案,可以成為您的首選。