在去年(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是专门设计用来管理大规模容器的。这些高性能的系统在一些世界上***的数据中心的生产环境中已经身经百战很多年了,例如Twitter,几乎完全是在Mesos上面运行的。
在成百上千台机器上协调和调度大规模的容器,与在单台机器或者100台机器上运行容器是截然不同的。当你按比例增加已有的100台机器,可能的故障面和性能瓶颈就会以指数级复杂度增长。
在数据中心中,机器故障随时可能出现,磁盘故障随时可能出现,网络也随时可能出现.......管理故障以及把故障展现出来就需要像Mesos和Mesosphere DCOS这样高度专业的系统。从Mesoshere的立场来说,你是想把计算机的集群看成是一个黑盒,然后要把你的应用扔进去(例如使用Docker Swarm)并运行,如果一些不好的情况出现了,你希望系统可以自己去修复它。
Mesos和Mesosphere DCOS是专门设计在数据中心中管理容器, 并解决企业在运行生产级别的应用过程中所面临的挑战。例如,Mesoshpere的技术是:
高可用性,生产环境中关键工作常常需要五个或五个9以上的可靠性,以及高度的自动化。为要达到这个要求,Mesos已经做了多年攻坚。
容错,当一些不好事情发生时,一个服务器,一个机架,或者网络出故障了, Mesos有能力自动地辨别并处理这些故障。
自我修复,当一些东西在Mesos或者Mesosphere
DCOS集群中出现故障时,例如当一个机架坏了或者一些服务挂掉了,这些服务是可以自动被重启的,并且每一个都是可以自动重连接的,就像海星在没有人工干预的情况下,自己长出了另外一个手臂。通过整合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的特性以及可扩展的架构。