用Mesos分布式架构进行工作
引言:2010年,一個旨在解決擴容問題的項目誕生——Apache Mesos,它在某種程度上對CPU、內(nèi)存、磁盤資源進行抽象,從而允許整個數(shù)據(jù)中心如同單臺大服務器般運轉(zhuǎn)。無需虛擬機和操作系統(tǒng),Mesos創(chuàng)造了一個單獨底層的集群為應用提供所需資源。
本文將向您簡單介紹Mesos分布式架構(gòu),詳細討論請見《Mesos 實戰(zhàn)》一書。
Mesos通過引入一層抽象,提供了一種像管理單臺大服務器般的方法來管理整個數(shù)據(jù)中心。你可以認為Mesos與當今虛擬化解決方案類似:像hypervisor一樣抽象物理CPU、內(nèi)存、磁盤資源,之后以虛擬機形式呈現(xiàn)。Mesos做相同的事情,但其將資源直接提供給應用。
除了提升整體資源的利用率外,Mesos還一開始就支持分布式、高可用及容錯。通過使用容器技術(shù),如Linux control groups (cgroups)和Docker,Mesos實現(xiàn)了進程間隔離,允許多個應用運行在同一機器上。你也許曾搭建過三個集群,分別運行著Memcached、Jenkins CI和Ruby on Rails應用,現(xiàn)在你只需部署一個Mesos集群就可以運行所有的應用了。
為了提供規(guī)模化服務,Mesos提供了一套分布式、容錯性架構(gòu)來完成資源的細粒度分配。這套架構(gòu)包括三個組件:master、slave及運行在其上的應用本身(通常稱為framework)。Mesos依賴于Apache ZooKeeper,一個分布式的數(shù)據(jù)存儲系統(tǒng),專用于集群內(nèi)的協(xié)調(diào)同步leader投票選舉,以及Mesos master、slave和framework間的leader發(fā)現(xiàn)。
在下圖中,你能夠看見這些架構(gòu)組件如何在一起工作,從而提供一個穩(wěn)定的平臺來部署應用。
Mesos架構(gòu)圖,包括一個或多個master、slave和framework
masters
Mesos master的職責是管理集群中在每臺機器上運行的Mesos slave守護進程。通過ZooKeeper和master之間協(xié)調(diào)哪個節(jié)點是主master,哪些節(jié)點作為備用存在,它們將在主master離線時接管服務。
主master節(jié)點使用可插拔的分配模塊或調(diào)度算法來分發(fā)資源供給至各種調(diào)度器,從而決定將什么資源提供給某一特定的framework。調(diào)度器依據(jù)其上是否有任務需要執(zhí)行來決定接收或拒絕資源供給。
Mesos集群至少要求有一個master節(jié)點。在生產(chǎn)環(huán)境為了保證高可用性,推薦采用三個甚至更多的master節(jié)點。你可以將ZooKeeper在與master相同的機器上運行,或者使用獨立ZooKeeper集群。
slaves
在集群中負責執(zhí)行framework任務的服務器被稱為Mesos slave節(jié)點,它們訪問ZooKeeper來確定主master節(jié)點,將CPU、內(nèi)存、存儲資源以資源供給的形式宣告給主master。當調(diào)度器從主master接收資源供給后,在slave節(jié)點上啟動一個或多個執(zhí)行器,執(zhí)行器負責運行framework的任務。
Mesos slave也能夠基于屬性與資源進行配置,從而允許它們定制特定環(huán)境。屬性配置是鍵值對形式,可以包含類似于節(jié)點所在機房位置信息。資源配置可以替代Mesos自動探測發(fā)現(xiàn)slave節(jié)點的有效資源,并由用戶指定具體的CPU、內(nèi)存、磁盤資源信息。屬性配置與資源配置的示例信息如下:
在屬性配置中對Mesos節(jié)點的數(shù)據(jù)中心、節(jié)點位置、操作系統(tǒng)進行了說明,在資源配置中用戶指定了該節(jié)點提供的CPU、內(nèi)存和磁盤資源。在日常維護中,這些信息對保證應用在線運行不受影響特別有用。使用這些配置信息,數(shù)據(jù)中心的運維人員可以在整個機柜甚至整排機柜離線日常維護時不影響用戶。
frameworks
framework是表示Mesos應用的術(shù)語,它負責在集群上調(diào)度與執(zhí)行任務。framework由兩個組件組成:調(diào)度器與執(zhí)行器。
1 . 調(diào)度器
調(diào)度器是典型的長運行態(tài)服務,負責與Mesos Master連接,接收或拒絕資源供給。Mesos將調(diào)度的職責委派給了framework,而不是試著由自己調(diào)度所有的任務執(zhí)行。調(diào)度器基于當下是否有任務需要運行來決定是否接受或拒絕資源供給。調(diào)度器通過與ZooKeeper通信來探測主master的存在,之后將其自己注冊到master中。
2 . 執(zhí)行器
執(zhí)行器是在Mesos slave上啟動的一個進程,負責運行framework的任務。在本書寫作之時,Mesos內(nèi)建的執(zhí)行器允許framework執(zhí)行shell腳本、Docker容器等。Mesos支持多種編程語言執(zhí)行器,新的執(zhí)行器可以與framework綁定在一起,當任務需要它時由Mesos slave從framework獲取。
如你所看到的,Mesos提供了一個分布式、高可用的架構(gòu),master負責整個集群的調(diào)度工作,slave將有效資源通知調(diào)度器,并在集群中執(zhí)行任務。
本文選自《Mesos 實戰(zhàn)》,點此鏈接可在博文視點官網(wǎng)查看此書。
想及時獲得更多精彩文章,可在微信中搜索“博文視點”或者掃描下方二維碼并關(guān)注。
總結(jié)
以上是生活随笔為你收集整理的用Mesos分布式架构进行工作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到掉牙齿父母会有事吗
- 下一篇: 不一样的视角,程序员世界里的环保