Linux集群需确保时间同步、SSH权限最小化、元数据本地存储、网络平面隔离。用chrony同步时间,clusteradm账号替代root免密,etcd禁用NFS,管理/业务/心跳网分离。

Linux集群不是简单把几台机器连上网就完事,核心在于服务协同、状态一致和故障自治。新手常把“能ping通”当成集群跑起来了,结果一上真实负载就崩——问题往往出在设计阶段就埋了雷。
节点时间不同步:集群的隐形定时炸弹
所有节点必须严格时间同步,否则分布式锁失效、日志顺序错乱、证书校验失败都是分分钟的事。NTP服务不能只装不配,更不能依赖默认的公共NTP池(延迟高、不可控)。
- 用chrony替代ntpd,更适合虚拟化和云环境,收敛快、抗网络抖动
- 集群内指定1–2台可靠节点作为主时间源(如物理机或专用NTP服务器),其余节点只向其同步
- 定期检查:
chronyc tracking看偏移量,chronyc sources -v确认上游是否正常
SSH免密逻辑被滥用:安全与可用的失衡点
自动化部署时,很多人一股脑给所有节点双向配置root无密码SSH,看似方便,实则放大攻击面,且违反最小权限原则。
- 集群管理账户应独立于root,比如创建
clusteradm用户,仅授予必要命令的sudo权限(如systemctl、pcs、kubectl) - 免密仅限管理节点→工作节点的单向信任,禁止工作节点反向免密登录管理节点
- 用ssh-agent或Ansible Vault管理密钥,别把私钥明文扔进Git或脚本里
存储共享想当然:NFS不是万能胶水
用NFS挂载共享目录来存集群元数据(比如etcd数据、Kubernetes静态Pod清单、Pacemaker资源状态),是典型误区——NFS本身无强一致性保障,网络抖动或服务重启极易导致脑裂或数据损坏。
- etcd必须使用本地SSD+RAID,禁用NFS/cephfs等网络存储后端
- 需要共享配置?用GitOps方式(如Argo CD)拉取,或通过Consul/Etcd自身做键值分发
- 若真需共享存储,优先选支持Pacemaker资源代理的方案(如DRBD+OCF脚本),而非裸挂载
网络平面混用:性能与隔离的双重陷阱
把管理、业务、心跳、存储流量全压在同一张网卡甚至同一个VLAN里,轻则延迟飙升,重则心跳包丢包触发误隔离(fencing)。
- 至少划分三张逻辑网:管理网(SSH/API)、业务网(Service流量)、心跳网(Corosync/Pacemaker专用,建议直连双线+低MTU)
- 禁用交换机STP对心跳链路的影响,心跳接口建议关闭IPv6和多余协议栈(如net.bridge.bridge-nf-call-iptables)
- 用
ip route show table local确认各网卡绑定正确路由,避免跨网段绕行
基本上就这些。集群不是搭积木,而是建电网——每个节点是节点,更是电路中的一环。少一个保险丝,整条线都可能过载。不复杂,但容易忽略。










