HPC集群自动弹性扩缩的两种实现方式

常青藤 HPC常青园 2023-07-28 19:48 发表于北京

       弹性扩缩技术正在成为HPC集群中的一项重要技术。它可以根据实际需求动态调整集群资源,应对用户负载的波动。对于运维团队来说,自动弹性扩缩能够减轻集群运维负担,提高集群资源利用率,降低成本。

       目前已经存在一些可行的集群自动扩缩方案。其中,LSF Resource Connector是LSF官方提供的自动扩缩工具,能够帮助用户实现LSF集群的弹性扩缩。另一种方案是通过HPCinsights与Augur的组合,可以更加灵活的实现HPC集群弹性扩缩需求。

       我们来具体介绍这两种实现方式。

一、LSF Resource Connector

       LSF Resource Connector(简称LSF RC)是LSF 10.1版本的一个新特性,该特性使得LSF能够根据集群的作业负载情况,从各种外部计算资源管理系统借用计算资源(虚拟机或者物理机),将其加入LSF集群,再将作业调度到借用的资源上。

       下图是LSF Resource Connector涉及的重要组件。

图片

       从上图可以得知,Resource Connector主要涉及的组件包括:mbschd、mbatchd和ebrokerd。在ebrokerd内部,定义了一组通用的Resource Connector接口,可以调用不同的外部资源。例如AWSTool.jar作为AWS公有云的plugin,实现了对AWS的资源借用和删除接口,包括申请创建虚拟机、删除虚拟机和查询虚拟机状态等。

       以下是Resource Connector的具体工作流程。

       (1) 用户提交一个LSF作业。作业会产生一个对计算资源的需求(Demand),但是集群中已没有足够的计算资源来处理作业,这时就需要从外部资源提供方借用资源了。

       (2) mbatchd守护进程会首先检查是否已经有机器被分配并且能够满足这个需求,如果没有,它会根据外部资源模板(Template)的定义,计算针对每个模板需要几台机器,然后生成一个具体的资源请求(Request),并把这个Request发给ebrokerd守护进程。

       (3) 根据作业的Demand,Resource Connector请求外部资源提供方来分配机器。

       (4) ebrokerd守护进程会监控请求的状态,直到它检测到资源提供方成功分配了机器,并在新分配的机器上启动LSF守护进程。

       (5) 机器加入到LSF集群之后,作业就会被调度到这台机器上。

       (6) 当没有新的资源需求的时候,mbatchd通过ebrokerd守护进程把资源返回给资源提供方。

二、HPCinsights + Augur   

       HPCinsights可以实现对HPC集群的监控、查询、统计和分析(参考“LSF集群监控和分析工具HPCinsights”),Augur可以实现对HPC集群的自动化运维(参考“自动化运维平台Augur”),通过HPCinsights与Augur的组合,可以实现:

  • HPC集群自动扩容:HPCinsights可以监控HPC集群的状态和负载变化,当满足扩容条件时,通过Augur自动触发扩容操作。

  • HPC集群自动缩容:当集群负载下降,满足缩容条件时,通过Augur自动释放多余资源,以节省成本。

       HPCinsights与Augur实现HPC集群弹性扩缩的总体架构如下图所示:

图片

       下面我们以LSF集群和AWS公有云为例,具体展示一下云上LSF集群的自动弹性扩缩过程。

       集群的初始化环境只有一个LSF管理节点部署在AWS公有云上,集群中无任何作业。

图片

       Augur管理平台中只有LSF管理节点和HPCinsights节点,如下图所示。

图片

       HPCinsights服务器资源监控面板中,可以查看到LSF管理节点的监控信息。

图片

       接下来,我们在集群中提交一些作业,可以看到这些作业因资源不足而处于PEND状态。

图片

       根据预设的触发扩容的规则(可配置),集群开始自动扩容,在AWS云上自动增加了两个LSF节点。         

图片

       HPCinsights服务器资源监控面板,会显示新创建出来的这两个计算节点。

图片

我们用命令查询到LSF集群中添加了两台主机,并且作业也分配到了这两台新的计算节点上。

图片

       接下来,我们展示集群缩容过程。

       我们把所有作业都杀掉(只是为了演示目的,实际使用时HPCinsights会根据作业和计算节点负载情况决定是否触发缩容),队列中无等待作业,自动触发缩容操作。

图片

图片

       Augur平台上会出现缩容场景执行的任务,并且主机会从主机管理中移除。

图片

         

图片

       HPCinsights服务器资源监控面板,也会同步信息,最后只剩下LSF管理节点。

图片

三、总结   

       LSF RC是LSF用于支持集群弹性扩缩的新功能。HPCinsights与Augur的组合可以更加灵活地实现HPC集群弹性扩缩,其主要特点是,弹性扩缩操作是通过调用Augur平台中的Ansible脚本实现的(例如在AWS上创建虚拟机、加入LSF集群都以Ansible脚本方式实现,可以根据实际需要进行修改),因而可以应用于多种公有云平台,也可以根据具体需求灵活调整HPC集群中的统一用户认证、共享文件系统等设置。另外,HPCinsights + Augur也提供了更加细粒度的扩缩策略(LSF RC目前只根据pending作业数量进行扩缩,但未考虑主机CPU和内存当前实际负载情况)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/112007.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kettle REST Client获取token调用接口解析JSON入文件实例

Kettle REST Client获取token调用接口解析JSON入文件实例 需求说明 通过kettle组件调用接口并解析JSON成结构化数据入文件。 完整实例 解决方法 利用生成记录组件定义URL参数通过REST ClENT组件请求得到TOKEN通过JSON INPUT组件解析接口请求的结果通过JAVASCRIPT组件拼接生…

储存高精长整型の另一种思路——二维数组

利用二维数组储存高精长整型 题目解题思路问题解决代码实现总结反思 题目 luogu P2437 蜜蜂路线 解题思路 最初只觉得是一道很简单的递推 先考虑从第一个点出发的情况,对于第 k ( k ≥ 3 ) k (k≥3) k(k≥3)个点,路线数表示如下: a [ k …

【二叉搜索树】将有序数组转换为二叉搜索树-力扣 108 题

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

人工智能AI 全栈体系(四)

第一章 神经网络是如何实现的 除了全连接神经网络外,还有其他形式的神经网络。 此节将讲述神经网络的另一种形式:卷积神经网络。 四、卷积神经网络 首先我们看看全连接神经网络有什么不足。正如其名字一样,全连接神经网络,两个…

vscode json 无决找到“e:\...“

在上一章中提到了解决 无法使用 compilerPath 的问题,该问题明显是相对路径配置错误。 但是解决该问题后,发现输出了新的问题: 由该输出可知,在 e:\gitsource\ODrive-fw-v0.5.1\Firmware\ 路径下未找到 D:\gcc-arm-none-eabi-10.3-2021.10…

004-Windows下开发环境搭建

Windows下开发环境搭建 文章目录 Windows下开发环境搭建项目介绍版本控制工具Git 与 SVNWindow下安装Git Qt 开发工具静态编译Qt环境安装 串口模拟器比较工具SQLite 数据库查看小工具预告 关键字: Qt、 Qml、 开发环境、 Windows、 C 项目介绍 欢迎来到我们的 …

Postman应用——接口请求(Get和Post请求)

文章目录 新增请求Get请求Post请求 这里只讲用的比较多的Get和Post请求方式,也可以遵循restful api接口规范,使用其他请求方式。 GET(SELECT):从服务器取出资源(一项或多项)POST(CR…

控制台日志打印console的封装,加入美化与打印开关

控制台日志打印console的封装,加入美化与打印开关 为什么要写这个? 封装这个控制台日志打印工具,主要是在项目中自己做的SDK需要提供给其他开发人员使用,加入了日志美化和打印打开,方便了开发人员查找SDK中的日志&am…

目标检测前言,RCNN,Fast RCNN,Faster RCNN

一、RCNN: 找到概率最高的目标之后,与其他目标进行IOU交并比计算,若高于一定值,则说明这两张图片预测的是同一个目标,则把概率低的目标删掉 二、Fast RCNN 因为是直接得到特征图之后进行映射,所以不限制输入…

uniapp抽取组件绑定事件中箭头函数含花括号无法解析

版本: "dcloudio/uni-ui": "^1.4.27", "vue": "> 2.6.14 < 2.7"... 箭头函数后含有花括号的时候, getData就拿不到val参数 , 解决办法就是去除花括号 // 错误代码: <SearchComp change"(val) > { getData({ val …

【大数据】Doris 构建实时数仓落地方案详解(二):Doris 核心功能解读

Doris 构建实时数仓落地方案详解&#xff08;二&#xff09;&#xff1a;Doris 核心功能解读 1.Doris 发展历程2.Doris 三大模型3.Doris 数据导入4.Doris 多表关联5.Doris 核心设计6.Doris 查询优化7.Doris 应对实时数仓的痛点 1.Doris 发展历程 Apache Doris 是由 百度 研发并…

讨论问题--数据类型、数组、传值/址API函数等

前言 数据类型是编程语言中用于表示数据的分类。常见的数据类型包括整数、浮点数、字符串、布尔值等。数据类型决定了变量能存储的值的种类和范围。 数组是一种存储多个相同类型数据的数据结构。它通过索引来访问并操作其中的元素。数组在内存中是连续存储的&#xff0c;可以…