溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

『高級(jí)篇』docker之服務(wù)編排了解Mesos(22)

發(fā)布時(shí)間:2020-07-04 16:24:58 來源:網(wǎng)絡(luò) 閱讀:261 作者:IT人故事 欄目:云計(jì)算

原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請(qǐng)注明:轉(zhuǎn)載自IT人故事會(huì),謝謝!
原文鏈接地址:『高級(jí)篇』docker之服務(wù)編排了解Mesos(22)

Mesos是Apache下的開源分布式資源管理框架,它被稱為是分布式系統(tǒng)的內(nèi)核。Mesos最初是由加州大學(xué)伯克利分校的AMPLab開發(fā)的,后在Twitter得到廣泛使用。

初見

http://mesos.apache.org/
在你的數(shù)據(jù)中心 運(yùn)行數(shù)據(jù)(很多臺(tái)數(shù)據(jù)的集合),就像運(yùn)行在單個(gè)的資源池一樣
Mesos 抽象出來CPU,內(nèi)存,磁盤和其他計(jì)算機(jī)資源從物理機(jī)或者虛擬機(jī)中,使具有容錯(cuò)的和可伸縮的系統(tǒng)更容易的構(gòu)建和簡(jiǎn)單的運(yùn)行。如果是沒有基礎(chǔ)的老鐵,可能是認(rèn)為是直接把服務(wù)器的硬件插拔出來重新組建一臺(tái)新的機(jī)器,其實(shí)不是這樣的,他是通過軟件的方式把需要的硬件設(shè)備抽取出來,統(tǒng)一的調(diào)度,合理的利用這些資源。

『高級(jí)篇』docker之服務(wù)編排了解Mesos(22)

發(fā)展歷程

  • 起源

    當(dāng)twitter才開始的時(shí)候網(wǎng)站經(jīng)歷了爆炸式的增長(zhǎng),網(wǎng)站很不穩(wěn)定。經(jīng)常被流量擊垮,每次網(wǎng)站掛的時(shí)候都會(huì)出現(xiàn)下面這張圖片,看的多了大家都比較順眼了,導(dǎo)致這張圖也火了,“失敗之鯨”! 為了解決這個(gè)失敗之鯨的教育,twitter通過google的Borg系統(tǒng)中得到啟發(fā),然后就開發(fā)一個(gè)類似的資源管理系統(tǒng)來幫助他們擺脫可怕的“失敗之鯨”!后來他們注意到加州大學(xué)伯克利分校AMPLab正在開發(fā)的名為Mesos的項(xiàng)目,這個(gè)項(xiàng)目的負(fù)責(zé)人是Ben Hindman,Ben是加州大學(xué)伯克利分校的博士研究生。后來Ben Hindman加入了Twitter,負(fù)責(zé)開發(fā)和部署Mesos。現(xiàn)在Mesos管理著Twitter超過30,0000臺(tái)服務(wù)器上的應(yīng)用部署。最后twitter把Mesos開源給apache。

『高級(jí)篇』docker之服務(wù)編排了解Mesos(22)

  • 版本迭代

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

  1. 2013年1月份發(fā)布了0.12.1版本
  2. 中間經(jīng)歷了30多個(gè)版本
  3. 2016年7月份發(fā)布了1.0.0
  • 兩級(jí)調(diào)度

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

    1. Mesos master是支持高可用集群的,通過zookeeper完成的主節(jié)點(diǎn)選舉
    2. Mesos master管理所有節(jié)點(diǎn)的Mesos slave的守護(hù)進(jìn)程
    3. Mesos slave運(yùn)行在物理機(jī)或者虛擬機(jī)之上。每個(gè)運(yùn)行具體的任務(wù)或者是服務(wù)
    4. 每個(gè)salve在啟動(dòng)的時(shí)候都會(huì)注冊(cè)是master
    5. master協(xié)調(diào)每個(gè)節(jié)點(diǎn)的slave,并且確定每個(gè)slave的可用資源
    6. 第一級(jí)調(diào)度 Hadoop 和Mpi ,master 調(diào)度slave
    7. 第二級(jí)調(diào)度 Framework的組件組成,大家看下下圖的虛線部分,F(xiàn)ramework包括調(diào)度器和執(zhí)行器兩部分,Master可以跟多種Framework進(jìn)行通信,上邊展示的調(diào)度器也就Hadoop 和 MPI,還可以用多種。下邊展示的是執(zhí)行器,執(zhí)行器運(yùn)行在slave中。

『高級(jí)篇』docker之服務(wù)編排了解Mesos(22)

  • 調(diào)度的流程

    看下圖

  1. slave1也就是Agent1告訴master空閑資源有4cpu,4gb
  2. Mesos觸發(fā)調(diào)度資源分配模塊,請(qǐng)求分配4cpu,4gb,F(xiàn)ramework1要求使用可用資源,然后master發(fā)出要約描述了slave1中所有的可用資源。4cpu,4gb內(nèi)存
  3. Famework的調(diào)度器給master說需要在slave上運(yùn)行2個(gè)task,task1(2cpu,1gb)
    task2(1cpu,2gb)
  4. Mesos向slave下發(fā)任務(wù),并且分配適當(dāng)?shù)馁Y源,給Franmework的執(zhí)行器,接下來有執(zhí)行器啟動(dòng)這2個(gè)任務(wù),fw1,task1; fw2,task2;

這時(shí)候slave1 還剩余1cpu,1gb沒有被占用,還可以繼續(xù)分配給其他的任務(wù)來運(yùn)行,其實(shí)調(diào)度器就是給Mesos談判資源的,看看你有多少資源,需要運(yùn)行一個(gè)程序看看資源夠不夠,如果夠的話,我會(huì)告訴你我要在那臺(tái)機(jī)器上進(jìn)行運(yùn)行,然后把執(zhí)行器告訴master,master把執(zhí)行器告訴slave,在slave上執(zhí)行,執(zhí)行器其實(shí)可以理解為一段代碼,可以給master和slave對(duì)接的代碼。為了實(shí)現(xiàn)一個(gè)slave中運(yùn)行多個(gè)任務(wù),Mesos使用了隔離模塊,這模塊使用了進(jìn)程隔離的機(jī)制來運(yùn)行這些任務(wù)。Mesos早在09年就開始使用了linux的隔離技術(shù),后來Mesos增加了對(duì)docker的支持,就可以使用docker本身的隔離機(jī)制,單不管使用什么隔離機(jī)制都需要執(zhí)行器全部的打包,并且發(fā)送給響應(yīng)的slave,slave上啟動(dòng)。

『高級(jí)篇』docker之服務(wù)編排了解Mesos(22)

Marathon

mesos 并不能單獨(dú)的存在,必要要有Framework配合存在,也知道m(xù)esos有各種各樣的Framework負(fù)責(zé)運(yùn)行各種各樣的程序,Marathon適合長(zhǎng)期運(yùn)行的項(xiàng)目(數(shù)據(jù)庫,應(yīng)用服務(wù)等等),下面這個(gè)圖就是mesos+Marathon和linux內(nèi)核的對(duì)比。

『高級(jí)篇』docker之服務(wù)編排了解Mesos(22)

整合mesos marathon 負(fù)載均衡 服務(wù)發(fā)現(xiàn)的流程

『高級(jí)篇』docker之服務(wù)編排了解Mesos(22)

Mesos特征

  • 強(qiáng)大的資源管理

    Mesos的核心,保證集群內(nèi)的所有用戶平等的使用資源,這里的資源包括內(nèi)存和CPU,磁盤等等。

  • Kernel 和Framework的分離

    Mesos只負(fù)責(zé)的資源的調(diào)度管理,各種程序都使用Mesos里面的資源,也可以自己來開發(fā)Framework。

  • 門檻較低,易于使用

    門檻低是相對(duì)其他的服務(wù)編排工具,環(huán)境比較容易搭建按照文檔基本不會(huì)遇見大問題,如果使用長(zhǎng)期運(yùn)行的服務(wù)可以使用Marathon這種服務(wù)就可以了。Marathon的環(huán)境搭建比較容易上手很快就搭建完畢了。如果你有特殊場(chǎng)景需要自己開發(fā)Framework
    ,恭喜你老鐵你中獎(jiǎng)了,門檻太高!

  • 大廠使用

    twitter創(chuàng)始人30萬以上的服務(wù)在使用,apple的集群,youtube也使用了。國(guó)內(nèi)的愛奇藝,數(shù)人科技也都使用的。

Marathon特征

  • 高可用

    支持集群

  • Constraints

    給機(jī)器打標(biāo)簽,CPU高,內(nèi)存高,硬盤好的,然后資源要約的時(shí)候給指定標(biāo)簽的機(jī)器。

  • 服務(wù)發(fā)現(xiàn)和負(fù)載均衡

    相當(dāng)于服務(wù)的注冊(cè)中心。

  • 健康檢查

    執(zhí)行調(diào)度器的時(shí)候,有針對(duì)機(jī)器的健康檢查的功能,包括三種方式:http,tcp,shell命令的,比如:web服務(wù)要加入基于http的健康檢查,訪問固定的頁面,如果訪問的是200的話,服務(wù)是沒問題的。如果訪問連續(xù)多少次發(fā)現(xiàn)不健康也就是不是200的情況,停止重新啟動(dòng)一個(gè)服務(wù)。

  • 事件訂閱

    自己?jiǎn)?dòng)一個(gè)服務(wù),注冊(cè)事件訂閱,它就會(huì)自動(dòng)的推送訂閱的事件信息,包括服務(wù)停止,被殺掉等等吧。

  • 完善的REST API

    比較好看的UI頁面,api接口提供給調(diào)用者查看服務(wù)的狀態(tài)。每個(gè)服務(wù)運(yùn)行的實(shí)例,每個(gè)實(shí)例的狀態(tài),可以通過腳本集成API。

PS:這就是對(duì)Mesos和marathon 大概的理解。

『高級(jí)篇』docker之服務(wù)編排了解Mesos(22)

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI