多台云电脑组建小型算力集群,内网调度任务
多台云电脑组建小型算力集群,核心目标是把分散的计算资源通过内网连接起来,让任务可以自动分配到不同机器上执行。
本文面向零基础用户,从网络规划、SSH 免密配置到任务调度脚本,一步步带你完成搭建,最终能在一台主控机上提交任务并拿到汇总结果。
先确认云电脑的网络与系统条件
开始操作前,需要确保所有云电脑处于同一内网或能通过内网 IP 互相访问。
多数云服务商在控制台提供“内网互通”或“私有网络”设置,建议先登录控制台确认以下信息:
- 每台云电脑的内网 IP 地址,例如
192.168.1.10、192.168.1.11。 - 操作系统建议统一为 Ubuntu 20.04 或 CentOS 7 以上,避免依赖版本差异。
- 确认安全组或防火墙放行 SSH 端口,默认是
22。 - 准备一台作为主控机,其余作为计算节点。
如果云电脑之间无法 ping 通,优先检查控制台里的内网互通开关和安全组规则,而不是急着改系统配置。
配置 SSH 免密登录,打通节点通信
内网调度任务依赖主控机免密访问各计算节点。
在主控机上执行以下命令生成密钥:
ssh-keygen -t rsa -b 4096
一路回车即可,默认生成在 ~/.ssh/id_rsa。
接着把公钥分发到每台计算节点:
ssh-copy-id root@192.168.1.11
ssh-copy-id root@192.168.1.12
输入一次节点密码后,后续登录不再需要密码。
验证方式:
ssh root@192.168.1.11 "hostname"
如果能直接返回节点主机名,说明免密配置成功。注意:如果云服务商默认用户不是 root,请把命令中的 root 换成实际用户名,并确保该用户有执行任务的权限。
用任务队列在内网分发计算任务
小型集群不需要复杂调度系统,用 GNU Parallel 或简单的 SSH 循环就能完成内网调度。
推荐先在主控机安装 GNU Parallel:
apt update && apt install parallel -y
准备一个任务列表文件 jobs.txt,每行一个任务命令:
python3 compute.py --id 1
python3 compute.py --id 2
python3 compute.py --id 3
然后用 Parallel 把任务分发到不同节点执行:
parallel -a jobs.txt --sshlogin root@192.168.1.11,root@192.168.1.12 --jobs 2
这条命令会把 jobs.txt 中的任务轮流分配到两个节点,
同时执行 2 个任务。判断调度是否生效的标准是:
任务日志中能看到不同节点的主机名,
且 CPU 使用率在多台机器上同时上升。
如果任务依赖相同的数据文件,需要提前用 scp 或 rsync 同步到各节点,例如:
rsync -avz /data/ root@192.168.1.11:/data/
常见报错与避坑说明
搭建过程中容易遇到三类问题:
- SSH 连接超时:优先检查内网 IP 是否写错、安全组是否放行 22 端口,以及节点是否处于运行状态。
- 任务权限不足:如果计算节点使用非 root 用户,确保该用户对任务目录有读写权限,必要时用
chmod调整。 - 任务结果分散:Parallel 默认把输出打印到终端,建议在任务命令中重定向到共享存储或各自节点目录,再统一收集。
不要把公钥私钥文件上传到公共仓库,也不要在多台机器间复制私钥,每台主控机单独生成一对密钥更安全。
验证集群是否按预期工作
完成配置后,用一个小任务做端到端验证。
在主控机执行:
parallel -a jobs.txt --sshlogin root@192.168.1.11,root@192.168.1.12 --jobs 2 --results /tmp/results
执行结束后查看 /tmp/results 目录,里面会按节点和任务编号保存输出。
如果每个任务都有对应结果文件,且文件内容正确,说明内网调度任务已经跑通。
日常使用时,只需要更新 jobs.txt 并重新执行 parallel 命令即可。
对于更大规模的任务,可以再考虑 Slurm 或 Kubernetes,但多台云电脑组建小型算力集群的场景下,SSH 加任务队列已经足够稳定。
关于内网调度的几个常见疑问
云电脑重启后内网 IP 会变吗? 多数云服务商的内网 IP 在重启后保持不变,但部分按量付费实例可能变化,建议以控制台实际显示为准,必要时绑定弹性网卡。
任务执行到一半节点掉线怎么办? Parallel 会报错并继续执行其他任务,可以查看日志后重新提交失败的任务,或在脚本中加入重试逻辑。
一定要用 GNU Parallel 吗? 不一定,
也可以用 xargs -P 或自己写 Shell 循环,
但 Parallel 对多节点 SSH 分发支持更直接,
适合零基础用户快速上手。
如果你正在处理多台云电脑组建小型算力集群和内网调度任务,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。