跳到主要内容

Fsched内部

Fsched 相关进程介绍

Fsched 调度器是开源的 Slurm 调度器的派生版本,Fsched 在 Slurm 19.05 的基础之上,提供了诸多功能、性能、稳定性上的改进。 Fsched 集群内的守护进程包括:

  • slurmctld:Fsched 控制器守护进程,运行于头节点上。所有调度器的管理功能均由 slurmctld 提供。它负责作业队列管理、调度和集群整体状态监控。它与其他守护进程交互,以分配资源、启动作业、监控作业执行并管理作业依赖性。
  • slurmd:Fsched 计算节点守护进程,运行于所有计算节点。管理本地资源分配、作业执行以及与slurmctld的通信。它确保作业在计算节点上正确执行,向slurmctld 报告作业状态报告,并根据策略应用资源限制。
  • slurmdbd:Fsched 数据库守护进程,它负责在数据库中维护作业会计记录。它存储有关作业提交、完成、失败和资源使用的信息。支持查询和报告,允许用户和管理员跟踪集群使用情况和作业历史。在 FCP 或 FCC-E 环境中,slurmdbd 以及对应的数据库服务运行于 FCP/FCC-E 管理节点上。
  • munged:身份验证服务,用于创建和验证凭据,运行于 Fsched 集群中所有节点,包括头节点、登陆节点和计算节点。它确保SLURM守护进程和节点之间的通信是安全且可信的。
  • statesvc:Fsched 状态服务,用于向 FCP/FCC-E 的监控和分析模块提供 Fsched 状态和作业信息

Fsched 相关进程如何通信

  • 注册与心跳:计算节点上的slurmd在启动时会向slurmctld发送注册信息,告知其存在并提供节点的资源状态。此后,slurmctld会定期向各个slurmd发送心跳信号,以确认其状态和可用性。
  • 请求与响应:当用户提交作业时,slurmctld接收作业请求并根据当前资源状态进行调度。调度决定后,slurmctld会将作业信息发送到相应的slurmd,后者负责在本地节点上执行作业。
  • 监控与报告:slurmd会定期向slurmctld报告节点的资源使用情况和作业执行状态,确保主控进程能够实时了解集群的整体状态。

高可用设计

Fsched 的高可用性(High Availability)机制旨在确保集群在关键组件出现故障时仍能正常运行,从而最大限度地减少停机时间和潜在的计算资源浪费。 Fsched 通过以下几个方面实现高可用性:

1. slurmctld的故障转移(Failover)

  • 双控配置: Fsched 支持slurmctld(控制守护进程)在双主控模式下运行。集群可以配置一个主 slurmctld 和一个备份 slurmctld ,这两个守护进程通常运行在不同的物理节点上。
  • 自动故障转移: 当主 slurmctld 出现故障或不可用时,备份 slurmctld 会自动接管控制,继续管理作业队列和集群资源。这种自动故障转移机制确保了集群的持续可用性。
  • 数据同步: 主 slurmctld 会定期将当前的集群状态信息同步到备份 slurmctld,确保故障转移时备份节点拥有最新的状态信息。

2. 作业容错机制

Fsched 具备容错能力,能够在节点故障或网络中断的情况下继续运行。通过监控节点的健康状态,Fsched 可以自动检测故障并重新调度受影响的作业,最大限度地减少停机时间。 当头节点在极端情况下完全不可用的情况,Fsched被设计为在长达8小时的时间内,任何不受影响的计算节点上的作业将继续运行,这最大程度保障了HPC上的业务连续性。

3. slurmdbd的高可用性

  • 双节点配置: 类似于slurmctld,slurmdbd(SLURM数据库守护进程)也可以配置为主备模式,以保证集群的作业会计数据在主守护进程发生故障时不丢失。
  • 数据库备份: 使用支持高可用性的数据库管理系统(如MySQL或MariaDB的主从复制配置)可以确保SLURM的会计数据持久可用,避免单点故障。

4. 共享存储的使用

  • 共享文件系统: Fsched 依赖于共享文件系统(如NFS或Lustre)来存储配置文件、状态文件和作业脚本等。共享文件系统的使用确保了在 slurmctld 发生故障并切换到备用节点时,所有节点都能访问相同的文件和数据。
  • 集群日志和状态文件: 通过在共享存储中保存日志和状态文件,Fsched 的各个守护进程可以跨节点保持一致性和可用性。

用户认证

Fsched集群内,最佳实践是使用外置认证系统(LDAP或者NIS)为集群内所有节点提供统一的身份认证。Fsched集群使用标准的Linux用户和组。