首页/数据/Redis 进阶速查/CLUSTER NODES:拓扑明细解读

CLUSTER NODES:拓扑明细解读

CLUSTER NODES 每行一个节点:节点 ID、地址、flags(master/slave/myself/fail)、主节点、时间戳、纪元、槽分配与连接状态。

Redis 进阶速查数据更新于 2026-10-13

拓扑明细的原始视图

CLUSTER NODES 每行输出一个节点,是当前节点视角下对全集群的认知快照。每行依次给出节点 ID、ip:port(含集群总线端口)、flags 标记、所属主节点 ID(仅从节点有)、最后交互时间戳、config-epoch、连接状态以及该节点负责的槽区间。它既是故障排查的第一入口,也是核对拓扑是否符合规划的第一手材料,但字段紧凑、含义密集,需要按列读而不是整体扫。

基本信息

每行字段节点ID 地址 flags 主节点ID 时间戳 epoch 连接状态 槽区间
flags 常见值myself / master / slave / fail / handshake / noaddr
槽表示区间写作 0-5460,单槽直接写数字
重点信号出现 fail 或 disconnected 需要立即关注
使用建议节点多时用脚本解析,而不是肉眼逐行比对

典型使用场景

  • 故障排查第一眼:确认哪些节点已被标记为 fail
  • 核对槽覆盖是否完整,0 到 16383 是否都有归属
  • 确认主从配对关系与容量规划是否一致
  • 扩容或缩容后对比前后输出,确认拓扑变化符合预期
  • 把输出落档,作为故障复盘时的拓扑基线

常见用法

常见用法
redis-cli -p 7000 CLUSTER NODES                       # 完整拓扑
redis-cli -p 7000 CLUSTER NODES | grep -E 'fail|handshake'  # 只看异常节点
redis-cli -p 7000 CLUSTER NODES | grep myself              # 确认自己连的是哪个节点
redis-cli -p 7000 CLUSTER NODES | awk '{print $9}' | sort | head  # 粗略看槽区间分布
redis-cli --cluster check 10.0.0.11:7000                    # 需要结论时改用体检命令

flags 速读

flags含义处置倾向
myself当前连接的节点用于确认自己连到了谁
master主节点正常角色标记
slave从节点后面一列是对应主节点 ID
fail已被多数节点判定失效先观察自动故障转移,再决定是否人工介入
handshake握手进行中长时间不消失说明节点加入异常
noaddr地址未知常见于 NAT 或地址配置错误的场景
输出中的时间戳与 epoch 属于内部状态,人工解读成本高。需要判断集群整体是否健康时,优先使用 redis-cli --cluster check,它会把槽覆盖、主从配对、配置一致性等关切点直接汇总出来。

易错点

  • 看到 fail 就手工改拓扑,忽略了集群可能正在自行完成故障转移,反而制造出双主
  • 节点数量多时靠肉眼逐行比对,漏掉槽区间重叠或空洞这类结构性错误
  • 把集群总线端口(通常为数据端口加 10000)当成数据端口使用,导致地址配置错误、节点无法互认
  • 把输出当作实时状态长期缓存,拓扑变化后判断依据已经过期

数据来源与参考

  • Redis 官方文档:CLUSTER NODES 命令
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌