博客
关于我
Mesos 资源分配
阅读量:794 次
发布时间:2023-02-08

本文共 2353 字,大约阅读时间需要 7 分钟。

众所周知, Mesos在运行时使用wDRF( Dominant Resource Fairness)算法进行一级资源分配, 通过应用程序(Framework)运行时使用资源进行二级资源调度。以此来达到资源分配的公平性和灵活性。但在资源有限的情况下,对于尚未部署的程序如何分配资源?为此Mesos提供了两种方式,基于指定节点(Agent)的资源预留(reserve)和基于整个集群的资源配额(quota)。这种资源管理方式间接的划分了整个集群的资源。

附:其中 --weights 参数已不被推荐使用。

1. 资源预留 (reserve & unreserve)

resource reserve 针对 具体的节点(agent)进行,在启动或运行期间通过master对某个agent进行操作。

Mesos在 0.14.0版本中加入了静态资源预留功能,在 0.23.0 版本中加入了动态资源预留功能。所谓静态即在节点加入集群时进行配置且运行后不能修改, 动态即运行时配置并修改(资源预留、取消资源预留)。这两种方式都基于角色(Role)来完成。同时为了保证角色的使用,提供了ACL和认证/授权。

1.1 静态资源预留

静态资源预留可以分为两种方式(层次、颗粒度)。粗颗粒度是节点层面,细颗粒度是CPU、Mem等。粗粒度的本质还是细粒度,只是由内部实现绑定各类资源的全部份额。

其配置方式通过在agent启动时 --resources指定,如: --resources="cpus:4;mem:2048;cpus(ads):8;mem(ads):4096"
即 为ads角色保留8 cpus和4g mem。

1.2 动态资源预留

动态资源预留可以由Framework或User来执行。Framework可以在收到资源的时候调用reserve来保留。User或其他管理工具,可以调用http接口来完成。如

curl -i \      -u 
:
\ -d slaveId=
\ -d resources='[ { "name": "cpus", "type": "SCALAR", "scalar": { "value": 8 }, "role": "ads", "reservation": { "principal":
} }, { "name": "mem", "type": "SCALAR", "scalar": { "value": 4096 }, "role": "ads", "reservation": { "principal":
} } ]' \ -X POST http://
:
/master/reserve
1.3 节点层面

每个节点都有一个默认角色, 通过 启动时的 --default_role 参数控制, 默认值为*, 这是一个特殊标识,标识该资源未被保留,任何未指定role的Framework可以使用该资源,同时这些资源也可以通过动态保留接口来分配给其他指定的role。在节点启动时也可以指定其他默认角色,如slave_public,角色名需要符合规范(不能包含空白字符, 符合Linux目录命名规则,参见代码 或文档。

输入的角色名应该在白名单中,即master启动时指定的--roles参数中。在0.27版本以后,该参数没有指定值时,可以输入任何角色名。同时配合ACL,保障角色被授权使用。

1.4 Role 层面

对于空的whitelist,即未指定白名单时,role可以为任何符合命名规则的值。

1.5 Framework层面

目前Framework和Role是多对一。未来可以支持多对多的关系,即一个Framework可以使用多个role,一个role也可以被多个Framework使用。参见 , 消息代码 

Framework对role的设置则通过acl来进行控制。

2. 资源配额 (quota)

同资源预留,配额也基于Role进行。配额为role分配在整个集群中的资源,而不具体到指定的节点上。配额包含已经通过reserve在某些节点上进行预留的资源。配额不能被Framework的API调用操作,只能通过http接口操作(配合ACL来授权调用)。

配额目前支持添加、查询、删除。具体参见文档 

由于配额是在运行期间设置,对于已经被Framework给占用的资源,是无法剥夺的,除非Framework运行结束。因此为配额预留的资源不会分给使用其他role运行的Framework。

配额不能针对端口这种资源。目前,Mesos只提供配额的绝对值的最小设置方式(也就是说不能提供相对比例的最大分配)。在资源充足的情况下,可以超过配额限制的资源。

3 ACL & Authorization

ACL为以上操作提供鉴权,ACL提供了两种实现方式,local模式和custom模式。使用哪种模式由参数--authorizers指定,默认值为local。local模式通过在master启动时指定--acls来进行配置。对于custom模式,则需要编写mesos的module,在启动时加载。

local规则和custom authorizer,参见文档。

4 authentication

Mesos默认使用sasl框架来进行用户认证,也可以通过加装自定义的认证模块来修改认证方式。

Authentication默认不启用。

转载地址:http://ihyfk.baihongyu.com/

你可能感兴趣的文章
MAC 上的 Selenium,消息:“chromedriver“可执行文件可能具有错误的权限
查看>>
Mac 下 Python+Selenium 自动上传西瓜视频
查看>>
mac 下 react Native ios环境搭建
查看>>
Mac 下使用sourcetree操作git教程
查看>>
mac 下如何建立vue-cli项目
查看>>
Mac 也需要杀毒?我亲测三款顶级杀毒软件,保护你的数据安全!从零基础到精通,收藏这篇就够了!
查看>>
Mac 在命令行快速切换目录 mark
查看>>
mac 安装PIL
查看>>
Mac 开发PhoneGap 应用,怎样加入插件 barcodescaner
查看>>
mac 搭建APK反编译环境[转]
查看>>
MAC 显示隐藏文件
查看>>
Mac 的“任务管理器” —— 活动监视器
查看>>
mac 虚拟机安装oracle 11g,MAC+Vmware Fusion安装Oracle11g RAC
查看>>
mac 配置环境变量,讲的太仔细了,非常棒
查看>>
mac-gradle的安装和配置
查看>>
mac/ip/TCP/udp报文格式与理论大小
查看>>
Mac:Permission denied XXX
查看>>
macaca 测试web(2)
查看>>
Macbook / pro卡顿怎么处理?这些方法让它满血复活!
查看>>
MacBook Air怎么重新输入wifi密码
查看>>