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