外观
corosync 冗余链路规划
集群与高可用提到过:corosync 网络不稳定,会被当成节点失联,进而触发 HA 的 fencing 自我重启。这篇讲怎么在网络层面把这个风险降下来。
为什么它比看起来重要
corosync 靠成员之间持续的心跳判断"谁还活着"。如果心跳走的网络和虚拟机的业务流量、备份流量、迁移流量混在一起:
- 一次大流量的备份或迁移,可能挤占 corosync 心跳的带宽或增加延迟。
- corosync 把这种延迟误判为节点失联,触发不必要的 quorum 重新计算,严重时触发 fencing 重启一个其实完好的节点。
混跑网络在小集群上"看起来没事",不代表安全
家庭实验室的单一网络环境下,大多数时候不会出问题,因为流量本来就不大。一旦某次备份、迁移或者网络设备本身抖动叠加发生,后果是该节点被当成故障重启,即使它自己什么问题都没有。规划独立链路的收益在"小概率但后果严重"的场景才会体现出来。
基本原则
| 建议 | 原因 |
|---|---|
| corosync 走独立的物理网卡/网段 | 避免和存储、迁移、业务流量抢带宽和延迟预算 |
| 延迟低且稳定,建议控制在 5 ms 以内 | corosync 对延迟抖动比对绝对带宽更敏感 |
| 至少规划一条冗余链路,且和主链路走不同物理路径 | 单链路本身(哪怕做了网卡 bond)在某些故障场景下仍是单点,链路层面的冗余更彻底 |
冗余链路数量上限为 8 条(link0 至 link7) | 官方文档给出的硬上限,普通场景两条足够 |
创建集群时就规划好
最省心的做法是在组建集群/加入节点时就通过 --link0、--link1 指定好对应网络:
sh
# 创建集群时,Web UI 的 Create Cluster 对话框可以直接指定 Link 0,并用 Add 追加更多链路
# 加入节点时指定独立的 corosync 网络
pvecm add <集群节点 IP> --link0 <本机在 corosync 网络里的 IP>给已有集群追加或调整链路
改动正在运行集群的 corosync 网络配置,操作错误会让所有节点同时失联
corosync 的配置文件 /etc/pve/corosync.conf 一旦保存,变更会立即同步到所有节点并触发配置重载。如果新配置里的地址、接口写错了,可能导致全部节点同时判定不出 quorum,不是某一台节点的问题,而是集群整体瘫痪。
影响范围:全体节点的集群通信,进而影响所有依赖集群状态的功能(Web UI 跨节点管理、迁移、HA)。单机运行的客户机本身通常不受影响(它们不依赖 corosync 才能跑),但你会暂时失去集中管理和 HA 保护。
前置条件:
- 在改动前备份
/etc/pve/corosync.conf。 - 确认新的网络已经在所有节点上配置好、互相之间能稳定通信(用
ping先验证,不要假设),再改 corosync 配置。 - 如果集群开了 HA,先按维护模式与 HA arm/disarm的方法把 HA 置于维护/disarm 状态,避免修改过程中的短暂抖动触发 fencing。
回退方法:用之前备份的 corosync.conf 覆盖回去,保存后同样会立即同步生效;如果集群已经失联到连 /etc/pve 都无法正常写入,需要参考官方文档里"corosync 出问题后的手工恢复"流程,这部分风险更高,建议先在测试集群上演练过一次完整的改动和回滚流程,再在生产集群上操作。
具体的配置文件语法(现代版本基于 kronosnet,字段和历史上基于 RRP 的旧版本已经不同),请对照你当前版本的官方 Cluster Manager 文档里 "Cluster Network" 一节逐项核对,不要照抄网上找到的、可能是针对旧版本(4.x/5.x 或更早)的 ring0_addr/rrp_mode 类配置——这些术语在使用 kronosnet 的版本里已经不适用。
检查结果
sh
# 确认链路数量和状态
pvecm status
# 查看 corosync 自身对链路健康状态的判断
corosync-cfgtool -s改动后,观察一段时间(至少覆盖一次日常的备份/迁移高峰),确认没有出现意外的 quorum 波动或节点自我重启记录。
常见问题
改完之后所有节点都连不上了。 立刻用备份的 corosync.conf 回滚。这也是为什么改动前一定要先备份、先在测试环境验证的原因。
只有一条链路,想知道要不要加第二条。 如果这条链路和其他高带宽流量(备份、迁移、Ceph)共用同一张网卡或同一个网段,强烈建议至少分离出一条独立链路;如果本来就有专用的低负载管理网,短期内风险可以接受,但仍建议列入后续改造计划。
加了冗余链路,还是偶尔看到节点短暂失联的记录。 检查两条链路是不是共享了同一段物理线路或同一台交换机——链路数量的冗余,如果物理路径没有真正分开,起不到应有的保护效果。