『高級篇』docker之服務編排瞭解Mesos(22)

>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
>原文鏈接地址:『高級篇』docker之服務編排瞭解Mesos(22)

Mesos是Apache下的開源分佈式資源管理框架,它被稱爲是分佈式系統的內核。Mesos最初是由加州大學伯克利分校的AMPLab開發的,後在Twitter得到廣泛使用。

初見

http://mesos.apache.org/
在你的數據中心 運行數據(很多臺數據的集合),就像運行在單個的資源池一樣
Mesos 抽象出來CPU,內存,磁盤和其他計算機資源從物理機或者虛擬機中,使具有容錯的和可伸縮的系統更容易的構建和簡單的運行。如果是沒有基礎的老鐵,可能是認爲是直接把服務器的硬件插拔出來重新組建一臺新的機器,其實不是這樣的,他是通過軟件的方式把需要的硬件設備抽取出來,統一的調度,合理的利用這些資源。

『高級篇』docker之服務編排瞭解Mesos(22)

發展歷程

  • 起源

    當twitter纔開始的時候網站經歷了爆炸式的增長,網站很不穩定。經常被流量擊垮,每次網站掛的時候都會出現下面這張圖片,看的多了大家都比較順眼了,導致這張圖也火了,“失敗之鯨”! 爲了解決這個失敗之鯨的教育,twitter通過google的Borg系統中得到啓發,然後就開發一個類似的資源管理系統來幫助他們擺脫可怕的“失敗之鯨”!後來他們注意到加州大學伯克利分校AMPLab正在開發的名爲Mesos的項目,這個項目的負責人是Ben Hindman,Ben是加州大學伯克利分校的博士研究生。後來Ben Hindman加入了Twitter,負責開發和部署Mesos。現在Mesos管理着Twitter超過30,0000臺服務器上的應用部署。最後twitter把Mesos開源給apache。

『高級篇』docker之服務編排瞭解Mesos(22)

  • 版本迭代

    保持一個月更新一個版本的頻率,知道今天也依然保持這這個頻率目前最新版本:1.7.0,由此也可以看到對市場的信心!

  1. 2013年1月份發佈了0.12.1版本
  2. 中間經歷了30多個版本
  3. 2016年7月份發佈了1.0.0
  • 兩級調度

    Mesos是如何讓twitter擺脫失敗之鯨呢,查看下圖

    1. Mesos master是支持高可用集羣的,通過zookeeper完成的主節點選舉
    2. Mesos master管理所有節點的Mesos slave的守護進程
    3. Mesos slave運行在物理機或者虛擬機之上。每個運行具體的任務或者是服務
    4. 每個salve在啓動的時候都會註冊是master
    5. master協調每個節點的slave,並且確定每個slave的可用資源
    6. 第一級調度 Hadoop 和Mpi ,master 調度slave
    7. 第二級調度 Framework的組件組成,大家看下下圖的虛線部分,Framework包括調度器和執行器兩部分,Master可以跟多種Framework進行通信,上邊展示的調度器也就Hadoop 和 MPI,還可以用多種。下邊展示的是執行器,執行器運行在slave中。

『高級篇』docker之服務編排瞭解Mesos(22)

  • 調度的流程

    看下圖

  1. slave1也就是Agent1告訴master空閒資源有4cpu,4gb
  2. Mesos觸發調度資源分配模塊,請求分配4cpu,4gb,Framework1要求使用可用資源,然後master發出要約描述了slave1中所有的可用資源。4cpu,4gb內存
  3. Famework的調度器給master說需要在slave上運行2個task,task1(2cpu,1gb)
    task2(1cpu,2gb)
  4. 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上啓動。

『高級篇』docker之服務編排瞭解Mesos(22)

Marathon

mesos 並不能單獨的存在,必要要有Framework配合存在,也知道mesos有各種各樣的Framework負責運行各種各樣的程序,Marathon適合長期運行的項目(數據庫,應用服務等等),下面這個圖就是mesos+Marathon和linux內核的對比。

『高級篇』docker之服務編排瞭解Mesos(22)

整合mesos marathon 負載均衡 服務發現的流程

『高級篇』docker之服務編排瞭解Mesos(22)

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 大概的理解。

『高級篇』docker之服務編排瞭解Mesos(22)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章