你想要运行Docker容器,可是如何在超大规模环境下运行Docker容器?Apache Mesos也许是解决之道。本文作者解释了个中原委。
虽说众多企业如何部署Docker容器、何时部署仍需拭目以待,但它们是否部署Docker容器不再是个问题。不过,如何大规模地部署Docker容器方面仍然存在许多悬而未决的问题。
近日,Docker公司宣布推出Swarm,该产品为容器化的分布式应用程序提供了原生集群功能。为什么这个产品很重要?用Docker的话来说,因为它“可以将一批Docker主机变成单一的虚拟主机”,而且让它们更容易大规模地管理。不过,这里的关键字眼是规模。对于大型的Docker集群而言,该公司建议使用Apache Mesos来编排Docker特大集群。
Matt Trifiro
为此,我采访了Mesosphere公司高级副总裁Matt Trifiro,以了解内幕和真相,弄明白为什么Docker+Mesos是一长串绝佳搭档的最新组合,就像花生酱和果冻、牛奶和饼干那样完美。
TechRepublic:眼下容器炙手可热;正如Docker宣布Swarm表明的那样,用Apache Mesos实现规模化后,容器会更加炙手可热。您认为眼下为什么容器炙手可热?Docker与Apache Mesos之间到底有着怎样的联系?
Trifiro:开发人员对Docker超级感兴趣,但为什么是眼下?Linux容器自2006年以来就存在了,当时谷歌将Linux容器引入到了Linux内核中。容器这个最初构想实际上是由Sun公司在近二十年之前就提出来的!
Docker的秘诀在于,它们简化了容器的创建。Docker容器现在是用来封装和部署服务的新兴模式。
而Docker又是一家聪明的公司。长期以来,我们就一直与他们密切合作,我们的工程师通过与之合作,优化用Apache Mesos和Mesosphere数据中心操作系统(DCOS)大规模编排和调度Docker容器的工作。
因为,将容器推向到生产环境听起来似乎很容易,实际上牵涉诸多问题。
是的,Docker让开发人员极其容易封装应用程序。但是你也不得不搞定运营方面,如果你想把应用程序带到规模相当大的环境,更是如此。换句话说,它需要完全跟将应用程序推向到云端(无论是AWS还是其他提供商)一样容易,让它做应该做的事情,而且需要多次运行,从不停运、从不烦人。
这却并非易事。
而这也是为什么Docker和Mesos如此完美地相辅相成。Docker不光明白客户对我们技术的业务需求,还明白可用性、规模和性能等方面非常深层次的挑战,Mesos和Mesosphere可以克服这些挑战。至于在运营方面,企业希望在如何生产环境下管理和扩展容器方面拥有灵活的选择。
于是,我们热烈欢迎Docker决定为开放系统提供可插入的后端部分,而不是指定单单一种方法。我们还认为,Mesos和DCOS为企业大规模运行容器提供了最实用的方法,所以我们为自己的产品与Docker Swarm整合以支持那些Docker用户感到兴奋。
TechRepublic:在什么样种类的使用场合下,你会使用Mesosphere Swarm整合机制以实现Docker编排,而不是单纯使用Docker普通的Swarm功能特性?
Trifiro:我能想到两种明确的使用场合,Mesosphere可能比普通的Docker Swarm解决方案更适合工作负载方面的要求。
第一种就是超大规模使用场合。要是哪家公司企业想在高度自动化的环境下,跨成百上千台服务器(无论放在内部还是云端)下大规模运行容器,都应该考虑使用Swarm以及我们的技术。
Mesosphere的技术是唯一在大规模环境下已得到证实的可为公众获得的容器编排系统,在推特、Groupon和Netflix等公司以及世界上几家最大的消费类电子产品和金融服务公司运行数以百万计的容器。
另一种使用场合就是我所说的多租户环境,这种环境具有工作负载多样性的特点。
只有运用Mesosphere的技术,企业才可以在处理其他类型的工作负载的同一个集群上,以一种高度灵活的方式,运行Docker Swarm工作负载。比如说,你可以在同一个Mesosphere集群上,在运行Docker Swarm的同时运行Cassandra、Kafka、Storm和Hadoop。所有这些工作负载都可以灵活地共享同一资源。
这样一来,大大提高了利用集群资源的效率,并且大大降低了运营成本和复杂性。
TechRepublic:回过头来再说说你的观点:编排容器并非易事。我认为,Docker的核心原则之一是简单性。您能不能透露更多的细节?
Trifiro:将容器推向到生产环境听起来像是简单的想法,它也应该很容易。
但是“推向到生产环境”涉及好多方面。
我如何大规模运行容器?我把它推向到哪里?我是否一定要把它推向每个机器,并为它们在哪里运行而操心?某个机器出现故障,或者整个架顶式交换机瘫痪,会发生什么情况?面对所有那些故障情况,你该如何来解决?你如何实现自动愈合,那样没有人在半夜里接到传呼而需要通过SSH连接到单个设备?我是不是非得配置每台机器?
这些都是很可能出现的问题,但实际解决起来要困难得多。
Mesosphere自动为使用Docker容器的开发人员解决了这些问题。开发人员希望将Docker容器扔到云端尽可能容易――无论是扔到亚马逊上、你自己的硬件上、私有云,还是公有云上,并且让它做应该做的事情。如果你有一个新版本,让你可以轻松地将这个新版本推向到那里。
这就是开发人员关注的方面,他们关心的是将代码推向到生产环境后,就可以让代码正常运行,既没必要戴寻呼机,也没必要担心给运营团队添加负担。Mesosphere的架构可以在任何云或私有基础设施上运行,从亚马逊、微软、OpenStack、VMware到裸机,不一而足。我们希望确保,Docker Swarm应用程序在我们的平台上可以在任何基础设施之间随意移植。
英文原文:Docker and mesos like peanut butter and jelly