更新时间:2026-02-12 GMT+08:00
分享

开始使用

  • 有关Slurm详细使用指导请参考Slurm产品文档
  • 该解决方案默认使用的Slurm版本:22.05.3,部署的Java版本:jdk1.8.0_202
  • 已在Slurm内默认创建了名为cluster的集群名
  • 该解决方案涉及的所有的业务端口均默认配置了同一子网可访问,如果另有需要,需根据实际情况修改安全组规则
  • 涉及到的Slurm业务端口如下:
    • 6817:Slurm管理节点的业务面端口
    • 6818:Slurm计算节点的业务面端口
  • 后续文档将展开Slurm的基础使用说明

安全组修改(可选)

  1. 修改初始密码。打开华为云服务器控制台,勾选以弹性云服务器名称为前缀的两台弹性云服务器,单击“关机”,关机成功后,单击“重置密码”,根据提示重置密码,单击“确定”后,开机即可正常使用。(建议分别设置不同的密码,以master为后缀名服务器为调度控制节点,用于管理员登录使用;以node为后缀名服务器为计算节点,用于非管理员的其他用户提交作业。)

    图1 重置密码

查看节点状态

  1. 在调度节点(master)上查看slurm软件运行状态,执行systemctl status munge命令和systemctl status slurmctld命令查看munge服务和slurmctld服务是否运行正常。

    图2 munge服务正常运行
    图3 Slurmctld服务正常运行

  2. 如果munge没有启动,执行:

    systemctl start munge

  3. 如果slurmctld没有启动,执行:

     systemctl start slurmctld
    #查看集群内节点状态
     sinfo

  4. 每次调度节点服务器重启后,需登录调度节点(master)云服务器,输入用户名root以及密码进入云服务器,输入以上命令启动服务。注:Gearbox启动后会将没有计算任务的节点设为“drain”状态,使用时要重新激活,命令如下:

    scontrol update NodeName={NODELIST下节点名称} State=idle
    图4 Slurm配置成功

  5. 如果NODELIST中无节点,可登录到计算节点上开启slurmd服务。命令如下:

    #开启node1节点slurmd服务

    ssh 192.168.0.2
    systemctl start slurmd
    exit

  6. 在调度节点(master)上查看Gearbox运行状态,执行journalctl -u gearbox、systemctl status gearbox查看Gearbox服务是否正常运行。

    journalctl -u gearbox
    systemctl status gearbox
    图5 Gearboxh状态正常运行

    图6 Gearboxh日志查看

  7. 设置Slurm root用户配额,此配额与弹性伸缩的ECS数量相关。

    #查看配额信息
    sacctmgr list ass

创建node节点镜像

  1. 确认调度集群正常后,在控制台搜索弹性云服务器,单击进入弹性云服务器控制台。
  2. 找到node节点(私有IP为192.168.0.2),单击右侧更多按钮创建镜像。

    图7 创建镜像

  3. 镜像类型选择系统盘镜像,配置信息中名称可自行命名,本示例中名称为hpc-image,单击立即创建。

    图8 选择系统盘镜像

    图9 配置信息填写,单击下一步。

    图10 确认资源,单击提交。

  4. 单击立即创建后跳转到镜像服务控制台,可查看镜像创建进度。

    图11 镜像创建中

    图12 镜像创建完成

配置弹性伸缩

  1. 打开华为云镜像服务控制台,确认镜像创建成功。
  2. 登录华为云弹性伸缩AS控制台,选择该方案创建的弹性伸缩配置,单击右侧复制。在弹窗中,选择私有镜像,选择前面步骤4中创建的镜像,注意修改名称(名称不能带有下划线“_”,否则无法自动删除实例),单击“确定”创建新的弹性伸缩配置。

    图13 复制创建新的弹性伸缩配置,安全组选用一键部署创建的安全组
    图14 选择密钥对登录,本示例中密钥对名称为HPC-TEST(密钥对名称以3.1准备工作中创建的密钥对名称为准),并勾选相应选项。

  3. 打开弹性伸缩组列表,选择该方案创建的弹性伸缩组,单击右侧“更多>更换弹性伸缩配置”,在弹窗中选择上一步骤创建的弹性伸缩配置,单击确定。

    图15 更换弹性伸缩配置

  4. 登录华为云弹性伸缩AS控制台,查看该方案创建的弹性伸缩组。

    图16 弹性伸缩实例

  5. 单击弹性伸缩组名称,进入伸缩组详情界面,增加新的伸缩策略。单击“添加伸缩策略”,选择“告警策略”。注意:根据业务需求配置相应的区间范围(1条伸缩策略最大支持添加10个策略区间),配置完成后单击确定。

    图17 添加伸缩策略

  6. 当策略区间增加的服务器数量不满足业务需要时,可以添加多个伸缩策略,单击“添加伸缩策略”。

    图18 添加策略

  7. 安装业务软件,安装业务需要的软件到共享文件目录/data下面。

    Slurm作业管理系统:

    • Slurmd、Slurmdbd、Slurmctld日志文件目录:/var/log
    • Slurmdbd服务的配置文件:/etc/slurm/slurmdbd.conf
    • Slurmctld、Slurmd服务的配置文件:/etc/slurm/slurm.conf

      详细使用参考Slurm产品文档,常用命令如下:

    图19 Slurm常用命令

Gearbox程序工作流程介绍

本方案以批任务为示例,演示Gearbox程序如何自动进行Slurm集群弹性扩缩容。

  1. gearbox程序启动后,设置Slurm root用户配额。

    #查看配额信息
    sacctmgr list ass
    图20 查看用户配额信息

  2. 提交批处理任务(仅供参考)。

    # 提交批处理任务
    sbatch myscript
    图21 sbatch提交slurm任务

  3. 查看云监控告警状态。当作业状态为“queued”时,代表作业job在排队中,当前集群计算节点资源不足。此时查看自定义监控中workload值>=1,将通知弹性伸缩实例进行自动扩容。

    图22 workload值变化状态

  4. 登录弹性伸缩AS控制台,单击打开该方案创建的弹性伸缩组,查看弹性伸缩正在创建实例。

    图23 触发弹性扩容

  5. 弹性扩容的ECS实例,登录方式为3.3步骤1中修改的密码,使用固定资源池中计算节点镜像创建,登录创建好的实例,并运行Slurmd程序即可被纳管进入Slurm集群,参与作业。

    图24 弹性扩容的ECS实例

  6. 被纳入Slurm集群的可用ECS计算节点实例,Slurm调度节点(master)将会下发作业任务给这些实例。

    图25 扩容出的实例执行作业任务

  7. Gearbox将周期检查Slurm集群中计算节点node状态。检查空闲的node节点并node状态设置为DRAIN;检查集群中状态为DRAIN的node,是否还有任务正在该计算节点运行,如果没有,将该实例删除(成功后,node状态将变为DOWN);检查集群中状态为DOWN或DRAIN的node,将node记录从Slurm集群移除。

    (参数说明:drain(节点故障),alloc(节点在用),idle(节点可用),down(节点下线),mix(节点部分占用,但仍有剩余资源)
    图26 将空闲实例状态修改为drain

  8. 登录弹性伸缩AS控制台,单击打开该方案创建的弹性伸缩组,查看弹性伸缩已删除实例。

    图27 空闲实例被移出

gearbox配置文件示例

下面内容为gearbox配置文件示例,请存放在gearbox安装目录下。配置gearboxconfig.yaml文件时,请删除示例中的所有注释。

user:
  # console帐号的AK
  ak:
  # console帐号的SK
  sk:
  # 用户所在region的项目ID
  project-id: 
  # 代理地址,端口,用户名密码等,无需代理可不配置
  proxy-address:
  proxy-port:
  proxy-user-name:
  proxy-password:
as:
  # AS服务在待使用局点的终端节点域名
  endpoint: as.cn-east-3.myhuaweicloud.com
  # 预置伸缩组资源的伸缩组ID
  group: 
  # 查询伸缩实例时单页最大返回数量,默认100可不修改
  list-instance-limit: 100
  # 删除伸缩实例时最大数量限制,AS服务最大支持50,可不修改
  delete-instance-limit: 50
ecs:
  # ECS服务在待使用局点的终端节点域名
  endpoint: ecs.cn-east-3.myhuaweicloud.com
metric:
  # 自定义监控指标命名空间,可不修改
  namespace: gearbox.HPC
  # 自定义指标的指标名
  name: workload
  # 自定义指标维度名,可不修改
  dimension-name: autoscaling_group
  # 自定义指标维度ID,配置成伸缩组的ID  dimension-id: 
  # 指标上报的TTL参数,可不修改
  report-ttl: 172800
  # CES服务在待使用局点的终端节点域名
  metric-report-endpoint: ces.cn-east-3.myhuaweicloud.com
task:
  # 节点状态检查周期,单位 秒
  health-audit-period: 30
  # 自定义指标上报周期,单位 秒
  metric-report-period: 30
  # 检测是否需要缩容的周期,单位 秒
  scale-in-period: 120
  # 自动删除待缩容节点周期,单位 秒
  delete-instance-period: 10
  # 新扩容节点自发现周期
  discover-instance-period: 20
  # 对比伸缩组与slurm节点数量周期,单位 秒
  diff-instance-and-node-period: 60
  # 内部缓存刷新周期,单位 秒
  refresh-cache-period: 100
system:
  # deadline/slurm
  type: slurm
  # 稳定节点的Node名称,多节点英文逗号分割
  stable-nodes: master
  # 稳定节点所在的分区
  stable-partition: p1
  #不稳定节点所在的分区
  variable-partition: p1
  # 空闲时间阈值,空间时间超过该值的节点将被缩容,单位 秒
  scale-in-time: 1
  # 判断job是否属于排队状态的时间限制条件,排队时间超过该值的job被认为是在排队并参与指标计算,建议为0
  job-wait-time: 1
  # 新节点注册的超时时间,超过该时间依然未注册成功将被AS删除,单位:分钟,建议为10
  register-timeout-minutes: 10
  # 弹性节点使用的cpu核数
  cpu: 1
  # 弹性节点使用的内存大小,该字段为预留字段,可设置为任意大于0的数值
  memory: 100

相关文档