`
m635674608
  • 浏览: 5027021 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Apache Mesos(4)-Mesos的资源调度、分配及隔离机制

 
阅读更多

出处: https://andyyoung01.github.io/ 或 http://andyyoung01.16mb.com/

前面的文章,我们对Mesos架构已经有了基本的认识,并且也安装配置了一个有3个主节点的高可用集群。虽然我们目前还没有实际在集群上部署Frameworks来运行具体的任务,但后面的文章我们会详细探索Marathon、Chronos和Aurora等框架。现在我们先更深入得了解一下Mesos的资源调度、分配及隔离机制。

Mesos的资源调度机制

Mesos实现了一个两层的调度系统:Mesos slave将它的可用资源汇报给master,然后master通过可插拔的分配模块(Allocation module)向Framework的schedule发出资源邀约,这个schedule可以接受整个、部分或者拒绝这个资源邀约。如下图所示:

  1. Mesos slave向master通告它的资源:8CPUs,16GB内存,64GB磁盘可用空间。星号(*)表示这些资源属于默认角色(default role)。我们后面会介绍到角色。
  2. Mesos的分配模块决定master应该向Framework A的schedule发出资源邀约。
  3. Framework A的schedule接受了资源邀约的一半的资源,剩下4CPUs,8GB内存及32GB的可用磁盘空间给其它程序。
  4. Mesos的分配模块决定master应该将所有剩下的未分配的资源通告给Framework B的schedule。

上面的过程一直重复不断地进行,因为每过一段时间,slaves会因为任务运行完毕而空出可用的资源来。

因为大部分的程序都需要一定的CPUs,内存,磁盘及网络,Mesos预定义了一些资源。

  • 默认资源 - 默认情况下,来自于Mesos slave的资源通告包括:
    • cups
    • mem
    • disk
    • ports

在mesos-slave启动时,系统的空余资源决定了上面这些值。

关于资源通告的以及Mesos系统架构的其它信息,可以参考官方文档 http://mesos.apache.org/documentation/latest/architecture/ 。

当slave持续不断地将自己的可用资源通告给master时,Mesos的另一个部分,可插拔分配模块,负责决定哪个Framework应该得到给定的资源邀约。

Mesos的资源分配机制

Mesos master的分配模块(Allocation module)决定了将资源分配给某个Framework。此模块可插拔的特性,允许系统工程师根据自己组织的需要,来实现他们自己的分配策略和算法。内置的分配模块使用的是Dominant Resource Fairnes(DRF)算法,它可以满足大部分Mesos用户的需要。

关于默认的分配模块和算法的更多信息,请参考 http://mesos.apache.org/documentation/latest/allocation-module/ 。

Mesos默认提供了几种方法来对资源分配进行调整,而不需要替换或者重写整个分配模块。这些方法包括 角色 , 权重 和 资源保留 。

角色

在Mesos集群中,角色允许您将Frameworks和资源分成任意的组。

要使用角色,需要在启动master时加入–roles的配置选项。例如,下面的配置允许Frameworks以三个在数据中心里常见的角色注册:

--roles="dev,stage,prod"

之后,当Framework要在master上注册时,Framework可以指定为这些角色中的任意一种。这就允许许多团队或许多环境来共享一个大的Mesos集群,而不用创建多个小的集群。您也可以使用角色来确保特定类型的工作只运行在特定的一组机器上,例如负载均衡器或反向代理只运行在专用的边缘节点上。

权重

集群也可以给每个角色配置权重,来使不同的角色对于资源的分配有不同的优先权。当Mesos决定将资源先分配给哪个Framework时,它先将资源分配给最低于该权重的合理份额的Framework。例如,参考如下配置:

--weights="dev=10,stage=20,prod=30"

具有prod角色的Frameworks将得到比具有dev角色的Frameworks的三倍的资源。

资源保留

虽然权重可以确保某个角色得到比其它角色更多的资源,但Mesos也提供资源保留的方法。资源保留确保某个角色总是可以得到slave的一定的资源,但这样做可能会导致整个集群使用率的降低。

假如有一台机器有16CPUs,32GB内存,128GB磁盘,你想要确保这台机器有一半的资源总是可以提供给以prod角色注册的Frameworks,可以这样在这台Mesos slave机器上配置:

--resources="cpus(prod):8; mem(prod):16384; disk(prod):65536"

手动配置Mesos slave的资源和属性

前面几节我们知道资源可以分配给slave上的一定的角色,也可以配置资源保留。但如果您想创建定制的资源或想重写slave上资源的默认的值呢?和Mesos中的其它东西一样,资源通告的内容也是可配置的。当你想引入一些新的资源,或者想将CPUs和内存等资源硬编码到资源通告中,这个特性是非常有用的。

手动配置Mesos slave的资源

Mesos提供了三种数据类型来指定资源: 标量,范围,和集合 。

  • 标量:cpus资源给定值8;mem资源给定值16384。
  • 范围:端口资源给定从10000到20000的值。
  • 集合:磁盘资源给定值ssd1,ssd2,和ssd3。

可以使用与资源保留类似的方式指定slave资源:

--resources="cpu(*):4; mem(*):8192; disk(*):32768; ports(*):[40000-50000];cpu(prod):8; mem(prod):16384; disk(prod):65536"

手动配置Mesos slave的属性

属性可以是任意的键/值对,用来给master或Frameworks提供关于机器的一些数据。可以这样设置:

--attributes="datacenter:pdx1; rack:1-1; os:rhel7; pythons:python2,python3"

关于怎样配置Mesos slave资源和属性的更多信息,请参考 http://mesos.apache.org/documentation/latest/attributes-resources 。

Mesos的资源隔离机制

容器是榨取您的基础设施效率的一个非常理想的方法。容器比起虚拟机来更加轻量级,并且允许您在一个与其它负载隔离的环境中运行程序和代码。Mesos中的一个基础理念是使用容器隔离进程是使用计算资源最有效率的方式。

Mesos默认支持Linux cgroups和Docker,两种当下最流行的容器技术。通过在容器中运行executors和任务,Mesos slave允许多个Framework的executor一起运行,而不影响其它负载。这有点像在每个物理机上同时运行多个虚拟机,容器不用启动整个操作系统而比虚拟机轻量化许多。

Mesos的一个基础的组件称为containerizer。可以使用 –containerizers配置选项在Mesos slave上配置,目前包括两个containerizer:mesos和docker。mesos配置使用cgroups隔离和监视负载;docker配置调用Docker容器运行时,允许您在Mesos集群上启动已经编译好的镜像。

除了containerizer,Mesos也提供其它方法隔离资源。包括posix/cpu和posix/mem(默认),cgroups/cpu和cgroups/mem。怎样使用对资源的隔离和监视呢?是通过在slave上,给–isolation配置选项提供参数列表,来实现的。

本篇文章,我们更深入得了解了Mesos的资源调度、分配及隔离机制,下面我们使用Marathon来实际运行一个任务。

 

http://www.tuicool.com/articles/JzYvi23

分享到:
评论

相关推荐

    Apache Mesos Cookbook-Packt Publishing(2017)【E文】

    Apache Mesos是一个开源的分布式资源管理和工作调度平台,可以高效地在集群上分配计算资源,并为各种类型的分布式系统提供支持。它最初由Berkeley的AMPLab开发,并于2014年成为Apache软件基金会的顶级项目。 #### ...

    mesos-0.18.0-rc3.zip

    2. **资源隔离与调度**:Mesos提供了基于CGroups和命名空间的资源隔离,并采用公平共享调度算法,确保资源的有效分配。 3. **容错机制**:Mesos设计为高可用,可以容忍Master节点的故障,通过多Master复制实现。 4...

    mesos-spark-源码.rar

    Apache Mesos是开源的分布式系统内核,它为大规模集群提供资源调度和管理。Mesos的设计灵感来源于数据中心的操作系统,能够有效地分配和管理硬件资源,支持多种分布式应用,包括Hadoop、Spark等。Mesos源码的解析将...

    Apache Mesos Essentials

    它将涉及如何编写Mesos框架,以及如何利用Mesos提供的调度器接口来实现资源调度策略。开发者可以从本书中学到如何为自己的应用程序提供容错和扩展的能力,以及如何在Mesos集群上进行应用部署。 通过本书,读者可以...

    Apache+Mesos+官方文档_1.01

    总之,Apache Mesos 是一种强大的资源管理平台,通过资源邀约机制和模块化架构实现了高效、灵活的资源调度。框架开发者可以利用 Mesos 提供的抽象层,设计出能够在大规模集群中运行的分布式应用程序,同时保持其独立...

    mesos-1.4.3.tar.gz

    1. **资源隔离**:Mesos 1.4.3 提供了多种资源隔离机制,如 Cgroups 和 Docker 容器,确保任务之间的资源竞争得到有效控制,提高集群稳定性。 2. **多框架支持**:Mesos 支持多种框架,如 Marathon (持续服务)、...

    PyPI 官网下载 | cgcloud-mesos-1.4a1.dev276.tar.gz

    Mesos的核心特性包括资源隔离和调度,它允许运行多种框架,如Hadoop、Spark、Kubernetes等。而"cgcloud-mesos"库则为Python开发者提供了与Mesos交互的接口,使得Python应用能够轻松地利用Mesos的资源管理和调度能力...

    juice一套基于MesosFramework的分布式任务调度云系统

    Juice与Mesos的结合,让开发者可以专注于应用程序的开发,而无需关心资源调度和管理的细节。Juice作为Mesos上的一个框架,它提供了用户友好的接口,简化了任务提交、监控和管理的流程。在Juice中,开发者可以定义...

    Mesos实战 中文+英文

    在Mesos实战中,读者还将学习到如何实现资源隔离,如何利用Mesos的特性如公平调度、DRF(Dominant Resource Fairness)策略来优化资源分配。此外,书中还会探讨如何结合Docker容器技术,利用Mesos Docker容器化应用...

    Mesos.in.Action.2016.5.pdf

    具体讨论了Mesos的架构设计、资源抽象模型以及资源调度机制。此外,还介绍了如何通过Mesos来实现资源隔离、资源共享以及资源优化等关键功能。 ##### 第二部分:核心Mesos(Core Mesos) **第3章:设置Mesos** 该...

    mesos-microhttpd-framework

    4. **资源隔离**: 利用Mesos的资源隔离机制,每个HTTP服务实例都能获得其所需的确定性资源,避免资源竞争。 5. **容错性**: 通过Mesos的自动故障检测和恢复机制,当某个Mesos slave失效时,Mesos Master会重新调度...

    mesos系列文章

    3. **资源调度**:Mesos如何通过其调度器实现资源的分配和回收。 4. **容错与高可用**:Mesos如何处理节点故障,保证集群的稳定性。 5. **框架开发**:如何编写与Mesos兼容的应用框架,例如 Marathon 或 Spark。 6. ...

    藏经阁-Microservices on DC OS and Container Orchestration on Mesos.

    Mesos的资源分配机制确保了高效地使用集群资源,同时保证服务的高可用性。 **容器编排在Apache Mesos上** Mesos不仅支持容器化,还提供了强大的容器编排功能。它能够自动处理服务的部署、扩展、监控和更新,确保...

    archive-mesos-coreos-cluster-example:CoreOS 上的多主机 mesos 集群

    在Mesos集群中,master节点负责资源调度和管理,而worker节点则执行实际的任务。 **知识点详解** 1. **Mesos架构**:Mesos由master节点和slave(在现代版本中称为worker)节点组成,master节点负责资源分配和任务...

    Mesos是云计算下一个热点,云运维与PaaS有刚需.pdf

    这种机制被称为两级调度模型,即Mesos本身负责管理主机的物理资源,然后将这些资源分配给不同的框架去执行应用程序。这样的架构使得不同的计算框架可以高效地在同一个数据中心内共存,每个框架之间共享资源,且相互...

    高洪涛:当当基于 Mesos 的 DevOps 实践.zip

    - Mesos 提供了一个统一的抽象层,将数据中心的硬件资源(如 CPU、内存、磁盘和网络)视为一个整体进行调度和分配。 - Mesos 支持多种框架,如 Marathon (用于持续服务)、Spark (用于大数据处理) 和 Chronos (用于...

    mesoslxc:适用于LXC容器的Apache Mesos外部容器化器和执行器

    Apache Mesos是一款分布式系统内核,它为数据中心的资源调度和管理提供了抽象。Mesos能够高效地管理和分配计算、存储和其他资源,支持多种框架,如Hadoop、Spark、Kubernetes等。在Mesos中,执行器(Executor)是...

    360_Mesos container在360广告系统的应用.rar

    1. **资源调度**:Mesos的Master节点负责全局资源调度,根据任务需求和资源可用情况,将广告投放、数据分析等任务分配到不同的Worker节点上。这种自动化调度极大地减少了人工干预,提升了部署效率。 2. **弹性伸缩*...

Global site tag (gtag.js) - Google Analytics