2016年會火的技術之一, Mesos。 花了一些時間, 將Mesos相關的知識整理了一下, 以做備忘。 水平有限, 如有疏漏或謬誤之處, 還望指出。
Mesos是一個集羣管理平臺。 可以理解爲是一種分佈式系統的kernel, 負責集羣資源的分配, 這裏的資源指的是CPU資源, 內存資源, 存儲資源, 網絡資源等。 在Mesos可以運行Spark, Storm, Hadoop, Marathon等多種Framework(框架)。
Mesos的架構主要有Masters(主節點), Slaves(從節點), 和 及在Mesos上運行的Framework(框架)組成。 各個部分的分工如下:
Master: 負責處理Slave節點和Framework間的資源通訊, 根據指定的策略來決定分配多少資源給framework。
Slave: 啓動本地進程, 同時向Master報告有哪些資源可用。
Framework: 接收來自Master提供的Slave節點的資源(如CPU和內存), Framework由調度器(負責監控和管理Slave的狀態)和執行器(負責在服務器執行應用程序代碼)組成。
Mesos的安裝部署
需要從官網下載源碼進行編譯安裝, 具體的操作請自行google。 或者參考Mesos的官方文檔http://mesos.apache.org/documentation/latest/getting-started/ 或者國內對官方文檔的翻譯 https://mesos-cn.gitbooks.io/mesos-cn/content/primer/Mesos-of-Getting-Started.html
Mesos的生態
Mesos本身只提供資源的分配, 並不涉及存儲, 任務調度等功能, 所以它要和其它軟件或者系統搭配使用才能構成完整的分佈式系統。 Mesos, Docker, Marathon/Chronos, RabbitMQ, HDFS/Ceph構成了一個完整的分佈式系統, 分別負責資源分配, 進程管理,任務調度, 進程間通信和文件系統的功能。 這裏可以和Linux做一個橫向的比較。 如圖1所示:
Docker: 一個開源的應用容器引擎, 它涉及基礎技術有Linux cgroup和namespace, 以及AUFS。 Docker可以理解爲更輕量級的虛擬機。
Marathon: 針對服務型分佈式應用提供任務調度,比如企業網站等這類需要長時間運行的服務。
Chronos: 針對分佈式批處理應用提供任務調度,比如定期處理日誌或者定期調Hadoop等離線任務。
RabbitMQ: 一種消息隊列, 企業級的消息系統。
HDFS: 即Hadoop分佈式文件系統, 提供高吞吐量的數據訪問, 適合大數據集的分佈式應用。
Ceph: 一種分佈式文件系統, 開源存儲解決方案, 提供對象存儲。
除了上述講到的分佈式系統最基本的五大組件外, 分佈式系統還涉及到其它的組件, 如負載均衡器, 服務發現器, 系統性能監控器, 系統告警監控器, 對應的軟件分別有HAproxy, Zookeeper, Ganglia, Zabbix等
HAproxy: 是一個輕量級的TCP/HTTP的代理, 提供負載均衡功能,支持數以萬計的併發。
ZooKeeper: 分佈式系統涉及服務發現(分佈式系統有多個實例, 系統要知道實例是要通過哪個ip哪個端口去訪問, 才能對它進行調度,這個就是服務發現), 這個要配合ZooKeeper來做, 將要調度的實例的地址和端口寫到ZooKeeper。
Ganglia: 是UC Berkeley發起的一個開源集羣監視項目,設計用於測量數以千計的節點。Ganglia的核心包含gmond、gmetad以及一個Web前端。主要是用來監控系統性能,如:cpu 、mem、硬盤利用率, I/O負載、網絡流量情況等
Mesos的競爭者
常被人們當做Mesos的競爭者的有Kubernetes。 Kubernetes是google開源的集羣管理器, 它的前身是Borg。
二者各自有優勢和劣勢。
Mesos優勢: 起步較早, 有成熟的生態和企業應用。
Mesos劣勢: 所有的調度器沒有對微服務進行抽象。
Kubernetes優勢:對微服務有很好的支持, 其Pod, Service, NameSpace都是對微服務的很好的抽象。
Kubernetes劣勢: 目前企業的應用實例比較少。
Mesos的企業應用
Mesos現在被用在生產環境中已經有一段時間了。
國外:
國外企業有Apple, Twitter, Netflix, Verizon, Autodesk等, 其中Apple已經有75000個節點的實際應用。
國內:
國內企業有去哪兒網, 數人科技。 其中去哪兒網的具體應用是將日誌分析全部託管到Mesos平臺,其詳細的應用實踐可以見參考文獻4. 其容器規模在600+。
數人科技則是基於Mesos打造了Paas平臺。
參考文檔: