Rocky Linux 9 HPC 集群部署全流程
摘要: 本文档详细记录了基于 Rocky Linux 9.4 搭建高性能计算 (HPC) 集群的完整过程。从零开始构建一个包含管理节点和计算节点的集群,集成 Slurm 作业调度系统、NFS 共享存储、MUNGE 认证及 Prometheus 监控体系。
1. 架构规划
1.1 节点角色
| 角色 | 主机名 | IP 地址 | 职责 |
|---|---|---|---|
| 管理节点 | mu01 | 192.168.8.100 | 调度(Slurmctld)、数据库、监控、NFS Server |
| 计算节点 | cu01-cu19 | 192.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
# ...
EOF2.2 SSH 免密互信
在管理节点生成密钥并分发:
bash
ssh-keygen -t rsa -N ""
# 批量分发
for i in {01..19}; do ssh-copy-id cu$i; done2.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/
done4. 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 munge5. 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-slurmd5.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=UP5.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-modules或Lmod管理环境变量。
7.2 总结
至此,一个功能完备的 HPC 集群已就绪。
- 计算: Slurm 统一调度。
- 存储: NFS 共享
/home和/opt。 - 监控: 全栈可视化。 这是科研计算、AI 训练的坚实底座。
