Apache Mesos(2)-Mesos的分布式架构

目录
  1. Masters
  2. Slaves
  3. Frameworks
    1. scheduler
    2. executor

作者:杨冬 欢迎转载,也请保留这段声明。谢谢!
出处:https://andyyoung01.github.io/http://andyyoung01.16mb.com/

为了提供可扩展的服务,Mesos提供了分布式的、容错的架构,并且可以对资源进行细粒度的分配、调度。这个架构主要由三个模块组成:mastersslaves,和应用(通常称为frameworks)。Mesos依靠Apache ZooKeeper,一种用于在集群内协同领导者选举的分布式数据库,来进行领导节点的选举。

“Mesos架构”

Masters

一个或多个Mesos masters负责管理集群中运行在每台机器上的Mesos slaves。使用ZooKeeper,来协调哪个节点将是leading master(主领导者节点),哪个节点将是备用节点,备用节点将在leading master节点不可用时接管。
主领导者节点使用pluggable allocation module,或者叫做调度算法,来决定把某个资源分配给某个framework,这个framework上的schedule根据当时此节点是否有任务在执行来接受或者拒绝这个resource offers。
一个Mesos cluster需要最少一个master,对于生产部署,为了服务的高可用,推荐使用3个或者多个master。您可以将ZooKeeper部署到与Mesos masters相同的节点上,也可以使用一个单独的ZooKeeper集群。

Slaves

集群中负责执行某个框架的任务的机器被称为slaves。它们查询ZooKeeper来确定哪个是主领导者节点,从而进行资源通告。当某个schedule接受了一个来自于Mesos master的资源通告后,它在slave上启动一个或多个executors。这个executors是负责执行framework的任务的。
Mesos slaves也可以配置特定的属性和资源,用来为某个特定的环境定制。属性是一个键/值对,可能包含特定的信息,如该节点在数据中心的位置。资源允许使用用户提供的值来重写Mesos自动检测到的该节点的可用资源。当服务进行定期维护时,这个信息可以用来确保某个程序保持在线状态。而且,数据中心的操作员可以使用这些信息来进行例行维护,而不影响到用户的使用。

目前Mesos社区正在努力将角色Mesos slave重命名为Mesos agent。Mesos较新的版本会使用agent这种命名方式。更多信息请参考https://issues.apache.org/jira/browse/MESOS-1478

Frameworks

任何负责在集群上调度或执行任务的Mesos应用程序都可以称为framework。一个framework是由两个部分组成的:schedule和executor。

scheduler

scheduler是一个典型的长期运行的服务,它负责连接到Mesos master上面,接受或者拒绝资源通告。Mesos将调度的任务委派给framework,而不是试图将所有的调度工作都放在master上。scheduler可以根据在接到资源通告时是否有任务可以运行来接受或者拒绝一个资源通告。它通过与ZooKeeper集群进行通信来探测主领导者节点,然后将其自身注册到相应的主领导节点上。

executor

executor是一个进程,它在Mesos slave节点上运行某个framework的任务。当前内建的Mesos executors允许frameworks执行shell脚本和运行Docker容器。可以使用各种类型的语言来写新的executors,将其绑定到framework中,从而在某个任务需要时,由Mesos slave来获得。

到目前为止,您已经知道Mesos提供一种分布式的,高可用的架构。下篇文章我们介绍Mesos的基本安装和配置。