剖析Docker Swarm和Mesos:是什么?如何结合?有什么优势?

jopen 6年前

本文来自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集群中出现故障时,例如当一个机架坏了或者一些服务挂掉了,这些服务是可以自动被重启的,并且每一个都是可以自动重连接的,就像海星在没有人工干预的情况下,自己长出了另外一个手臂。

通过整合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