5405 是什么
5405 是 Linux 高可用栈(Pacemaker 加 Corosync)的默认通信端口:集群节点之间通过它交换心跳、完成成员管理与仲裁。Corosync 使用 totem 协议通信,早期以多播为主,现代部署更多用单播并显式列出节点地址。心跳链路的质量直接决定集群行为:丢包或防火墙未放行时,集群会反复脑裂,资源在节点之间乱漂移。
基本信息
| 服务 | Corosync(默认 5405/UDP) |
|---|---|
| 协议 | UDP,多播或单播 |
| 用途 | 集群心跳、成员管理与仲裁 |
| 安全等级 | 仅集群节点之间放行 |
| 上层组件 | Pacemaker 负责资源管理与切换 |
典型使用场景
- 双机热备:两台服务器做主备切换
- 多节点集群:数据库与中间件的高可用部署
- 网络改造:把多播心跳改为单播以适配网络
- 故障排查:资源无故漂移时先查心跳链路
- 防火墙配置:按集群节点清单精确放行
- 验收测试:模拟节点宕机验证切换是否正常
心跳状态与规则核对
心跳状态与规则核对
corosync-cfgtool -s # 查看链路状态与节点 ID
corosync-cmapctl | grep -i totem | head # 查看 totem 相关参数
firewall-cmd --add-port=5405/udp --permanent && firewall-cmd --reload # 放行心跳
firewall-cmd --list-ports | grep 5405 # 确认规则已生效心跳故障的表现
| 表现 | 可能原因 | 排查动作 |
|---|---|---|
| 资源反复漂移 | 心跳丢包或链路抖动 | 查交换机端口错包与链路质量 |
| 节点互相看不到 | 防火墙未放行 5405 | 按节点清单核对策略 |
| 仲裁失效整体停摆 | 心跳完全中断 | 确认物理链路与冗余路径 |
生产集群建议使用独立心跳链路或至少独立 VLAN:与管理网络混跑时,一次管理网抖动就可能触发资源漂移。
多播改单播需要在配置里显式列出所有节点地址,改动后整集群同步重启,否则会出现部分节点通信失败。
资源漂移类故障事后归因非常困难,建议在心跳链路上保留长期流量与错误计数,为复盘留下证据。
防火墙规则要按节点清单精确放行,不要整网段开放 5405;这属于集群内部通信,不应对其它主机开放。