Author: Mao, James
Mesos 计算框架是一个开源的集群管理平台,他提供了高效的,高可靠的,跨应用/框架的资源隔离和共享,在其之上可以运行Hadoop,Spark,JBoss,Ruby On Rails等应用框架,支持多种资源的计划分配。其中主要的一个目的就是有效的利用和共享计算资源,避免资源的浪费。Mesos 起源于Twitter和AirBnB,Twitter和AirBnB的很多核心服务以及大数据基础架构就是建立在Mesos之上的。从Mesos开源开始就受到了业界广泛的关注,eBay 是最早将这个平台上搭建Jenkins CI的公司之一,同时我们也对完善这个系统做出了贡献,本文就eBay在Apache Mesos 上搭建Jenkins CI 做一个比较系统的介绍。
Jenkins CI的两种模式
eBay的Jenkins CI 采用的是独占模式,每个人都可以申请一台VM,预装好Jenkins,他的优点是独立,隔离,你在上面执行任务不会影响到其他人,其他人的任务也不会影响到你, 但是缺点也是明显的,一台VM往往有4个CPU,16GB的内存, 这样对资源造成很大的浪费,大部分的时间你申请的VM都处于闲置状态。
Payal 的CI 采用的是Master/Slave模式, 统一的入口界面,但是你提交的任务是提交到Slave 集群上,这样的好处是大家共享Slave集群资源,不必每人独占VM, VM的数量肯定大幅下降,但是缺点是Jenkins Master/Slave配置不灵活,Master需要知道所有的Slave节点的信息,而且不能做到资源自动化的增加和回收。
利用Apache Mesos/Marathon就可以很好的解决以上两种模式的缺点。让资源最大力度地的优化,同时配置也灵活并且自动化。
什么是Mesos?
Mesos是 Apache top level 的项目,是集群管理软件,用以有效利用计算资源,构建一个高可用、容错的、可伸缩的系统。他为分布式的应用和框架提供有效的资源隔离和共享。在此之上你可以运行Hadoop, Hypertable, Spark, Marathon, JBoss, Ruby on Rails, Memcache, Jenkins CI等应用框架。
Mesos 充分利用了当前流行的cgroups(Linux), zones (Solaris)中提供的CPU/内存/IO/文件系统的隔离特性。Mesos想要做的是将如此多样的计算资源整合在一起,对使用者来说就像一台超级计算机。之前你的架构可能是将不同的应用部署在不同的集群上,比如,为了Jenkins CI, 你搭建了一个集群,为了Jira系统,你搭建在另外一个集群上,为Hadoop,你又建了一个集群。Mesos的目的就是将所有这些集群的资源整合起来,而你的这些应用通过Mesos部署在这个大的集群上,就像你在一台超级计算机上安装了不同的软件一样。
Google也有类似Mesos这样的项目的 Borg” 和 “Omega”。这些就是Google集群管理的秘密武器。(warehouse-scale computing)