Slurm资源管理架构

1、Slurm架构

​ 通过集中式的slurmctld来管理和控制资源,充当控制节点。每个计算节点都有一个守护进程,称为slurmdslurmdbd 负责记录在数据库中slurm所管理的集群信息。通过slurmrestdREST APISlurm交互。还有一些命令行工具,来实现对作业的处理以及分区、节点等维护。

2、slurmctld

slurmctld是模块化和多线程的,为各种数据结构提供独立的读写锁,以增强可扩展性。控制器包括以下子系统:节点管理器、分区管理器和作业管理器。

  • 节点管理

​ 节点管理器监视节点的状态。监测的节点信息包括:节点上的处理器数、节点内存大小、临时存储区大小、节点状态、节点描述、权重、IP地址。CPU、RealMemory和TmpDisk的这些值被认为是节点可接受的最小节点配置值,以便节点投入使用。统计slurmd节点上实际存在的任何资源,并由节点管理器记录。定期检查实际节点资源,如果一个节点的资源少于配置的资源,它将处于DOWN状态并记录事件。否则,将记录所报告的实际资源,并可能将其用作调度的基础。设置权重用于在分配工作时对可用节点进行排序。处理能力强的节点对应权重越大。

  • 分区管理

​ 分区管理器标识要用于执行用户作业的节点组。与分区关联的数据包括:分区名、RootOnly标志,指示只有root用户或SlurmUser可以分配此分区中的资源、节点列表、分区状态(DOWN,UP)、作业最长时间限制、分配给单个作业的最少最多节点、允许使用分区的组列表、共享访问(shared,独占或者共享访问,FORCE表示无法确保互斥访问节点)、默认分区(如果作业请求中未指定分区)。

​ 共享访问可能会对并行作业的性能产生负面影响,比如在耗尽共享资源(如内存、磁盘空间)时导致作业失败。但是,共享资源可以提高整个系统的利用率和响应能力。

​ 另外,集群中的控制节点会对计算节点会定期进行PING操作,确定节点状态,并对资源分配进行调整。

  • 作业管理

​ 与每个作业相关联的多个参数,包括:作业名、uid、jobid、工作目录、分区、优先级、节点约束(处理器、内存等)。作业管理核心功能包括:请求资源、重置作业优先级、作业状态(节点列表、内存、CPU使用情况)、终止作业等。

​ 作业被放置在优先级排序的队列中,分配的节点由分区管理器选择。默认调度器的调度策略是FIFO,也可以使用外部的资源调度插件,Maui Scheduler就是与slurm结合的开源的外部调度器。slurm允许外部实体随时更改作业的优先级,并根据需要重新排序队列。

3、slurmd

slurmd守护程序是一个多线程守护程序,用于管理用户作业和监视系统状态。启动后,它读取配置文件,恢复任何保存的状态,捕获系统状态,尝试与slurmctld的初始连接,并等待请求。它为系统状态、会计信息、作业启动、作业状态、作业终止和作业附件的请求提供服务。在本地节点上,slurmd提供了将本地进程id转换为作业id的API。

slurmd最常见的操作是根据请求报告系统状态。在slurmd启动之后,会定期收集节点的处理器计数、实际内存大小和临时磁盘空间。如果这些值发生变化,将通知控制器。同时slurmd也接受srunslurmctld的请求用以启动和终止用户作业。

​ 当slurmd收到来自slurmctld的作业终止请求时,它将SIGTERM发送给作业中所有正在运行的任务,等待KillWait秒,然后发送SIGKILL。如果进程未终止slurmd通知slurmctld,这将记录事件并将节点的状态设置为DREAND

4、安全机制

​ SLURM有一个简单的安全模型:集群的任何用户都可以提交并行作业来执行并取消自己的作业。任何用户都可以查看SLURM配置和状态信息。只有特权用户才能修改SLURM配置、取消任何作业或执行其他受限活动。SLURM中的特权用户包括root用户和SlurmUser用户(如SLURM配置文件中所定义)。如果其他人需要修改SLURM配置的权限,可以使用set-uid程序向特定用户授予特定权限。

  • 通讯身份认证

​ 通常,节点间身份验证是通过使用保留端口和设置uid程序来完成的。在这个方案中,守护进程检查请求的源端口,以确保它小于某个值,因此只能由root访问。然后,通过该连接的通信被隐式信任。由于端口是一种有限的资源,setuid程序可能会引起安全问题,因此slurm采用了一种不依赖于保留端口的基于凭据的身份验证方案。在这种设计中,SLURM身份验证凭证附加到每个消息,并权威地验证消息发起方的uid和gid。一旦SLURM消息的接收者验证了身份验证凭证的有效性,他们就可以使用凭证中的uid和gid作为发送者的权威身份。

​ SLURM身份验证凭证的实际实现被归入“auth”插件。目前已经实现了三个功能性身份验证插件:jwt、Munge和none。“无”身份验证类型使用空凭证,仅适用于安全性不受关注的测试和网络。jwt和Munge实现都使用密码学为请求用户生成凭证,然后可以在任何远程节点上进行权威验证。然而,authd假设网络是安全的,而Munge则没有。其他身份验证实现,例如基于Kerberos的凭据,应该可以使用身份验证插件API轻松开发

  • 作业身份认证

​ 当控制器将资源分配给用户时,通过组合uid、作业id、步骤id、分配的资源列表(节点)和凭证生存期,使用slurmctld私钥对结果进行签名,生成作业步凭证。此凭证授予用户访问分配资源的权限,并免除了联系控制器以验证运行进程请求的负担。

​ slurmd根据控制器的公钥验证凭证上的签名,如果凭证有效,则运行用户请求。凭证签名的一部分可以用来验证从slurmd 到srun的stderr, stdin, stdout连接。

  • 授权

​ 可以通过RootOnly标志限制对分区的访问。如果设置了此标志,则仅当发起请求的有效uid是特权用户时,才会接受对此分区的作业提交或分配请求。特权用户可以像任何其他用户一样提交作业。例如,这可以用于为特定的外部调度程序提供对分区的独占访问。个人用户将不被允许直接向这样的分区提交作业,这将阻止外部调度程序有效地管理它。

5、Munge机制

Slurm采用Munge机制进行安全认证。安全模型主要有三个内容:

  • 用户可以任意提交、执行和删除自己的任务
  • 用户可以查看slurm配置文件,和节点状态
  • 授权用户可以更改相关配置文件

  1. Munge 进程运行在每一个节点上,通过getpeername()函数来确认用户信息,并产生一个凭证。该凭证包括:user ID,组ID,时间戳,生命周期等。

  2. Munge利用私钥生成一个消息认证码(MAC)用于认证。

  3. 然后Munge 用公钥加密包含MAC信息的认证。

  4. Slurm进程之间互相传递加密后的认证信息,并将自己接受到的认证信息发送给自己的munge。

  5. Munge利用自己的私钥去解密认证,获得user ID,group ID等信息。

6、网络结构

​ 通常情况下,采用层次网络结构,slurm网络拓扑结构为一棵树,非叶子节点为交换机,叶子节点为计算节点,Slurm使用最佳匹配算法来选择最低层的交换机,使得此交换机层下面的叶子层资源满足作业需求。

配置格式:

(1)交换机-节点

SwitchName=X Nodes=<node name>

(2)交换机-交换机

SwitchName=X Switches=<switch name>

Slurm资源管理架构相关推荐

  1. 快速入门:Slurm资源管理与作业调度系统

    快速入门:Slurm资源管理与作业调度系统 导读 本文将介绍slurm,一个 Linux服务器中的集群管理和作业调度系统.并对其基础命令和运行方式进行实战演练. 1. 简介 Slurm 组件 Slur ...

  2. Unity3D资源管理架构

    在Unity3D引擎中,场景资源文件(.unity)是以2进制格式存储的,但同时它也有一种基于文本的表现格式.可在Edit>Project Setting>Editor 中设置: 1.使用 ...

  3. iOS WCDB 使用

    iOS WCDB使用 准备 简介 WCDB 是基于SQLCipher,而SQLCipher 又是基于SQLite.故是一种关系型数据库,我们在设计表的时候,需要满足数据库设计的3范式 ORM:类字段绑 ...

  4. SLURM 安装与配置

    SLURM 安装与配置 SLURM 介绍 SLURM 是一个可用于大型计算节点集群的高度可伸缩的集群管理器和作业调度系统.SLURM 维护着一个待处理工作的队列并管理此工作的整体资源利用.SLURM ...

  5. 大IPD之——学习华为让业务主管成为人力资源管理的第一责任人(十六)

    管理学大师杜拉克说:"人是最大的资产."人的问题是企业的最大问题,是企业最核心的竞争力,管理就是将人和事.人和人及信息资源这几大资源有机地结合,优化配置.其中,大多数管理者最容易忽 ...

  6. Kyuubi: 网易数帆开源的企业级数据湖管理平台(架构篇)

    Kyuubi是网易数帆旗下易数大数据团队开源的一个企业级数据湖管理平台,建立在Apache Spark之上.Kyuubi提供一个高性能的通用JDBC和SQL执行引擎,通过它,用户能够像处理普通数据一样 ...

  7. oracle 与 client端执行结果不一致_不同模式下Spark应用的执行过程

    根据应用执行的3个阶段,不同执行模式下各个阶段的执行逻辑不相同,本文分析不同模式下的执行逻辑. Yarn-Client模式的执行流程 Yarn的组成 Yarn是hadoop自带的资源管理框架,它的设计 ...

  8. 【HIMI转载推荐之三】基于Cocos2dx引擎UI扩展引擎包[cocos2d-x-3c]

    [前言点评] 此篇主要作者:jason-lee-lijunlin  基于Cocos2d-x引擎进行封装的UI框架的扩展包. 此文章Himi已经仔细看过,总体来说是篇很好的文章,是给使用-x引擎的童鞋们 ...

  9. 云计算与分布式系统课程学习笔记(一)——云计算简介

    大数据对于系统架构的需求 显式的需求 海量计算和存储 快速计算 隐式的需求 数据的快速传输 灵活性 低成本 如何实现这些需求? 并行化(并行化的理念存在于计算机方方面面) 并行请求(分配给多个计算机) ...

最新文章

  1. WGS84经纬度坐标与WEB摩卡托坐标转换
  2. hive币涨幅空间大吗_自动消防水炮只能安装在大空间场所吗
  3. c++之string类详解
  4. mysql 5.1.6 安装包_Centos6 离线安装 MySQL5.5.55-1(附带安装包及 Perl 依赖包)
  5. mysql基础2-数据库的相关操作
  6. 模板---函数模板,类模板等
  7. renren-fast:使用人人开源renren-fast报错Error:(11, 39) java: 程序包io.renren.datasource.annotation不存在
  8. 跳频信号检测与参数估计技术研究
  9. ios备忘录下载安卓版_ios8备忘录安卓版下载,ios8备忘录app软件下载安卓版 v3.0-开心路...
  10. AUTOSAR CDD 模块解析 --- 设计建议
  11. python如何对两个矩阵进行拼接_Python:合并两个numpy矩阵的实现
  12. 真正的程序员就应该这样.
  13. UG NX 三维PMI标注培训
  14. 大众点评CEO张涛:踏实创业 低调打造百亿级公司
  15. 合肥工业大学 慕课 梦溪笔谈 习题答案
  16. 电力-故障分析理论及对称分量法
  17. 基于GMap.Net的地图解决方案
  18. 古典密码学与现代密码学
  19. 硬盘检测 Victoria教程:每个扇区512byte(现在新的硬盘每个扇区有4K)一个块是4K(4096)扇区,1个块由连续的8个扇区组成。Victoria扫描常选块由2048扇区每扇区512字节
  20. Linux逻辑运算符

热门文章

  1. 智能表单之mongoDB的使用
  2. jq鼠标悬停事件,(jq取消鼠标悬停事件),jq在特定条件下才执行鼠标悬停事件
  3. java 不换行输出_java的输入输出
  4. Flutter开发之《马蜂窝的跨平台开发实践》笔记(53)
  5. 用Pelican+Github搭建个人博客网站
  6. swift 原色图片
  7. 好的代理IP对爬虫有多重要?
  8. php gd2 安装,PHP安装GD库
  9. [月份维度]日志数据提取包含关键词的事件,解析落入的月份计数,matplotlib绘制统计图,python
  10. 当前流行的前端及框架介绍(React和Vue)