使用Apache Mesos打造分布式资源调度系统

Netflix使用Apache Mesos运行了一系列批处理、流式处理,以及服务类型的工作负载。两年多来,我们创建了层出不穷的用例,例如实时异常检测、批处理作业的训练和模型构建、机器学习编排,以及基于Node.js的微服务。最近发布的Apache Mesos 1.0意味着这项技术已经成熟,相比我们首次使用该服务时已经有了巨大的改进。

我们最初使用Apache Mesos的动力主要在于该技术能够将来自同一个EC2实例的资源更为细化地分配给不同规模的任务。如果不使用Mesos或其他类似的资源管理器,将无法为数量日益增加的实例进行更细化的分配,导致无法获得令人满意的利用率,或只能自行开发类似于Mesos的技术,至少也要开发出其中的部分功能。

越来越多的流式处理和批处理作业开始使用容器,这也推动了基于Mesos的资源调度技术的使用。最近开发者已经可以从基于Docker的容器通过Mesos集群获得一系列服务类型的工作负载。本文将概括介绍Netflix工程团队使用Apache Mesos打造的一些项目。我们将介绍该技术所满足的不同用例,以及每个用例是如何高效使用这种技术的。有关每个项目的进一步细节请参阅下文给出的博文链接。

使用Apache Mesos打造云端原生调度机制

为了从不同EC2实例为任务分配资源,我们需要一种能对可用资源进行调度,并能在分布式EC2实例上启动和监控任务的资源管理器。Apache Mesos可将要使用集群的“框架”的资源分配,与框架任务的资源调度区分处理。当Mesos确定要将多少资源分配给框架后,将由框架的调度器决定在什么时候将哪些资源分配给哪个任务。这样的调度器是一种相当简单的API,因此也能更专注于调度逻辑,并对分布式系统中不可避免出现的故障做出回应。借此用户可以针对不同用例编写不同调度器,不像Mesos那样为所有用例使用一个统一的调度器。下图来自Mesos文档,展示了“框架1”收到“代理1”的指令启动两个任务的过程。

使用Apache Mesos打造分布式资源调度系统

一段时间来,Mesos社区已经出现了多种针对不同用例的调度器,并为用户提供了相应的API。

Netflix在AWS EC2弹性云中运行了多个微服务。在原生云环境中运维Mesos集群要求我们必须确保除了与数据中心内部运维类似的任务外,调度器还能同时处理另外两方面内容:运行任务的代理寿命更短暂,以及Mesos代理集群具备根据需求变化自动伸缩的能力。另外我们所处理的用例需要实现一种比类型的分配更先进的资源调度机制。例如按照CPU、内存,以及网络带宽的用量将多个任务装箱(Bin packing)到不同代理,借此实现资源碎片最小化。装箱还可以帮助我们释放尽可能多的代理,在不影响运行中任务的前提下终止空闲代理,让代理集群的扩张速度放缓。

为找出现有调度器在此类能力方面的缺失,去年我们开发了一种名为Fenzo的调度库。Fenzo可以根据需求自动缩放代理集群,并根据由健康标准(Fitness criteria)和约束组成的多种调度目标为任务分配资源。这些健康标准和约束可通过插件进行扩展,并具备少量内建的通用实现,例如为了实现高可用跨越EC2可用区对作业进行任务装箱和分散。JVM上运行的任何Mesos框架都可使用Fenzo Java库。

Netflix对Mesos的运用

目前我们通过Apache Mesos集群运行了三个项目。

Mantis

Mantis是一种以原生云服务方式运行的反应式流处理平台,主要侧重于运维数据流的处理。Mantis包含多种不同用例,例如实时仪表盘、预警、异常检测、衡量指标生成,以及流数据的即席交互式探索。我们使用Mantis主要是为了简化团队成员访问实时事件和以此为基础构建的计费应用程序的过程。目前Mantis的事件流处理能力已高达每秒800万条事件,可不间断运行数百个流处理作业。我们有一个此类作业主要侧重于视频内容的处理,可以针对内容提供细化的洞察,例如巴西地区iPad上播放纸牌屋第四季第一集时遇到了问题。这一功能需要不间断追踪数百万不同的数据排列组合方式。

Mantis平台包含一个主(Master)集群和一个代理(Agent)集群。用户可以将流处理应用程序以作业的形式提交,并在代理集群内一个或多个工作进程(Worker)上运行。主集群会使用Apache Mesos中包含的Fenzo调度库优化作业工作进程的资源分配。这种分配操作的目标之一在于将需要持续不间断运行的流处理作业与只需要短时间运行的交互式作业分布到不同代理上,这样当短时间运行的作业运行完毕后,即可收缩代理集群的规模。下图展示了Mantis的体系结构。来自不同作业的工作进程可以通过基于Cgroups的资源隔离机制在同一个代理上运行。

使用Apache Mesos打造分布式资源调度系统

Titus

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7725f3a16f26a396c9fde912ef083303.html