摘要:既然都在关注DCOS,但“这货到底是啥”你造吗?
故事还得从最近很火的浙江移动说起。最近,该运营商凭借一条“DCOS发力双11”的新闻成功火了一把,主要是讲他们自己搭建了一套基于开源Mesos + Doker技术的DCOS(数据中心操作系统),而且很魄力地将一个服务于上千万用户的重要生产系统迁移其上,同时后端搭配天玑数据PBData数据库云平台的强劲支撑,最终完美度过了今年 “双11”秒杀的高峰压力。一时间“DCOS”这个词迅速引发业内围观。“它到底是何方神圣?”“为何功能如此强大?”如果你也对它感到好奇,就请毫不犹豫地往下看吧!
“嗨!DCOS,你从哪里来?”
在回答这个问题前,不妨先回顾一下国际先进互联网公司数据中心资源管理系统的发展史。早在十多年前,Google就开始使用第一代集群管理Borg技术管理数据中心。随后Twitter从Google的Borg系统中得到启发,开发了一个类似的资源管理系统帮助他们摆脱可怕的“失败之鲸”。2009年加州大学伯克利分校AMPLab首先开发出Apache Mesos,这是一款开源集群管理软件,其核心研发成员Benjamin Hindman随后将其引入Twitter,于是Twitter、Facebook、苹果等大型IT企业开始陆续打造各自特色的基于Mesos的数据中心管理方案。
2012年,围绕Mesos开展商业活动的初创公司Mesosphere诞生,而Benjamin Hindman也以Mesosphere首席架构师的身份投身其中。正是该公司提出了基于Mesos的DCOS(数据中心操作系统),希望企业能像使用一台计算机一样使用整个数据中心。
认识DCOS,从Apache Mesos入手
为了更好地理解DCOS,最好先了解一些Apache Mesos的背景知识。
1.Mesos适合作为数据中心哪一层的抽象?
IaaS层抽象的是机器, PaaS则更多考虑部署、管理应用/服务。在交互方面,PaaS可能是和开发者直接交互,而Mesos则是以API的形式和软件程序交互。
换句话说,你可以基于Mesos之上构建一个PaaS系统(比如Marathon),同时你还可以在一个IaaS上(比如Openstack)运行Mesos。因此,当Mesos运行在一个组合系统之上,就能直接跨越底层组件去管理和计划上层工作负载。
不过Mesos现在还需要与其它分布式系统配合使用。目前已有不少分布式系统直接构建于Mesos之上,包括Apache Spark,Apache Aurora,Airbnb的Chronos以及Mesosphere的Marathon等。此外还有多个流行系统与Mesos相连并运行于其上,如Apache Hadoop,Apache Storm,Google的Kubernetes等。
2.Mesos亮点一:两级调度机制
Mesos以Framework的形式,提供了两级调度机制,将任务的调度和执行分离。面对各种类型的任务,在调度阶段,由Framework的 Scheduler(调度器)以资源邀约的形式向Mesos Master申请资源;在执行阶段,由Framework的Executor(执行器)执行任务。
如图所示,Mesos实现了“两级调度机制”,它可以管理多种类型的应用程序(图中只展示了Hadoop和MPI两种类型)。
深入学习“两级调度机制”
Mesos Master协调全部的Mesos Slave,并确定每个节点的可用资源,聚合计算跨节点的所有可用资源的报告,然后向注册到Master的Framework(作为Master的客户端)发出资源邀约。
Framework根据应用程序的需求,选择接受或拒绝来自Master的资源邀约。一旦接受邀约,Master即协调Framework和Slave,调度参与节点上的任务,并在容器中执行,使得多种类型的任务可在同一个节点上同时运行。
3.Mesos亮点二:围绕Framework建设的生态系统
在Apache Mesos的术语中,使用Mesos API在集群中调度任务的Mesos应用程序称为Framework(框架)。
Mesos另一个显著亮点就是围绕Framework建设的生态系统了。一旦将任务调度委托给Framework 应用程序,以及采用插件架构,就能直接打造Mesos问鼎数据中心资源管理的生态系统。因为每接入一种新的Framework ,Master无需为此编码,Slave模块可以复用,使得在Mesos所支持的宽泛领域中,业务迅速增长。而开发者就可以专注于他们的应用和Framework的选择。
下图为不断增长的Mesos Framework列表:
4.所以,Apache Mesos是__?
可以说,Apache Mesos是为构建和运行其他分布式系统提供服务的分布式系统。它将CPU 、内存、存储介质以及其它计算机资源从物理机或者虚拟机中抽象出来,构建支持容错和弹性的分布式系统,并提供高效的运行能力。Mesos使用与Linux 内核相同的系统构建原则,只是它们处在不同的抽象层次上。Mesos内核运行在每台机器上,通过应用程序Framework ,提供跨整个数据中心和云环境进行资源管理和调度的API。
基于Mesos的DCOS其实是Mesos衍生的生态系统之一注解文字
下图是基于Mesos衍生的生态圈。值得一提的是,像Twitter、Airbnb、苹果这样的大公司几乎都是自己搭建基于Mesos的基础设施。但开源的Mesos是一项非常尖端的技术,通过开源工具手工装配,并将Mesos用于生产环境是非常高难度的。这也是Mesosphere DCOS的价值所在。Mesosphere推出的DCOS,具备和Twitter、苹果公司同等的能力和自动化效果。
下面介绍三种基于Mesos衍生的生态系统:
1.Mesosphere DCOS
从Mesosphere官网了解到,Mesosphere DCOS是以 Mesos为“核心”,与其周边服务及功能组件所组成的一个生态系统。它跨越数据中心或云环境中的所有主机,将所有主机的资源放入一个资源池,使所有主机的行为整体上像一个大计算机。
Mesosphere DCOS内部架构图
由图可见,Mesosphere DCOS除了内核Mesos,还有两个关键组件Marathon和Chronos。其中,Marathon(名分布式的init)是一个用于启动长时间运行应用程序和服务的框架,Chronos(又名分布式的cron)是一个在Mesos上运行和管理计划任务的框架。此外,Mesosphere DCOS还有Mesos-DNS这样的插件模块,它类似一个CLI,一个GUI又或者是提供你想运行的所有的包的仓库等工具。
Mesosphere DCOS 可以运行在任意的现代Linux环境,公有或私有云,虚拟机甚至是裸机环境,当前支持的平台有亚马逊AWS,谷歌GCE,微软Azure,Openstack等等。据Mesosphere官网显示,Mesosphere DCOS在其公有仓库上已提供了40多种服务组件,比如Hadoop,Spark,Cassandra, Jenkins, Kafka, MemSQL等等。
2.浙江移动与天玑联合研发的DCOS
下图为该DCOS内部架构示意:
由图可见,“核心”Mesos负责集群中所有节点资源的动态调度与管理。其上还包括DCOS管控平台,容器应用框架等重要功能组件。该运营商表示,上述DCOS平台不仅具备灵活弹性的伸缩能力,为系统提供高效的平行扩展来应对突发的业务高峰,而且Mesos与Docker的结合极大简化业务运维复杂度,实现自动化部署与应用程序升级,Mesos还可为资源管理提供高容错性,自动辨别服务器、机架或网络出现的故障等。
3.苹果公司基于Mesos重建的Siri后端服务
在MesosCon 2015上,苹果公司分享了在生产环境中使用Mesos的经验。原来苹果用了近一年时间从原有的基于VM的环境迁移到基于Mesos的环境。他们使用Apache Mesos重建了个人助理软件Siri的后端服务,并创建了一个名为J.A.R.V.I.S.而且类似PaaS的专有调度Framework,由此,开发者可以部署可伸缩和高可用的Siri服务。据说其Mesos集群规模保守估计有10,000个节点,支持Siri应用程序的后台系统包括约100种不同类型的服务,应用程序的数据则存储在Hadoop分布式文件系统(HDFS)中。从基础设施的角度来看,使用Mesos 有助于使Siri具备可伸缩性和可用性,并且还改善了iOS 应用程序自身的延迟。
结束语
此刻,你是否已经对Mesos和DCOS有了新认识呢?其实近年来,随着云计算的快速普及,Docker为代表的容器技术如火如荼,企业用户越来越关注基于云计算的下一代IT架构变革,而软件定义数据中心(SDDC)的理念也逐渐被接收。Mesos技术正是在这样的大环境下应运而生,有了基于Mesos的数据中心操作系统,企业可以方便地对数据中心资源进行统一管理,这无疑是IT架构质的飞跃。相信不远的未来,以Mesos为代表的一系列SDDC技术将成为业内的新热点。