Skip to content

Rocky Linux 9 HPC 集群部署全流程

摘要: 本文档详细记录了基于 Rocky Linux 9.4 搭建高性能计算 (HPC) 集群的完整过程。从零开始构建一个包含管理节点和计算节点的集群,集成 Slurm 作业调度系统、NFS 共享存储、MUNGE 认证及 Prometheus 监控体系。

1. 架构规划

1.1 节点角色

角色主机名IP 地址职责
管理节点mu01192.168.8.100调度(Slurmctld)、数据库、监控、NFS Server
计算节点cu01-cu19192.168.8.101+执行计算任务 (Slurmd)

1.2 存储规划

  • System: 300G (Root)
  • Data: 挂载 /data,通过 NFS 共享。
  • Apps: 挂载 /opt,共享编译器和应用软件。
  • Home: 挂载 /home,用户数据漫游。

2. 基础系统初始化

2.1 网络与安全

所有节点执行:

bash
# 1. 设置主机名
hostnamectl set-hostname mu01

# 2. 关闭防火墙与 SELinux
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

# 3. 配置 Hosts 解析
cat >> /etc/hosts <<EOF
192.168.8.100   mu01
192.168.8.101   cu01
# ...
EOF

2.2 SSH 免密互信

在管理节点生成密钥并分发:

bash
ssh-keygen -t rsa -N ""
# 批量分发
for i in {01..19}; do ssh-copy-id cu$i; done

2.3 Chrony 时间同步

HPC 集群对时间一致性要求极高。

  • 管理节点: 配置 allow 192.168.8.0/24
  • 计算节点: 配置 server 192.168.8.100 iburst

3. 存储与用户系统

3.1 NFS 共享

管理节点 (Server):

bash
yum install -y nfs-utils
cat >> /etc/exports <<EOF
/home   192.168.8.0/24(rw,sync,no_root_squash)
/opt    192.168.8.0/24(rw,sync,no_root_squash)
EOF
systemctl enable --now nfs-server

计算节点 (Client):

bash
yum install -y nfs-utils
mount 192.168.8.100:/home /home
mount 192.168.8.100:/opt /opt
# 添加至 /etc/fstab 实现开机挂载

3.2 账号同步 (NIS/LDAP 替代方案)

对于小规模集群,直接同步文件即可:

bash
# 在管理节点新建用户后
for node in cu01 cu02 ...; do
  scp /etc/passwd /etc/group /etc/shadow $node:/etc/
done

4. MUNGE 认证服务

MUNGE 是 Slurm 的认证基础,要求全集群 Key 严格一致。

4.1 安装

bash
yum install -y munge munge-libs munge-devel
# 如果源里没有,需编译安装

4.2 密钥分发

在管理节点生成 Key:

bash
create-munge-key
# 将 Key 同步到所有计算节点
scp /etc/munge/munge.key root@cuXX:/etc/munge/

4.3 权限修正与启动

所有节点执行:

bash
chown munge:munge /etc/munge/munge.key
chmod 400 /etc/munge/munge.key
systemctl enable --now munge

5. Slurm 调度系统部署

版本: Slurm 24.05

5.1 数据库配置 (MariaDB)

在管理节点安装:

bash
yum install -y mariadb-server
systemctl enable --now mariadb

# 创建数据库和用户
mysql -u root -p
> CREATE DATABASE slurm_acct_db;
> CREATE USER 'slurm'@'localhost' IDENTIFIED BY 'Password123';
> GRANT ALL ON slurm_acct_db.* TO 'slurm'@'localhost';

5.2 编译与安装 Slurm

bash
# 依赖安装
yum install -y rpm-build python3 readline-devel pam-devel perl hwloc-devel

# 编译 RPM
rpmbuild -ta slurm-24.05.2.tar.bz2

# 安装
# 管理节点: 安装 slurm, slurm-slurmctld, slurm-slurmdbd
# 计算节点: 安装 slurm, slurm-slurmd

5.3 配置文件

  • /etc/slurm/slurm.conf: 核心配置
  • /etc/slurm/slurmdbd.conf: 数据库连接配置
  • /etc/slurm/cgroup.conf: 资源隔离配置

关键配置示例 (slurm.conf):

ini
ClusterName=hpccluster
SlurmctldHost=mu01
MpiDefault=none
ProctrackType=proctrack/cgroup
ReturnToService=1
SlurmctldPidFile=/var/run/slurmctld.pid
SlurmdPidFile=/var/run/slurmd.pid
SlurmdSpoolDir=/var/spool/slurmd
SlurmUser=slurm

# 节点定义
NodeName=cu[01-19] CPUs=24 RealMemory=94000 State=UNKNOWN
PartitionName=debug Nodes=cu[01-19] Default=YES MaxTime=INFINITE State=UP

5.4 启动服务

管理节点:

bash
systemctl enable --now slurmdbd
systemctl enable --now slurmctld

计算节点:

bash
systemctl enable --now slurmd

验证: sinfo 应显示节点状态为 idle

6. 监控系统 (Prometheus + Grafana)

6.1 部署 Node Exporter

在所有节点运行,采集 CPU/内存/磁盘指标。

bash
./node_exporter &

6.2 部署 Prometheus

在管理节点配置 prometheus.yml,通过 file_sd_configs 自动发现所有计算节点。

6.3 部署 Grafana

安装 Grafana RPM,导入官方 Dashboard (ID: 1860 或类似 HPC 模板)。

7. 科研环境与总结

7.1 软件栈

  • 编译器: Intel oneAPI (icc/ifort) 或 GCC 11+。
  • MPI: OpenMPI 4.x 或 Intel MPI。
  • Module: 安装 environment-modulesLmod 管理环境变量。

7.2 总结

至此,一个功能完备的 HPC 集群已就绪。

  • 计算: Slurm 统一调度。
  • 存储: NFS 共享 /home/opt
  • 监控: 全栈可视化。 这是科研计算、AI 训练的坚实底座。

AI-HPC Organization