『高階篇』docker之服務編排瞭解Mesos(22)
Mesos是Apache下的開源分散式資源管理框架,它被稱為是分散式系統的核心。Mesos最初是由加州大學伯克利分校的AMPLab開發的,後在Twitter得到廣泛使用。
初見
http://mesos.apache.org/
在你的資料中心 執行資料(很多臺資料的集合),就像執行在單個的資源池一樣
Mesos 抽象出來CPU,記憶體,磁碟和其他計算機資源從物理機或者虛擬機器中,使具有容錯的和可伸縮的系統更容易的構建和簡單的執行。如果是沒有基礎的老鐵,可能是認為是直接把伺服器的硬體插拔出來重新組建一臺新的機器,其實不是這樣的,他是通過軟體的方式把需要的硬體裝置抽取出來,統一的排程,合理的利用這些資源。
發展歷程
-
起源
>當twitter才開始的時候網站經歷了爆炸式的增長,網站很不穩定。經常被流量擊垮,每次網站掛的時候都會出現下面這張圖片,看的多了大家都比較順眼了,導致這張圖也火了,“失敗之鯨”! 為了解決這個失敗之鯨的教育,twitter通過google的Borg系統中得到啟發,然後就開發一個類似的資源管理系統來幫助他們擺脫可怕的“失敗之鯨”!後來他們注意到加州大學伯克利分校AMPLab正在開發的名為Mesos的專案,這個專案的負責人是Ben Hindman,Ben是加州大學伯克利分校的博士研究生。後來Ben Hindman加入了Twitter,負責開發和部署Mesos。現在Mesos管理著Twitter超過30,0000臺伺服器上的應用部署。最後twitter把Mesos開源給apache。
-
版本迭代
>保持一個月更新一個版本的頻率,知道今天也依然保持這這個頻率目前最新版本:1.7.0,由此也可以看到對市場的信心!
- 2013年1月份釋出了0.12.1版本
- 中間經歷了30多個版本
- 2016年7月份釋出了1.0.0
-
兩級排程
>Mesos是如何讓twitter擺脫失敗之鯨呢,檢視下圖
- Mesos master是支援高可用叢集的,通過zookeeper完成的主節點選舉
- Mesos master管理所有節點的Mesos slave的守護程序
- Mesos slave執行在物理機或者虛擬機器之上。每個執行具體的任務或者是服務
- 每個salve在啟動的時候都會註冊是master
- master協調每個節點的slave,並且確定每個slave的可用資源
- 第一級排程 Hadoop 和Mpi ,master 排程slave
- 第二級排程 Framework的元件組成,大家看下下圖的虛線部分,Framework包括排程器和執行器兩部分,Master可以跟多種Framework進行通訊,上邊展示的排程器也就Hadoop 和 MPI,還可以用多種。下邊展示的是執行器,執行器執行在slave中。
-
排程的流程
>看下圖
- slave1也就是Agent1告訴master空閒資源有4cpu,4gb
- Mesos觸發排程資源分配模組,請求分配4cpu,4gb,Framework1要求使用可用資源,然後master發出要約描述了slave1中所有的可用資源。4cpu,4gb記憶體
- Famework的排程器給master說需要在slave上執行2個task,task1(2cpu,1gb)
task2(1cpu,2gb) - Mesos向slave下發任務,並且分配適當的資源,給Franmework的執行器,接下來有執行器啟動這2個任務,fw1,task1; fw2,task2;
這時候slave1 還剩餘1cpu,1gb沒有被佔用,還可以繼續分配給其他的任務來執行,其實排程器就是給Mesos談判資源的,看看你有多少資源,需要執行一個程式看看資源夠不夠,如果夠的話,我會告訴你我要在那臺機器上進行執行,然後把執行器告訴master,master把執行器告訴slave,在slave上執行,執行器其實可以理解為一段程式碼,可以給master和slave對接的程式碼。為了實現一個slave中執行多個任務,Mesos使用了隔離模組,這模組使用了程序隔離的機制來執行這些任務。Mesos早在09年就開始使用了linux的隔離技術,後來Mesos增加了對docker的支援,就可以使用docker本身的隔離機制,單不管使用什麼隔離機制都需要執行器全部的打包,並且傳送給響應的slave,slave上啟動。
Marathon
mesos 並不能單獨的存在,必要要有Framework配合存在,也知道mesos有各種各樣的Framework負責執行各種各樣的程式,Marathon適合長期執行的專案(資料庫,應用服務等等),下面這個圖就是mesos+Marathon和linux核心的對比。
整合mesos marathon 負載均衡 服務發現的流程
Mesos特徵
- 強大的資源管理
Mesos的核心,保證叢集內的所有使用者平等的使用資源,這裡的資源包括記憶體和CPU,磁碟等等。
- Kernel 和Framework的分離
Mesos只負責的資源的排程管理,各種程式都使用Mesos裡面的資源,也可以自己來開發Framework。
- 門檻較低,易於使用
門檻低是相對其他的服務編排工具,環境比較容易搭建按照文件基本不會遇見大問題,如果使用長期執行的服務可以使用Marathon這種服務就可以了。Marathon的環境搭建比較容易上手很快就搭建完畢了。如果你有特殊場景需要自己開發Framework
,恭喜你老鐵你中獎了,門檻太高!
- 大廠使用
twitter創始人30萬以上的服務在使用,apple的叢集,youtube也使用了。國內的愛奇藝,數人科技也都使用的。
Marathon特徵
- 高可用
支援叢集
- Constraints
給機器打標籤,CPU高,記憶體高,硬碟好的,然後資源要約的時候給指定標籤的機器。
- 服務發現和負載均衡
相當於服務的註冊中心。
- 健康檢查
執行排程器的時候,有針對機器的健康檢查的功能,包括三種方式:http,tcp,shell命令的,比如:web服務要加入基於http的健康檢查,訪問固定的頁面,如果訪問的是200的話,服務是沒問題的。如果訪問連續多少次發現不健康也就是不是200的情況,停止重新啟動一個服務。
- 事件訂閱
自己啟動一個服務,註冊事件訂閱,它就會自動的推送訂閱的事件資訊,包括服務停止,被殺掉等等吧。
- 完善的REST API
比較好看的UI頁面,api介面提供給呼叫者檢視服務的狀態。每個服務執行的例項,每個例項的狀態,可以通過指令碼整合API。
PS:這就是對Mesos和marathon 大概的理解。
ofollow,noindex" target="_blank" href="http://zhanzhang.baidu.com/sitesubmit/index?sitename=https://idig8.com/2018/10/24/gaojipiandockerzhifuwubianpailejiemesos21/">百度未收錄
>>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
>>原文連結地址:上一篇:已是最新文章