redis-cluster-failover

Redis Cluster 故障切换异常的定位

现象

集群出现 CLUSTERDOWN、MASTERDOWN、槽位未覆盖,客户端大量 MOVED/ASK 或连接失败。可能伴随主从切换、节点失联和延迟升高。

快速定位

redis-cli -c -h <node> -p 6379 cluster info
redis-cli -c -h <node> -p 6379 cluster nodes
redis-cli -c -h <node> -p 6379 cluster slots
redis-cli --cluster check <node>:6379
redis-cli INFO replication

节点日志:

journalctl -u redis-server --since '30 min ago'

常见根因

  1. master 节点宕机或网络分区,未能完成选举。
  2. 集群总线端口(默认 16379)被防火墙拦截。
  3. 节点超时/握手参数不匹配,误判下线。
  4. 槽位迁移未完成,或 cluster-require-full-coverage 导致整体不可用。
  5. 主从复制延迟大,切换后丢数据。

修复

相关命令

读完自测

合上页面,先回答,再展开对照。

  1. 集群报 CLUSTERDOWN 时先查什么?
  2. 集群总线端口被拦截会有什么表现?
  3. 槽位问题的修复与手动切换要注意什么?
答案
  1. 用 cluster info、cluster nodes、cluster slots 和 redis-cli --cluster check 确认节点角色、槽位覆盖和握手状态。
  2. 节点间无法握手通信,可能误判下线、选举失败,表现为槽位未覆盖和切换异常。
  3. 用 redis-cli --cluster fix 修复槽位,谨慎手动 CLUSTER FAILOVER,并调整 cluster-node-timeout、评估 cluster-require-full-coverage。