剖析Docker Swarm和Mesos:是什么?如何結合?有什么優勢?
本文來自Mesosphere,從生產環境的需求出發,簡要介紹了Docker Swarm的誕生背景,以及其與Mesos、 Mesosphere DCOS之間的關系,同時,也闡述了Mesosphere管理大規模容器的方式以及它和Swarm是如何結合的。
在去年(2014)12月份的歐洲DockerCon上,Docker首席技術官Solomon Hykes說Mesos是生產環境下運行大規模可擴展容器集群的黃金標準,這對于每個使用Apache Mesos和Mesosphere Datacenter Operating System(DCOS,數據中心操作系統)的人來說應該感到萬分的榮幸。
這也正是容器成熟的標志:現在Docker已經完成了,甚至我們都開始討論大規模的容器應用。2006年, 谷歌第一次對外介紹容器化組件cgroups和namespaces,可以說這是現代Linux容器的開端。然而Docker的真正工作是簡化容器的創建,并讓這些容器可以作為開發人員和系統管理員標準化、配置、交付應用的最好方案。
今天宣布Docker Swarm的意義何在?
把一個容器放到生產環境中聽起來很簡單,然而卻有很多事情要做。
Docker的確可以讓你輕松的打包一個應用,但是你還想讓應用在其它方面也變得簡單,比如在運維方面。你還想要很容易就把應用扔到云里,比如 Amazon、自己的硬件環境、私有云或是公有云,并且它可以按照需求運行很多次,永遠不會宕機,也不會麻煩你。如果應用有了新版本,Docker可以讓你以優雅的方式來升級。這才是開發人員所關心的(他們關心的是把代碼推送到生產環境,然后應用就一直運行,既不需要帶一個BP機,也不會有IT人員的打擾)。這些事情看起來簡單卻不容易做到。
Docker Swarm就是Docker提供的一個解決方案,它可以無縫管理容器集群,所以今天發布的Swarm就是真正的為了讓企業用戶能夠部署和管理大規模容器。
我們認為Docker Swarm發布最酷的部分應該是“batteries included but swappable(可插拔式的架構)”。簡單的說,這個意思就是當你需要規模化生產的時候,你可以開始使用Docker Swarm,并“換入(swap in)”Mesosphere。我們認為他們做了一個偉大的社區決定, 就是鼓勵用戶在容器集群調度和協調上面可以自我選擇和創新,而不是只規定一種方式。
Mesosphere管理大規模容器的方法
Mesos和Mesosphere DCOS是專門設計用來管理大規模容器的。這些高性能的系統在一些世界上最大的數據中心的生產環境中已經身經百戰很多年了,例如推ter,幾乎完全是在Mesos上面運行的。
在成百上千臺機器上協調和調度大規模的容器,與在單臺機器或者100臺機器上運行容器是截然不同的。當你按比例增加已有的100臺機器,可能的故障面和性能瓶頸就會以指數級復雜度增長。
在數據中心中,機器故障隨時可能出現,磁盤故障隨時可能出現,網絡也隨時可能出現.......管理故障以及把故障展現出來就需要像Mesos和 Mesosphere DCOS這樣高度專業的系統。從Mesoshere的立場來說,你是想把計算機的集群看成是一個黑盒,然后要把你的應用扔進去(例如使用Docker Swarm)并運行,如果一些不好的情況出現了,你希望系統可以自己去修復它。
Mesos和Mesosphere DCOS是專門設計在數據中心中管理容器, 并解決企業在運行生產級別的應用過程中所面臨的挑戰。例如,Mesoshpere的技術是:
- 高可用性,生產環境中關鍵工作常常需要五個或五個9以上的可靠性,以及高度的自動化。為要達到這個要求,Mesos已經做了多年攻堅。
- 容錯,當一些不好事情發生時,一個服務器,一個機架,或者網絡出故障了, Mesos有能力自動地辨別并處理這些故障。
- 自我修復,當一些東西在Mesos或者Mesosphere
DCOS集群中出現故障時,例如當一個機架壞了或者一些服務掛掉了,這些服務是可以自動被重啟的,并且每一個都是可以自動重連接的,就像海星在沒有人工干預的情況下,自己長出了另外一個手臂。
</ul>
通過整合Docker Swarm和Mesophere,你可以使用Docker工作流(Docker workflow)來創建和打包你的應用,然后借助Mesosphere DCOS和Mesos協調和調度容器,你完全可以運行你的應用,并且它們是可擴展且高可用的。
數據中心規模的多組織用戶管理
在傳統系統中,在相同的數據中心運行多種類型的工作,需要運維團隊為每種工作定制機器的集群。所以,比如說你想運行Docker Swarm和Spark,你需要為Docker Swarm創建一個集群,再為Spark創建一個集群。這就在數據中心中創建了很多倉庫(silos),每個類型的工作都需要分開的集群管理,也不容易實現數據和資源的共享。
Mesos和Mesosphere DCOS是唯一有能力讓Docker Swarm和其它應用給你運行在同一個集群上。包括大數據應用,例如Spark、Storm、Kafka以及Hadoop。這也提高了資源的使用,同時減少了消耗和復雜性。
使用了Mesosphere DCOS之后,你可以通過一個簡單的命令把Docker Swarm安裝為一個數據中心服務,并且Docker Swarm和其它數據中心服務一樣運行在相同的集群上,例如大數據服務。大量的數據中心服務還可以同時運行,Mesos也會彈性地與Dokcer Swarm共享資源。
Mesos上的Docker Swarm是如何工作的
Mesos上的Docker Swarm直接使用Mesos的API,這就意味著它可以完全兼容Mesosphere DCOS,這也使得Docker Swarm同Marathon、 Cronos、Spark、Storm、Hadoop以及Cassandra一樣成為Mesos和Mesosphere生態系統里面的一等公民。
使用Mesos API集成Docker Swarm的好處是在保持對Docker Swarm的完全兼容的情況下,使用Mesos特性過程中可以提供最大的靈活性。在Mesos上的Docker Swarm可以使用最新的Docker Swarm特性,同時可以利用Mesos和Mesosphere DCOS的特性以及可擴展的架構。
原文鏈接:Docker Containers at Scale (Our Take on Docker Swarm)(翻譯:左偉 校對:郭蕾)
===========================
譯者介紹
左偉,就職于IBM,軟件工程師,現從事于DevOps相關的研究,實現和推廣。
來自:http://dockerone.com/article/213