以下是一个详细的步骤指南,帮助你在本地使用 VMware Workstation 模拟 3 台虚拟机,搭建一个简单的 Slurm 集群,并通过实际作业调度快速掌握其核心功能。整个过程分为 虚拟机配置、Slurm 安装、集群部署、作业提交 四个阶段。
一、虚拟机环境准备
1. 创建 3 台 CentOS/Ubuntu 虚拟机
- 系统要求:CentOS 7/8 或 Ubuntu 20.04/22.04(本文以 CentOS 7 为例)。
- 虚拟机配置:
- 主节点 (master):1 核 CPU,2GB 内存,40GB 磁盘。
- 计算节点 (node1, node2):各 1 核 CPU,2GB 内存,40GB 磁盘。
 
- 网络配置:
- 使用 NAT 或桥接模式,确保三台虚拟机在同一子网内。
- 配置静态 IP(例如:master=10.0.0.10,node1=10.0.0.11,node2=10.0.0.12)。
- 修改 /etc/hosts添加主机名解析:# 所有节点执行 sudo vi /etc/hosts 10.0.0.10 master 10.0.0.11 node1 10.0.0.12 node2
 
2. 配置 SSH 免密登录
- 主节点生成密钥:ssh-keygen -t rsa # 默认路径,回车确认
- 将公钥分发到所有节点:ssh-copy-id master ssh-copy-id node1 ssh-copy-id node2
二、安装 Slurm 和依赖
1. 所有节点安装依赖
- 安装 EPEL 仓库(仅限 CentOS):sudo yum install epel-release
- 安装 Slurm 和 Munge(认证工具):# CentOS sudo yum install -y slurm slurm-slurmd slurm-slurmctld slurm-devel munge munge-devel # Ubuntu sudo apt install -y slurm slurm-slurmd slurm-slurmctld slurm-devel munge munge-devel
2. 配置 Munge(所有节点)
- 生成 Munge 密钥并同步:# 在主节点生成密钥 sudo dd if=/dev/urandom bs=1 count=1024 > /etc/munge/munge.key sudo chmod 400 /etc/munge/munge.key sudo chown munge:munge /etc/munge/munge.key # 将密钥复制到 node1 和 node2 scp /etc/munge/munge.key node1:/etc/munge/ scp /etc/munge/munge.key node2:/etc/munge/
- 启动 Munge 服务:sudo systemctl enable --now munge
三、配置 Slurm 集群
1. 主节点生成配置文件
- 生成默认配置文件:sudo cp /etc/slurm/slurm.conf.example /etc/slurm/slurm.conf sudo vi /etc/slurm/slurm.conf
- 修改 slurm.conf关键参数:ControlMachine=master # 主节点主机名 SlurmctldPort=6817 SlurmdPort=6818 AuthType=auth/munge # 定义节点(根据实际虚拟机配置调整) NodeName=node[1-2] Sockets=1 CoresPerSocket=1 ThreadsPerCore=1 State=UNKNOWN PartitionName=normal Nodes=node[1-2] Default=YES MaxTime=INFINITE State=UP
- 同步配置文件到所有节点:scp /etc/slurm/slurm.conf node1:/etc/slurm/ scp /etc/slurm/slurm.conf node2:/etc/slurm/
2. 启动 Slurm 服务
- 主节点启动控制服务:sudo systemctl enable --now slurmctld
- 计算节点启动计算服务:# 在 node1 和 node2 执行 sudo systemctl enable --now slurmd
3. 验证集群状态
- 查看节点是否在线:
 输出应类似:sinfo -NNODELIST NODES PARTITION STATE node1 1 normal idle node2 1 normal idle
四、提交 Slurm 作业
1. 编写测试作业脚本
- 创建作业脚本 test.sh:#!/bin/bash #SBATCH --job-name=hello_slurm #SBATCH --output=hello.out #SBATCH --nodes=1 #SBATCH --ntasks-per-node=1 echo "Hello from Slurm! Running on node: $(hostname)"
- 提交作业:sbatch test.sh
- 查看作业队列:squeue
2. 验证作业执行结果
- 查看输出文件 hello.out:
 输出应类似:cat hello.outHello from Slurm! Running on node: node1
五、故障排查
1. 常见问题
- 节点状态为 down:- 检查 slurmd服务是否启动:systemctl status slurmd
- 查看日志:journalctl -u slurmd
 
- 检查 
- 作业无法调度:
- 检查 slurm.conf是否一致:scontrol show config
- 查看主节点日志:tail -f /var/log/slurmctld.log
 
- 检查 
2. 关键命令速查
sinfo          # 查看分区和节点状态
squeue         # 查看作业队列
scontrol show nodes  # 显示节点详细信息
scancel <jobid>      # 取消作业
六、扩展场景
1. 多节点并行作业
- 提交 MPI 作业:#SBATCH --nodes=2 #SBATCH --ntasks-per-node=1 srun hostname
2. GPU 资源调度
- 修改 slurm.conf添加 GPU 支持:NodeName=gpu-node Gres=gpu:1 PartitionName=gpu Nodes=gpu-node
通过上述步骤,你可以在本地虚拟机环境中快速搭建一个 Slurm 集群,并理解其核心调度流程。实际生产环境中需根据硬件资源和业务需求调整配置参数。
 
                    
                     
                    
                 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号