對于在線服務(Service),由伏羲Master負責ServiceMaster的啟動與狀態監控,處理相應Service Master的資源申請請求。Service Master負責管理Service Worker的任務分配、生命周期管理以及Failover的管理。
對于離線任務(Job),伏羲Master負責Job Master的啟動與狀態監控,處理相應JobMaster的資源申請請求。Job Master根據用戶輸入的Job描述文件,將任務分解成一個或以上的Task,每個Task的資源申請、Task Worker的調度和生命周期維護由Task Master負責。
1. 在線服務調度
在飛天平臺內核中,每個Service都有一個ServiceMaster和多個不同角色(Role)的Service Worker,它們一起協同工作來完成整個服務的功能。Service Master是伏羲Master管理下的子Master(Child Master),它負責這個Service相關的資源申請、狀態維護以及故障恢復,并定期與伏羲Master進行交互,確保整個Service正確、正常地運行。每個Service Worker的角色和執行的動作,都是由用戶來定義的。
每個ServiceWorker負責處理一個到多個數據分片(Partition),同一時刻一個分片只會被分配到一個Service Worker處理。將數據分割成為互不相關的分片,然后將不同分片給不同Service Worker來處理是構建大規模應用服務的關鍵特性。數據分片是一個抽象的概念,在不同的應用中有不同的含義。
在服務運行的過程中,每個Service的數據分片的數目和內容都是可以動態變化的,應用程序可以根據實際需要對數據分片動態地進行加載(Load)、卸載(Unload)、分裂(Split)和遷移(Migrate)等操作。
2. 離線任務調度
在飛天平臺中,一個離線任務(Job)的執行過程被抽象為一個有向無環圖(Directed Acyclic Graph,DAG):圖上每個頂點對應一個Task,每條邊對應一個Pipeline。一個連接兩個Task的Pipeline表示前一個Task的輸出是后一個Task的輸入。
每個離線任務都有一個JobMaster負責根據用戶輸入的任務描述(Job description)構造DAG和調度DAG中所有Task的執行。每個Task的Task Master會根據要處理的實例數量、數據在集群的分布及處理實例的資源需求,向伏羲Master申請機器資源并分配Task Worker在其上執行。分配到每臺機器上的實例(Instance)是由Task Worker來具體執行完成的。每臺機器上的Task Worker可以根據需要選擇多線程或者多進程的不同運行模式。
在離線Job的容錯方面,除了提供對異常機器的黑名單機制、長尾Instance的后備Worker機制外,伏羲還提供了快照 (Snapshot)機制??煺帐荰ask級別的容錯機制。如果一個Task的n個Instance在前一次運行失敗時完成了m個,那么Task重啟后只會重新調度運行剩余的n−m個Instance。
集群監控和部署
1. 集群監控(神農)
神農(Shennong)是飛天平臺內核中負責信息收集、監控和診斷的模塊。它通過在每臺物理機器上部署輕量級的信息采集模塊,獲取各個機器的操作系統與應用軟件運行狀態,監控集群中的故障,并通過分析引擎對整個飛天的運行狀態進行評估。
神農系統包括Master、Inspector和Agent三個部分。
Master:負責管理所有神農Agent,并對外提供統一的接口來處理神農用戶的訂閱(Subscription)請求,在集群中只有一個Master。
Inspector:是部署在每一臺機器上的進程,負責采集當前機器和進程的通用信息,并實時發送給該機器上的神農Agent。
Agent:是部署在每臺物理機器的后臺程序。Agent負責接受來自應用和 Inspector寫入的信息。Agent啟動后,會立刻向Master注冊自己,并根據Master發來的訂閱(Subscription)命令執行相應的信息采集、過濾、聚合和處理操作。目前神農Agent處理的數據分為兩類:事件類數據(如應用程序故障和報警)和數值類數據(如當前應用的性能計數、機器I/O吞吐量等)。
神農的用戶通過Master來訪問神農系統,以數據訂閱(Subscription)的方式獲取神農系統采集到的信息。
神農的MonitorService和AnalysisService是使用神農系統的兩個應用程序。
MonitorService在集群中的一臺機器上部署,通過向各個Agent發送特定的監控請求,并根據配置設定的規則,實現對集群的狀態和事件的監控,以及報警和記錄。
AnalysisService也是部署在集群中的一臺機器上,通過訪問神農來獲得主要性能數據,然后聚合數據并計算出系統的總體資源情況(例如,集群的總資源消耗、總I/O吞吐量等),并且向外提供計算結果供查詢。
2. 集群部署(大禹)
大禹(Dayu)是飛天內核中負責提供配置管理和部署的模塊,它包括一套為集群的運維人員提供的完整工具集,功能涵蓋了集群配置信息的集中管理、集群的自動化部署、集群的在線升級、集群擴容、集群縮容,以及為其他模塊提供集群基本信息等。每個飛天模塊的發布包都包含一個部署升級的描述文件,定義了該模塊部署和升級的流程,提供給大禹使用。
在結構上,大禹包含了集群配置數據庫、節點守護進程、客戶端工具集等部分。
集群配置數據庫負責存放和管理所有部署了飛天的集群的配置信息,包括集群中每個節點承擔的角色、各個模塊的軟件版本、各個模塊的基本參數配置等。同時,數據庫中還記錄了部署或升級時每個節點的任務執行狀態,保證了在部署或升級時少量不在線節點可以在重新連線后進行自動修復。
節點守護進程運行在集群的每一個節點上,負責與集群配置數據庫同步該節點相關的集群信息,執行節點相關的具體運維任務,并匯報任務執行狀態。節點守護進程本身是自我升級的,只需部署一次,即能保證運行的是該集群最適合的版本。在模塊軟件部署和升級的過程中,節點守護進程還負責軟件的下載分發,為了保證效率和規避單點故障,軟件的分發采用P2P的方式進行。
客戶端工具集是運維人員實際使用的命令行工具和網頁界面,運維人員通過這些工具對集群進行部署、升級、擴容、縮容等具體操作。大部分操作都提供了自動化和人機交互執行兩種方式,分別適應簡便操作和精細化控制這兩種場景。在部署和升級的過程中,客戶端工具負責控制總體的操作順序,維護模塊之間的依賴關系,并根據狀態信息決定是否回滾或中斷當前流程。
原文轉自:http://kb.cnblogs.com/page/183553/