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.rhkb.cn/news/135453.html

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

相关文章

小程序Saas平台源码:开启电商小程序新时代,可视化后台自由DIY的无限可能

在当今数字化的时代,小程序已成为各行各业开展业务的重要工具。尤其在电商领域,小程序能有效地缩短消费者与商品之间的距离,提升营销效率。给大家分享一款针对电商行业的小程序Saas平台源码,它具有一键生成电商小程序、可视化后台…

Go基础八股

【Go面试】Go slice深拷贝和浅拷贝_哔哩哔哩_bilibili 基础篇 1.Go方法值接收者和指针接收者的区别 简单言之就是是否会影响调用的结构体,方法接收者是指针会影响 2.返回局部变量的指针 一般来说,局部变量会在函数返回后被销毁,因此被返回…

flink的网络缓冲区

背景 在flink的taskmanager进行数据交互的过程中,网络缓冲区是一个可以提升网络交换速度的设计,此外,flink还通过网络缓冲区实现其基于信用值credit的流量控制,以便尽可能的处理数据倾斜问题 网络缓冲区 在flink中每个taskmana…

C++ 太卷,转 Java?

最近看到知乎、牛客等论坛上关于 C 很多帖子,比如: 2023年大量劝入C 2023年还建议走C方向吗? 看了一圈,基本上都是说 C 这个领域唯一共同点就是都使用 C 语言,其它几乎没有相关性。 的确是这样,比如量化交…

微信小程序遇到的一些问题及解决方法(设备安装)

微信小程序遇到的一些问题及解决方法 1、[js将字符串按照换行符分隔成数组](https://blog.csdn.net/pgzero/article/details/108730175)2、[vue byte数组](https://www.yzktw.com.cn/post/1202765.html)3、使用vant-weapp的文件上传capture"camera" 无法直接调用摄像…

OPC UA协议报文,基础介绍+Hello报文解析

消息主要分为:消息头和附加字段 通讯过程 协议标准第一部分进行总体介绍;协议标准第四部分有详细介绍通讯过程 流程介绍 整体流程 连接套接字》Hello》打开安全信道》创建会话》关闭安全信道》关闭套接字 订阅等事件 服务器审核行为 聚合的服务器审…

基于未知环境碰撞冲突预测的群机器人多目标搜索研究

源自:指挥与控制学报 作者:边晓荟 周少武 张红强 吴亮红 王汐 王茂 刘朝华 陈磊 “人工智能技术与咨询” 发布 摘 要 群机器人在未知动态环境下进行多目标搜索时,存在碰撞预测和搜索效率不高等问题。提出了一种碰撞几何锥和改进惯性权重…

中秋特辑:Java事件监听实现一个猜灯谜小游戏

众所周知,JavaSwing是Java中关于窗口开发的一个工具包,可以开发一些窗口程序,然后由于工具包的一些限制,导致Java在窗口开发商并没有太多优势(当然也有一些第三方的工具包也很好用),不过&#x…

一款适用于教培机构的微信CRM系统

在教育培训行业中,有效的客户关系管理(CRM)系统至关重要。微信作为一种流行的社交媒体平台,具有巨大的潜在价值,可以被用来提升教培机构的客户管理和销售效率。 一些教育培训行业存在的问题 ①每年开班收学员太多&…

二叉树的几个递归问题

我的主页:Lei宝啊 愿所有美好如期而遇 前言: 二叉树的递归是二叉树很重要的问题,几乎解决二叉树的问题都要使用递归,接下来我们将解决二叉树几个最基础的递归问题。 目录 前言: 二叉树的前序,中序&…

JDK jps命令复习

之前写过jdk命令工具的博文,下面复习jps命令; jps 是 Java Process Status Tool 的简称,它的作用是为了列出所有正在运行中的 Java 虚拟机进程和相关信息; jps 命令参数 -q 只输出进程 ID,省略主类的名称 -m 输出虚拟机进程启动时传递…

基于Java新枫之谷游戏攻略设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

数据结构---链表(java)

目录 1. 链表 2. 创建Node 3. 增加 4. 获取元素 5. 删除 6. 遍历链表 7. 查找元素是否存在 8. 链栈的实现 9. 链队的实现 1. 链表 数据存放在"Node"结点中 优点:不用考虑扩容和缩容的问题,实现了动态存储数据 缺点:没有…

在Python中 作用域与命名空间的坑

前言: 嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 1. 命名空间 1.1 什么是命名空间 Namespace命名空间,也称名字空间,是从名字到对象的映射。 Python中,大…

【多卡训练报错】:The server socket has failed to listen on any local network address.

错误: RuntimeError: The server socket has failed to listen on any local network address. The server socket has failed to bind to [::]:16664 (errno: 98 - Address already in use). The server socket has failed to bind to 0.0.0.0:16664 (errno: 98 -…

JMeter:接口测试基础介绍

一、什么是接口 接口是非常抽象的概念,先来看下中国最大的综合性辞典《辞海》是怎样定义接口的: 两个不同系统或系统中两个不同特性部分的交接部分。一般分硬件接口和软件接口两种。前者是为连接计算机各部分之间、计算机与计算机之间、计算机与外部系统…

虚拟机Ubuntu操作系统常用终端命令(3)(详细解释+详细演示)

本篇概要 本篇讲述了Ubuntu操作系统常用的几个功能,即修改文件权限、修改文件属性、可执行脚本、虚拟机网络、FTP服务器、SSH服务器、VIM等方面的知识。希望能够得到大家的支持。 文章目录 本篇概要1.修改文件权限2.修改文件属主3.可执行脚本3.1要点与细节3.2shell…

芯科蓝牙BG27开发笔记7-配置蓝牙参数

基础的要求 1. 设置广播参数为间隔1000ms,不停止 2. 添加广播消息,含01、03、09、FF TYPE 3. 设置蓝牙通信间隔参数为320ms、400ms、2、4000ms超时 3. 配置发射功率为较低 4. 配置GATT所有数据与原Nordic 配置一致 为了解决以上疑问,需…

error:03000086:digital envelope routines::initialization error问题解决

目录 问题描述:error:03000086:digital envelope routines::initialization error 问题原因:nodejs V17 版本发布了 OpenSSL3.0 对算法和秘钥大小增加了更为严格的限制,nodeJs v17 之前版本没影响,但 V17 和之后版本会出现这个错…

【大规模 MIMO 检测】基于ADMM的大型MU-MIMO无穷大范数检测研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…