# huaweicloud-solution-deploy-a-scalable-hpc-cluster-with-slurm **Repository Path**: HuaweiCloudDeveloper/huaweicloud-solution-deploy-a-scalable-hpc-cluster-with-slurm ## Basic Information - **Project Name**: huaweicloud-solution-deploy-a-scalable-hpc-cluster-with-slurm - **Description**: 快速在华为云上搭建可自动弹性扩缩容的Slurm集群 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master-dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-05-23 - **Last Updated**: 2025-06-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [TOC] **解决方案介绍** =============== 该解决方案基于开源软件Slurm及华为云自研开源软件Gearbox构建弹性伸缩能力,快速帮助用户在华为云上完成可自动弹性伸缩的HPC环境搭建。Slurm工作节点云服务器采用无配置模式,Gearbox程序与弹性伸缩服务AS及云监控服务CES对接,通过监控Slurm集群作业Job状态,实时自动弹性扩缩容Slurm集群环境,并自动完成弹性扩容出来的云服务器注册并加入集群或从集群注销并完成实例销毁。适用于以下场景: HPC集群、数据管理和集群调度等场景。 Gearbox程序开源地址:https://gitee.com/HuaweiCloudDeveloper/huaweicloud-solution-gearbox 解决方案实践详情页面地址:https://www.huaweicloud.com/solution/implementations/deploy-a-scalable-hpc-cluster-with-slurm.html **架构图** --------------- ![方案架构](./document/deploy-a-scalable-hpc-cluster-with-slurm.jpg) **架构描述** --------------- 该解决方案会部署如下资源: 1. 创建2台Linux弹性云服务器,安装开源软件Slurm,在调度节点(master)安装Gearbox程序、配置java环境。 2. 创建1个弹性公网IP,用于提供访问公网和被公网访问能力。 3. 创建安全组,可以保护弹性云服务器的网络安全,通过配置安全组规则,限定云服务器的访问端口。 4. 使用镜像服务IMS,用于弹性扩容时使用该镜像配置计算节点服务器初始化环境。 5. 使用弹性伸缩AS,创建1个弹性伸缩组,通过设置弹性伸缩配置及伸缩策略来进行集群实例资源的弹性扩缩容。 6. 使用云监控服务,Gearbox程序监测集群作业状态,计算自定义指标workload值,上报指标到云监控服务。 7. 使用弹性文件服务SFS,挂载到所有弹性云服务器上,为集群环境提供共享文件存储服务。 **方案优势** --------------- 1. 动态扩缩容 该解决方案配置弹性伸缩组,调度节点服务器内置Gearbox程序,该程序可周期性监测集群指标,并汇总指标数据上报云监控服务CES,由CES告警规则触发AS自动扩缩容,节约成本。 2. 个性定制化 该解决方案及内置Gearbox程序均为开源,用户可以免费用于商业用途,并可以在源码基础上进行定制化开发。 3. 一键部署 一键轻松部署,即可完成弹性扩缩容的HPC集群环境部署。 **组织结构** --------------- ``` lua huaweicloud-solution-deploy-a-scalable-hpc-cluster-with-slurm ├── deploy-a-scalable-hpc-cluster-with-slurm.tf.json -- 资源编排模板 ├── userdata ├── install_slurm_gearbox.sh -- 调度与计算节点初始化脚本 ``` **开始使用** --------------- 1、修改初始密码。 打开[华为云服务器控制台](https://console.huaweicloud.com/ecm/?agencyId=084d9251a8bf46ef9c4d7c408f8b21e8®ion=cn-east-3&locale=zh-cn#/ecs/manager/vmList),勾选以弹性云服务器名称为前缀的三台弹性云服务器,单击“关机”,关机成功后,单击“重置密码”,根据提示重置密码,单击“确定”后,开机即可正常使用。(建议分别设置不同的密码,以master为后缀名服务器为调度控制节点,用于管理员登录使用;以node为后缀名服务器为计算节点,用于非管理员的其他用户提交作业。) 图1 重置密码 ![重置密码](./document/readme-image-001.png) 2、方案在调度节点(master)上部署了munge、slurmctld、slurmdbd服务,下载了gearbox程序包,在计算节点(node)上部署了munge、slurmd服务。其中slurmdbd服务使用mariadb作为数据库,数据库用户为slurm,密码为123456。用户可以执行mysql命令修改其密码并修改对应的slurmdbd配置。在调度节点(master)上查看slurm软件运行状态,执行systemctl status munge命令和systemctl status slurmctld命令查看munge服务和slurmctld服务是否运行正常。 ``` shell systemctl status munge systemctl status slurmctld ``` 图2 munge服务正常运行 ![munge服务正常运行](./document/readme-image-002.PNG) 图3 Slurmctld服务正常运行 ![Slurmctld服务正常运行](./document/readme-image-004.PNG) 如果munge没有启动,执行: ``` shell systemctl start munge ``` 如果slurmctld没有启动,执行: ``` shell systemctl start slurmctld sinfo ``` 每次调度节点服务器重启后,需登录调度节点(master)云服务器,输入用户名root以及密码进入云服务器,输入以上命令启动服务。 图4 Slurm配置成功 ![Slurm配置成功](./document/readme-image-0015.PNG) 若NODELIST中无节点,可登录到计算节点上开启slurmd服务。命令如下: ``` shell #开启node节点slurmd服务 ssh 192.168.0.2 systemctl start slurmd exit ``` 3、在调度节点(master)运行Gearbox程序。 ``` shell # 进入gearbox程序包所在目录下 # 启动Gearbox程序: nohup java -jar gearbox-0.0.1-SNAPSHOT.jar --spring.config.name=Config & ``` 在调度节点(master)上查看Gearbox运行状态,执行ps aux|grep gearbox查看Gearbox服务是否正常运行。 ``` shell ps aux|grep gearbox ``` 图5 Gearbox服务正常运行 ![Gearbox服务正常运行](./document/readme-image-003.PNG) 4、创建计算节点镜像。 打开[华为云服务器控制台](https://console.huaweicloud.com/ecm/?agencyId=084d9251a8bf46ef9c4d7c408f8b21e8®ion=cn-east-3&locale=zh-cn#/ecs/manager/vmList) 图6 选择计算节点 ![选择计算节点](./document/readme-image-0010.PNG) 按提示点击创建镜像。 图7 选择系统盘镜像 ![选择系统盘镜像](./document/readme-image-0011.PNG) 图8 立即创建 ![立即创建](./document/readme-image-0012.PNG) 等待计算节点镜像创建。 图9 镜像创建中 ![立即创建](./document/readme-image-0013.PNG) 图10 镜像创建成功 ![立即创建](./document/readme-image-0014.png) 5、登录[华为云弹性伸缩AS控制台](https://console.huaweicloud.com/ecm/?agencyId=084d9251a8bf46ef9c4d7c408f8b21e8®ion=cn-east-3&locale=zh-cn#/as/manager/groupConfigInfo/configList),选择该方案创建的弹性伸缩配置(名称以as_name参数值为前缀),单击右侧复制。在弹窗中,更换私有镜像为前面步骤4中创建的镜像,注意修改名称(名称不能带有下划线“_”,否则无法自动删除实例),单击“确定”创建新的弹性伸缩配置。 图11 复制创建新的弹性伸缩配置,安全组选用一键部署创建的安全组 ![创建弹性伸缩配置](./document/readme-image-005.PNG) 6、打开弹性伸缩组列表,选择该方案创建的弹性伸缩组(名称以as_name参数值为前缀),单击右侧“更多>更换弹性伸缩配置”,在弹窗中选择上一步骤创建的弹性伸缩配置,单击确定。 图12 更换弹性伸缩配置 ![更换弹性伸缩配置](./document/readme-image-006.PNG) 7、登录华为云弹性伸缩AS控制台,查看该方案创建的弹性伸缩组。 图13 弹性伸缩实例 ![弹性伸缩实例](./document/readme-image-007.PNG) 8、单击弹性伸缩组名称,进入伸缩组详情界面。添加“伸缩策略”,修改伸缩策略配置的“策略类型”为“告警策略”。根据业务需求配置相应的区间范围(1条伸缩策略最大支持添加10个策略区间),配置完成后点击确定。 图14 添加伸缩策略 ![添加伸缩策略](./document/readme-image-008.PNG) 9、当策略区间增加的服务器数量不满足业务需要时,可以添加多个伸缩策略,单击“添加伸缩策略”。 图15 添加策略 ![添加策略](./document/readme-image-009.PNG) 10、安装业务软件 登录弹性云服务器,安装业务需要的软件到共享文件目录/data下面。 11、业务软件安装配置成功后即可正常使用。