Apache Mesos和数据中心操作系统的崛起

本文讲的是Apache Mesos和数据中心操作系统的崛起,【编者的话】本文是Mesosphere公司的工程师对他们公司产品DCOS的介绍,也顺带介绍了Mesos的架构和功能以及Mesos的init框架Marathon和Cron框架Chronos。

罗杰伊尼亚齐奥是Mesosphere的基础设施自动化工程师和“Mesos实践”的作者。 感谢曼宁出版的团队的慷慨,SysAdvent读者在在https://manning.com/books/mesos-in-action使用代码“mesysad”时享受40%的折扣。

容器和应用程序编排是热门话题,因为组织和工程团队试图尽可能快地部署应用程序和基础设施的更改,同时提高数据中心的整体效率。当你读到容器的文章时,提到Apache Mesos(论文)通常都不会太遥远。你可能想知道Mesos是什么,以及如何将它用于管理大规模应用程序。

在这篇文章中,我将提供Mesos的介绍,总结一些Linux内核和Mesos之间的比较,以帮助你了解它是如何工作的。我将覆盖两个开源项目,这两个项目让工程团队能快速,轻松地部署在集群上的应用程序和计划任务。最后,我将讨论Mesosphere是如何结合所有这些来创建数据中心范围内的操作系统,并以Mesos为核心。

MESOS - 分布式内核

无论你正在你的笔记本电脑,智能手机还是平板电脑上阅读这篇文章,很可能你不知道你的Web浏览器在使用它的哪个处理器的核心。当然你可以找到,但是何必呢?操作系统的内核为你处理资源的抽象和调度。最终,操作系统很可能压根儿就不关心那么多;你只想要一个来运行你所爱的应用程序的方式,操作系统是提供那种体验的一种手段。

Mesos,和操作系统内核没有什么不同,提供了一种物理或虚拟机之上的抽象资源的方式。但是,它开始和操作系统内核(如Linux)不同的是抽象未绑定到一台单个的主机。相反,Mesos提供了一种为任何数量的机器抽象资源的方式,从10几到超过10,000——并将它们编程为一个单一的实体,从而导致简化的系统管理和提高资源利用率​​。许多公司,如Apple、Twitter、 Airbnb、彭博社以及其他的公司已经转向Mesos来增强他们的计算基础设施。

为了更好地可视化我刚才解释的,看看下面的图,比较在一台机器上运行的Linux内核,以及多台计算机参加的一个Mesos集群之间的资源抽象和调度。

两种情况共有的是,一些抽象层 —— 无论是Linux内核的单一机器硬件还是Mesos的多台机器 —— 负责提供计算资源(处理器核心,内存,存储和网络端口)给应用程序。 Linux在一台机器上在这件事情上做出了出色的工作,但是当你想要把应用程序部署到多台机器上时会发生什么?每台机器实际上变成了一个筒仓,只能够提供也在那个盒子运行的应用程序的资源。

资源调度

尽管是一个近期热门的流行语,“资源调度”并不是一个新的概念。两个流行的例子是Linux内核中的完全公平调度器和VMware vSphere的分布式资源调度器(DRS)。在这两种情况下,这些调度器在可用资源的基础上寻求优化任务的调度。 Mesos从这两个调度器借用想法,并建立成一个抽象层,或者它自己的“分布式内核”。但是,不像Linux内核,它主要提供了访问一台机器上的底层物理(或虚拟)计算资源,Mesos代理为一个Mesos主节点提供资源,然后被各种应用程序使用。

Mesos主节点实现了一个两层调度模型,这使得Mesos主节点能发送资源供给给一个应用程序(或框架,用Mesos的说法)。然后,应用程序可以接受或拒绝这个供给,基于供给的属性,或者如果供给有任何任务要执行。Mesos主节点能够调度多个不同的资源类型——CPU,内存,磁盘,端口——在各种不同的应用中,通过内置到它的资源分配模块的优势资源公平算法。因此,取代供应多台计算机来运行特定服务的是你现在可以定义应用程序需求的资源量,并允许它在群集上的任何地方被调度。

静态分区的终结

让我们暂时退一步,并考虑以下情形。你有两个服务在你的数据中心:一个Ruby on Rails应用程序,和一个Jenkins CI集群。当其中一个服务需要比一台机器可以提供的更多的资源时,你提供更多的机器。如果你的Rails应用程序需要处理更多的用户,你需要提供一个新的服务器并重新配置您的负载均衡器。如果构建正在排队等候你的Jenkins CI主节点,你提供额外的詹金斯代理并手动将其连接到主节点。

这种情况表明,人类被留下进行徒手资源分配和容量规划,坦率地说,我们很不擅长。很有可能这些应用程序不会100%的时间都是100%的利用率运行,从而导致了令人失望的行业平均6-12%的系统利用率 。当你开始测算运营成本的整体利用率时, 这是一个很大的资本浪费!无论你是运行你自己的数据中心还是使用一个基础设施即服务提供者例如AWS或者Azure,他们都是在这一天结束时有未使用周期的服务器。

通过抽象系统资源,你能停止猜测特定应用程序需要的机器数量,而是集中在他们实际上的资源消费量——也就是运行你的Rails应用程序或你的CI服务的CPU和内存。只要数据中心的机器的数量提供了足够的资源来运行所有的工作负载,你就是在良好的状态。而如果不在,则可以将工作负载加入队列,直到资源可用为止。但关键是,你现在添加额外的计算资源是到更大的Mesos集群中,而不是一些小的、静态分区的服务或手动创建和配置虚拟机中。

容器化

和在20世纪兴起的货运行业的联运运输集装箱运动有许多相似之处,我们看到在IT行业的同样的运动,不过是以惊人的速度。事实上,在计算中使用容器不是那么新; 控制组 (或简称cgroup)第一次加入到Linux内核早在2008年1月,作为分离单个进程的方式。在过去的几年中, Docker最终用户开始使用这种技术变的令人难以置信的简单。

由于容器提供了虚拟机的轻量级替代,并允许用户在孤立环境中运行他们的应用,Mesos的内核是建立在容器之上,同时支持Linux cgroup和Docker容器。这些容器技术允许任务在与同一台机器上的其他任务不同的隔离水平上运行。

但作为一个分布式的内核,Mesos仅提供使用这些容器技术启动进程,处理像资源分配,端口和卷映射的方式。要启动使用Mesos的任务,我们需要一个init系统来管理任务,并且有一个cron系统和它一起会更好。

Marathon and Chronos —— init和cron框架

我已经提到,Mesos提供了一种多个应用程序( 或框架,使用Mesos术语)在给定的集群上共享多种不同类型的资源的方式。一个框架在Mesos 主节点上注册并接受资源供给。有许多不同的框架目前可用,包括大数据处理(Spark,Kafka),分布式存储和数据库(HDFS,Cassandra),批调度(Chronos,Aurora),以及长时间运行的服务(Marathon,Aurora)。我会集中讨论两个流行框架:Marathon和Chronos。这些框架分别用于部署长时间运行的服务(如Web应用程序)和分布式cron作业。

Marathon

Marathon 是由Mesosphere开发的Mesos的开源init系统。它大致相当于supervisord——管理长时间运行任务,并自动重新启动应用程序实例,如果它发生故障。因此,如果一台机器在群集中在半夜出现故障,马拉松自动在一个可用的机器重新调度出现故障的应用程序。

马拉松支持在Mesos集群上启动cgroup和Docker容器,并能快速简单地扩展应用到N个实例 。

马拉松还包括一个可扩展的的REST API,它允许您创建、修改和删除应用,以及查询有关运行实例的信息。这允许你在发生变化的时候使用你的CI系统自动执行应用的滚动升级 ,或者动态创建HAProxy的配置并重新启动服务。当涉及到应用管理时,Marathon允许你把你的调度中最糟糕的部分,人,从你的基础架构中去除。

Chronos

Chronos 是一个最初由Airbnb开发的Mesos的开源cron系统 。它建立在传统的cron功能至上,如ISO 8601格式时间戳,失败作业自动重试,指定任务应运行的最长时间,允许一个作业依赖其他作业的能力。像Marathon一样,它也支持在cgroup和Docker容器中运行任务,并提供了可扩展的REST API,可用于创建,修改,删除,和手动触发工作。

Mesosphere DCOS —— 基于Mesos的操作系统

如果你花一分钟思考,组成一个操作系统的组件,如Red Hat Enterprise Linux或Ubuntu,你可能会找出以下组件:

  • Init 系统: 一个守护进程(PID1), 例如 Systemd(RHEL 7)或Upstart(Ubuntu 14.04), 管理长时间运行服务,当它们失败时自动重启(或respawn)
  • 包管理: 一个包格式(rpm, deb), 包管理器(yum, apt), 一个基础仓库集合(base, main)
  • 命令行界面: 一个shell, 当用户登陆时启动(bash, zsh).
  • 图形用户界面: 一个可选的图形用户界面来观测和管理系统.

有了开源的Mesos项目作为它的分布式内核,Marathon作为它的init 系统,Mesosphere已经着手建立一个现代的分布式的企业级的操作系统。这个系统,称作数据中心操作系统(DCOS), 为系统管理员提供了一种不用关心例如对服务静态分区或在半夜机器故障的大规模部署应用和服务的方式。DCOS目前提供两种版本: 企业版和社区版

包管理

在写这篇文章的时候,Mesosphere提供了DCOS的两种包仓库: UniverseMultiverse。这些仓库分别托管生产可用的和测试的包。Universe的文档很好的覆盖了规范,这里我就不讲了。但是它本质上可以归结为一个JSON对象定义的包,可以被DCOS的CLI处理并被Marathon的API理解

命令行界面

DCOS CLI可以安装在你的笔记本或工作站上,并可以和DCOS的多个服务交互。它提供了在DCOS集群管理包、服务、节点的功能。

SERVICES=( chronos jenkins spark hdfs cassandra kubernetes )
for service in ${SERVICES[@]}; do
dcos package install --yes $service
done

这些服务中的一些——Cassandra,HDFS,Kubernetes——需要一些不平凡的努力来有效部署。Mesosphere的团队使用这些包仓库提供和维护了在你自己的数据中心部署这些服务的一键的全自动的容错的解决方案。

图形界面

尽管DCOS CLI允许你完全从命令行管理操作系统,web界面提供了集群的包括安装的服务,运行的任务以及属于这个集群的节点的信息

要部署你自己的应用和Docker容器,你可以使用CLI或者导航到Marathon的web界面(在Services tab选项卡中)。在那你可以创建一个新的应用,指定需要的资源,实例的数量,Docker容器镜像的信息,等等。虽然DCOS包含Marathon作为它的init系统,你也可以在Marathon之上部署多个Marathon实例,这样你可以为不同的团队提供他们自己的PaaS而不用担心他们的应用互相影响。

总结

Mesos提供了数据中心多台机器资源的抽象层,允许它们像一个实体一样来编程。使得多个应用能共享一个集群的机器而不用担心数据中心内的静态分区。Marathon允许你在集群上部署应用和长时间运行的服务,通过它的API获得的信息可以用来动态的创建负载均衡器的配置和在配置改变时重新加载配置。Mesosphere DCOS组合一系列开源的和商业的组件成为一个易于管理和部署的Mesos集群,允许你快速部署应用和容器。

所以,如果你想要提高你自己基础机构的资源利用和去除人类调度的瓶颈,或者你只是在寻找一些新的东西来玩,或许是时候来试一试Mesos和Mesosphere DCOS了。

原文链接:Day 6 - Apache Mesos and the Rise of the Datacenter OS(翻译:陈光)

原文发布时间为:2015-12-18

本文作者:Casgy 

本文来自合作伙伴DockerOne,了解相关信息可以关注DockerOne。

原文标题:Apache Mesos和数据中心操作系统的崛起

时间: 2024-09-11 16:43:20

Apache Mesos和数据中心操作系统的崛起的相关文章

Apache Mesos 和数据中心操作系统的崛起

Apache Mesos 和数据中心操作系统的崛起 容器和应用程序编排是热门话题,因为组织和工程团队试图尽可能快地部署应用程序和基础设施的更改,同时提高数据中心的整体效率.当你读到容器的文章时,提到Apache Mesos(论文)通常都不会太遥远.你可能想知道Mesos是什么,以及如何将它用于管理大规模应用程序. 在这篇文章中,我将提供Mesos的介绍,总结一些Linux内核和Mesos之间的比较,以帮助你了解它是如何工作的.我将覆盖两个开源项目,这两个项目让工程团队能快速,轻松地部署在集群上的

做数据中心操作系统的Mesosphere获7350万美元C轮融资

做数据中心操作系统的Mesosphere刚刚宣布获得了 7350 万美元的 C 轮融资. 由前 Twitter 与 Airbnb 工程师创立的 Mesosphere 其最初目标是实现数据中心资源管理系统 Apache Mesos 的推广.Mesos 可以将所有资源整合为大资源池,把数据中心当作一台大计算机来进行管理.前年年 底,Mesosphere 在原有工具基础上吸收了各种开源工具,开发出了业界第一套针对数据中心的操作系统 Mesosphere Data Center Operating Sy

数据中心操作系统的曙光

在过去的十年,从搜索引擎到社交网络再到SaaS,虚拟化已经成为软件的每一项主要趋势背后的关键驱动力.事实上,如果没有虚拟化所带来的服务器利用率的提升和相关成本的节约,那么,我们所使用的大多数的应用程序以及我们今天所知道的云计算均是不可能实现的. 但现在,新的云架构正在重塑整个数据中心.据我们所知,虚拟化已然无法再跟上这一趋势. 随着数据中心转型,虚拟化背后的核心:即把一台大型的.昂贵的服务器划分为多台虚拟机理念已然有了不同的含义.相反,并非分配个别服务器的资源,大量的服务器被合并为一个仓库规模的

让Kubernetes成为数据中心操作系统的一等公民

人们经常听到专家谈到混合IT基础架构,数据中心资源内部和由外部供应商托管的云服务组合,作为最终的企业IT设置.这使企业能够充分享受云计算的敏捷性的好处,并且仍可以保留其控制部署基础设施. 在2015Container技术峰会上,Ray Tsang,Open Source Contributor,Sr. Developer Advocate at Google的演讲<Kubernetes: Hybrid Cloud Container Clusters>让我们对Kubernetes有了更深入的了

48V架构在数据中心的崛起——记谷歌数据中心供电能效发展之路

谷歌宣布加入了OCP联盟,并贡献了其48V整机柜解决方案,根据相关会议资料,笔者简单整理了个相关资料供研究参考,由于水平有限,只是简单推导,仅供国内同行学习研究用途. 谷歌高级副总裁Urs Holzle介绍了如下谷歌数据中心能效发展之路:     2003年:开始倡导采用高效率PSU电源; 2004年:正式落地了12V高效率PSU电源; 2005年:开始采用集装箱来建设数据中心; 2006年:将铅酸电池安装到了服务器主板上,12V 板上UPS供电架构落地; 2007年:规模建设仓储式数据中心,并

为云准备 新数据中心网络释放代码数据

本文讲的是为云准备 新数据中心网络释放代码数据,IT标准化和商品化的后果之一是谷歌的数据中心是计算机对世界的看法.在所有计资源中,包括CPU,内存,存储都是可替代的.无论独立的位置,还是配件它们是可以互换的.未来,PC将失去失去主导地位,仅仅成为IT服务的一部分.   ▲数据中心网络架构图 访问失败已经是商业数据中心的最糟糕表现,引起这个问题的原因源于现在的网络结构状态上更容易搭配.MapReduce的著名代码也正因为如此而存储到各个节点. 网络环境的变更和假设条件的改变,将驱动软件基础架构驱动

强调单路性能/定位数据中心应用,AMD正式推出面向数据中心的处理器EPYC

在服务器处理器领域,英特尔绝对是一家独大,无人能比.90%以上的市场占有率,也充分证明英特尔X86服务器处理器已经基本处于垄断的地位,成为一方霸主. 作为竞争对手,AMD近几年一直拿不出像样的产品来与英特尔竞争,市场中我们也很难看到采用AMD处理器的服务器产品了.不过,这种局面,或许在AMD推出EPYC处理器后,将会得到改观. 6月21日,AMD EPYC处理器正式发布了,其相关技术参数和资料信息也正式对外公布.今天,笔者就对EPYC处理器进行简单的介绍分析,来看一下这到底是一款怎么样的产品.

深入浅出Mesos(一):为软件定义数据中心而生的操作系统

我讨厌"软件定义数据中心(SDDC)"这个词,并不是因为我质疑这个概念,而是我发现很多公司都对这个词有误用,他们甚至直接把这个词拿来套用,并急于把自己定位为下一代数据中心的创新者.具体来说,我认为,在商用x86硬件上运行软件(应用)并不是什么SDDC解决方案,它也不具备虚拟化硬件到资源池的能力.真正的SDDC底层基础架构应该可以从运行于其上的应用程序中抽象出来,并根据应用程序不断变化的需求,动态且自动地分配.重新分配应用程序,然后运行于数据中心的不同组件之中.这就是为什么我一直兴奋地要

Mesosphere发布全球首个数据中心操作系统

摘要: 统一调度所有数据中心及云资源并将数据中心当中一台大计算机管理的初创企业Mesosphere刚刚获得了3600万美元的融资,同时还发布了全球第一款数据中心操作系统. Mesosphere由前 Twitter 统一调度所有数据中心及云资源并将数据中心当中一台大计算机管理的初创企业Mesosphere刚刚获得了3600万美元的融资,同时还发布了全球第一款数据中心操作系统. Mesosphere由前 Twitter 与 Airbnb 的工程师创立,他们利用了在原雇主处建设数据中心的经验以及所采用