用Mesos分布式架構進行工作
引言:2010年,一個旨在解決擴容問題的項目誕生——Apache Mesos,它在某種程度上對CPU、內存、磁盤資源進行抽象,從而允許整個數據中心如同單台大服務器般運轉。無需虛擬機和操作係統,Mesos創造了一個單獨底層的集群為應用提供所需資源。
本文將向您簡單介紹Mesos分布式架構,詳細討論請見《Mesos 實戰》一書。
Mesos通過引入一層抽象,提供了一種像管理單台大服務器般的方法來管理整個數據中心。你可以認為Mesos與當今虛擬化解決方案類似:像hypervisor一樣抽象物理CPU、內存、磁盤資源,之後以虛擬機形式呈現。Mesos做相同的事情,但其將資源直接提供給應用。
除了提升整體資源的利用率外,Mesos還一開始就支持分布式、高可用及容錯。通過使用容器技術,如Linux control groups (cgroups)和Docker,Mesos實現了進程間隔離,允許多個應用運行在同一機器上。你也許曾搭建過三個集群,分別運行著Memcached、Jenkins CI和Ruby on Rails應用,現在你隻需部署一個Mesos集群就可以運行所有的應用了。
為了提供規模化服務,Mesos提供了一套分布式、容錯性架構來完成資源的細粒度分配。這套架構包括三個組件:master、slave及運行在其上的應用本身(通常稱為framework)。Mesos依賴於Apache ZooKeeper,一個分布式的數據存儲係統,專用於集群內的協調同步leader投票選舉,以及Mesos master、slave和framework間的leader發現。
在下圖中,你能夠看見這些架構組件如何在一起工作,從而提供一個穩定的平台來部署應用。
Mesos架構圖,包括一個或多個master、slave和framework
masters
Mesos master的職責是管理集群中在每台機器上運行的Mesos slave守護進程。通過ZooKeeper和master之間協調哪個節點是主master,哪些節點作為備用存在,它們將在主master離線時接管服務。
主master節點使用可插拔的分配模塊或調度算法來分發資源供給至各種調度器,從而決定將什麼資源提供給某一特定的framework。調度器依據其上是否有任務需要執行來決定接收或拒絕資源供給。
Mesos集群至少要求有一個master節點。在生產環境為了保證高可用性,推薦采用三個甚至更多的master節點。你可以將ZooKeeper在與master相同的機器上運行,或者使用獨立ZooKeeper集群。
slaves
在集群中負責執行framework任務的服務器被稱為Mesos slave節點,它們訪問ZooKeeper來確定主master節點,將CPU、內存、存儲資源以資源供給的形式宣告給主master。當調度器從主master接收資源供給後,在slave節點上啟動一個或多個執行器,執行器負責運行framework的任務。
Mesos slave也能夠基於屬性與資源進行配置,從而允許它們定製特定環境。屬性配置是鍵值對形式,可以包含類似於節點所在機房位置信息。資源配置可以替代Mesos自動探測發現slave節點的有效資源,並由用戶指定具體的CPU、內存、磁盤資源信息。屬性配置與資源配置的示例信息如下:
--attributes='datacenter:pdx1;rack:1-1;os:rhel7'
--resources='cpu:24;mem:24576;disk:409600'
在屬性配置中對Mesos節點的數據中心、節點位置、操作係統進行了說明,在資源配置中用戶指定了該節點提供的CPU、內存和磁盤資源。在日常維護中,這些信息對保證應用在線運行不受影響特別有用。使用這些配置信息,數據中心的運維人員可以在整個機櫃甚至整排機櫃離線日常維護時不影響用戶。
frameworks
framework是表示Mesos應用的術語,它負責在集群上調度與執行任務。framework由兩個組件組成:調度器與執行器。
1 . 調度器
調度器是典型的長運行態服務,負責與Mesos Master連接,接收或拒絕資源供給。Mesos將調度的職責委派給了framework,而不是試著由自己調度所有的任務執行。調度器基於當下是否有任務需要運行來決定是否接受或拒絕資源供給。調度器通過與ZooKeeper通信來探測主master的存在,之後將其自己注冊到master中。
2 . 執行器
執行器是在Mesos slave上啟動的一個進程,負責運行framework的任務。在本書寫作之時,Mesos內建的執行器允許framework執行shell腳本、Docker容器等。Mesos支持多種編程語言執行器,新的執行器可以與framework綁定在一起,當任務需要它時由Mesos slave從framework獲取。
如你所看到的,Mesos提供了一個分布式、高可用的架構,master負責整個集群的調度工作,slave將有效資源通知調度器,並在集群中執行任務。
本文選自《Mesos 實戰》,點此鏈接可在博文視點官網查看此書。
想及時獲得更多精彩文章,可在微信中搜索“博文視點”或者掃描下方二維碼並關注。
最後更新:2017-06-01 10:01:27