您好,登錄后才能下訂單哦!
原創(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)度,合理的利用這些資源。
當(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。
保持一個(gè)月更新一個(gè)版本的頻率,知道今天也依然保持這這個(gè)頻率目前最新版本:1.7.0,由此也可以看到對(duì)市場(chǎng)的信心!
Mesos是如何讓twitter擺脫失敗之鯨呢,查看下圖
- Mesos master是支持高可用集群的,通過zookeeper完成的主節(jié)點(diǎn)選舉
- Mesos master管理所有節(jié)點(diǎn)的Mesos slave的守護(hù)進(jìn)程
- Mesos slave運(yùn)行在物理機(jī)或者虛擬機(jī)之上。每個(gè)運(yùn)行具體的任務(wù)或者是服務(wù)
- 每個(gè)salve在啟動(dòng)的時(shí)候都會(huì)注冊(cè)是master
- master協(xié)調(diào)每個(gè)節(jié)點(diǎn)的slave,并且確定每個(gè)slave的可用資源
- 第一級(jí)調(diào)度 Hadoop 和Mpi ,master 調(diào)度slave
- 第二級(jí)調(diào)度 Framework的組件組成,大家看下下圖的虛線部分,F(xiàn)ramework包括調(diào)度器和執(zhí)行器兩部分,Master可以跟多種Framework進(jìn)行通信,上邊展示的調(diào)度器也就Hadoop 和 MPI,還可以用多種。下邊展示的是執(zhí)行器,執(zhí)行器運(yùn)行在slave中。
看下圖
這時(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)。
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ì)比。
強(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ù)人科技也都使用的。
高可用
支持集群
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ù)停止,被殺掉等等吧。
比較好看的UI頁面,api接口提供給調(diào)用者查看服務(wù)的狀態(tài)。每個(gè)服務(wù)運(yùn)行的實(shí)例,每個(gè)實(shí)例的狀態(tài),可以通過腳本集成API。
PS:這就是對(duì)Mesos和marathon 大概的理解。
免責(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)容。