您好,登錄后才能下訂單哦!
原創文章,歡迎轉載。轉載請注明:轉載自IT人故事會,謝謝!
原文鏈接地址:『高級篇』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,由此也可以看到對市場的信心!
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 還剩余1cpu,1gb沒有被占用,還可以繼續分配給其他的任務來運行,其實調度器就是給Mesos談判資源的,看看你有多少資源,需要運行一個程序看看資源夠不夠,如果夠的話,我會告訴你我要在那臺機器上進行運行,然后把執行器告訴master,master把執行器告訴slave,在slave上執行,執行器其實可以理解為一段代碼,可以給master和slave對接的代碼。為了實現一個slave中運行多個任務,Mesos使用了隔離模塊,這模塊使用了進程隔離的機制來運行這些任務。Mesos早在09年就開始使用了linux的隔離技術,后來Mesos增加了對docker的支持,就可以使用docker本身的隔離機制,單不管使用什么隔離機制都需要執行器全部的打包,并且發送給響應的slave,slave上啟動。
mesos 并不能單獨的存在,必要要有Framework配合存在,也知道mesos有各種各樣的Framework負責運行各種各樣的程序,Marathon適合長期運行的項目(數據庫,應用服務等等),下面這個圖就是mesos+Marathon和linux內核的對比。
強大的資源管理
Mesos的核心,保證集群內的所有用戶平等的使用資源,這里的資源包括內存和CPU,磁盤等等。
Kernel 和Framework的分離
Mesos只負責的資源的調度管理,各種程序都使用Mesos里面的資源,也可以自己來開發Framework。
門檻較低,易于使用
門檻低是相對其他的服務編排工具,環境比較容易搭建按照文檔基本不會遇見大問題,如果使用長期運行的服務可以使用Marathon這種服務就可以了。Marathon的環境搭建比較容易上手很快就搭建完畢了。如果你有特殊場景需要自己開發Framework
,恭喜你老鐵你中獎了,門檻太高!
twitter創始人30萬以上的服務在使用,apple的集群,youtube也使用了。國內的愛奇藝,數人科技也都使用的。
高可用
支持集群
Constraints
給機器打標簽,CPU高,內存高,硬盤好的,然后資源要約的時候給指定標簽的機器。
服務發現和負載均衡
相當于服務的注冊中心。
健康檢查
執行調度器的時候,有針對機器的健康檢查的功能,包括三種方式:http,tcp,shell命令的,比如:web服務要加入基于http的健康檢查,訪問固定的頁面,如果訪問的是200的話,服務是沒問題的。如果訪問連續多少次發現不健康也就是不是200的情況,停止重新啟動一個服務。
事件訂閱
自己啟動一個服務,注冊事件訂閱,它就會自動的推送訂閱的事件信息,包括服務停止,被殺掉等等吧。
比較好看的UI頁面,api接口提供給調用者查看服務的狀態。每個服務運行的實例,每個實例的狀態,可以通過腳本集成API。
PS:這就是對Mesos和marathon 大概的理解。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。