一個完整的mesos集羣業務
master節點
mesos需要3個以上的節點組建高可用的master集羣(官方文檔建議是5個,實際使用大家常用3個);由開源軟件Zookeeper來監控。Zookeeper會監控Master集羣中所有的節點,並在Master節點發生故障時管理新Master的選舉。當Master節點發生故障時,其狀態可以很快地在新選舉的Master節點上重建。 Mesos的狀態信息實際上駐留在Framework調度器和Slave節點集合之中。當一個新的Master當選後,Zookeeper會通知Framework和選舉後的Slave節點集合,以便使其在新的Master上註冊。彼時,新的 Master可以根據Framework和Slave節點集合發送過來的信息,重建內部狀態。
Framework調度器
Framework調度器(Scheduler),可以單獨放在任意節點上(包括某一個master上)
Framework調度器的容錯是通過Framework將調度器註冊2份或者更多份到Master來實現。當一個調度器發生故障時,Master會通知另一個調度來接管。需要注意的是Framework自身負責實現調度器之間共享狀態的機制。
Slave
Mesos實現了Slave的恢復功能,當Slave節點上的進程失敗時,可以讓執行器/任務繼續運行,併爲那個Slave進程重新連接那臺Slave節點上運行的執行器/任務。當任務執行時,Slave會將任務的監測點元數據存入本地磁盤。如果Slave進程失敗,任務會繼續運行,當Master重新啓動Slave進程後,因爲此時沒有可以響應的消息,所以重新啓動的Slave進程會使用檢查點數據來恢復狀態,並重新與執行器/任務連接。
執行器/任務
與計算節點/Slave節點故障類似,Master會向分配任務的Framework調度器彙報執行器/任務失敗,並允許調度器根據其配置策略在任務失敗時做出相應的處理。通常情況下,Framework在接收並接受來自Master的相應的資源邀約後,會在新的Slave節點上重新啓動任務。
slave節點的容錯
Master負責監控所有Slave節點的狀態。當計算節點/Slave節點無法響應多個連續的消息後,Master會從可用資源的列表中刪除該節點,並會嘗試關閉該節點。