Linux集群成功的关键在于网络、时间、用户、存储四大地基:需同二层网络与双网卡隔离流量,chrony精准授时(±10ms),统一UID/GID普通用户免密SSH,NFS仅用于静态资源而状态服务须用本地盘或专业集群存储。

Linux集群不是简单把几台机器连上网就完事,核心在于服务协同、状态一致和故障隔离。很多新手卡在“能连通但跑不起来”这一步,问题往往出在基础设计上。
网络配置:别只盯着IP通不通
集群节点间不仅需要互通,更要满足低延迟、高带宽、无单点故障。常见误区是直接用办公网或NAT环境搭集群——结果心跳超时、数据同步卡顿、选举失败频发。
- 所有节点必须在同一二层网络(推荐VLAN隔离),禁用跨子网通信做集群后端
- 至少配双网卡:一块走业务流量,一块专跑心跳/共识协议(如Corosync、etcd)
- /etc/hosts里必须静态映射所有节点主机名,禁止依赖DNS——集群启动早于DNS服务
时间同步:不是“差不多准”就够
分布式协调(如Pacemaker、Kubernetes etcd)对时间偏差极其敏感。误差超过500ms就可能触发误判脑裂,误差超1s常导致证书失效或日志乱序。
- 统一使用chrony(非ntpd),配置为同一台内网NTP服务器,且所有节点禁用systemd-timesyncd
- 检查chronyc tracking与chronyc sources -v,确保offset稳定在±10ms内
- 集群部署前先运行chronyc makestep强制校正,避免首次启动因时间跳变被拒绝加入
用户与权限:root不是万能钥匙
很多教程让所有操作切root执行,结果导致SSH密钥混乱、sudo策略冲突、容器挂载权限异常。集群组件(如Slurm、MPI、K8s kubelet)实际需要的是明确的UID/GID一致性,而非盲目提权。
- 所有节点创建同名普通用户(如clusteradm),UID/GID全集群统一(如1001:1001)
- SSH免密登录必须基于该用户,且~/.ssh/config中指定User,禁用root直接登录
- 关键目录(/var/lib/pacemaker、/etc/kubernetes、/shared)用ACL或gid+sgid保障组写权限,不依赖chmod 777
存储共享:NFS不是集群文件系统的替代品
新手常把NFS当“集群盘”挂给所有节点跑数据库或调度器——结果出现元数据锁竞争、缓存不一致、静默数据损坏。
- 仅用NFS存放只读配置、镜像、脚本等静态资源;状态类服务(MySQL、Redis、etcd)必须用本地盘或专业集群存储(Ceph RBD、GlusterFS、Lustre)
- 若必须NFS,服务端启用no_root_squash + sync + hard + intr,并在客户端加nfsvers=4.2、rsize=1048576、wsize=1048576
- 所有节点mount点路径、选项、挂载顺序必须完全一致,建议用autofs或systemd mount unit统一管理
基本上就这些。不复杂但容易忽略——网络、时间、用户、存储四块地基打歪一点,上层应用就会反复报错重启。先验好这几项,再装软件,省下的调试时间够重装三遍系统。










