Valkey Cluster Info:集群状态查询完全指南
一、为什么需要CLUSTER INFO?
在分布式系统中,集群状态的透明化是运维和开发的核心需求。当你管理Valkey Cluster(集群)时,是否曾面临这些痛点:
- 如何快速判断集群是否处于可用状态?
- 节点间数据同步是否正常?
- 槽位(Slot)分配是否均衡?
- 网络分区发生时如何定位故障源?
CLUSTER INFO命令提供了集群运行的"全景仪表盘",通过解析其输出的40+关键指标,可实时掌握集群健康状态、性能瓶颈和潜在风险。本文将系统讲解该命令的使用方法、指标解析及实战场景,助你成为Valkey Cluster诊断专家。
二、命令基础:使用与输出格式
2.1 基本语法
# 直接在集群节点执行
valkey-cli -c -h 127.0.0.1 -p 7000 CLUSTER INFO
# 通过管道筛选关键指标
valkey-cli -c CLUSTER INFO | grep -E "cluster_state|used_memory|slots"
2.2 输出结构(精简版)
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_sent:12345
cluster_stats_messages_received:12300
used_memory:1073741824
used_memory_human:1.00G
...
2.3 核心指标分类
类别 | 关键指标 | 作用 |
---|---|---|
集群状态 | cluster_state, cluster_size | 整体健康度与规模 |
槽位分布 | cluster_slots_assigned/ok/fail | 数据分片可用性 |
节点信息 | cluster_known_nodes, cluster_nodes_size | 节点数量与类型 |
通信统计 | cluster_stats_messages_{sent/received} | 节点间通信健康度 |
内存使用 | used_memory, used_memory_peak | 资源消耗监控 |
三、深度解析:核心指标实战意义
3.1 集群健康状态指标
cluster_state
- 取值范围:
ok
/fail
- 关键意义:集群是否可写入的核心标志
- 故障场景:当
cluster_state=fail
时,需立即检查cluster_slots_fail
和cluster_known_nodes
# 健康集群示例
127.0.0.1:7000> CLUSTER INFO
cluster_state:ok
...
# 故障集群示例(部分槽位不可用)
cluster_state:fail
cluster_slots_fail:5
cluster_size
- 含义:集群中主节点(Primary)的数量
- 与cluster_known_nodes的关系:
cluster_known_nodes = cluster_size + 副本节点数
3.2 槽位分配指标(16384槽位监控)
Valkey Cluster将数据分片为16384个槽位,这些指标直接反映数据分布健康度:
槽位异常排查流程
- 当
cluster_slots_fail > 0
时,执行CLUSTER SLOTS
定位具体故障槽位 - 通过
CLUSTER NODES
找到负责该槽位的节点 - 检查节点日志确认故障原因(网络/内存/持久化问题)
3.3 节点通信指标
cluster_stats_messages_{sent/received}
- 正常范围:节点间通信量应大致均衡
- 异常模式:单节点
sent >> received
可能存在网络分区
# 节点通信失衡示例
cluster_stats_messages_sent:100000
cluster_stats_messages_received:1000
3.4 内存与性能指标
指标 | 说明 | 警戒线 |
---|---|---|
used_memory | 节点内存使用量(字节) | 超过maxmemory的80% |
used_memory_peak | 内存使用峰值 | 接近物理内存限制 |
mem_fragmentation_ratio | 内存碎片率 | >1.5或<0.8 |
四、实战场景:CLUSTER INFO的高级应用
4.1 自动化监控脚本
#!/bin/bash
# 集群健康检查脚本
CLUSTER_INFO=$(valkey-cli -c -h 127.0.0.1 -p 7000 CLUSTER INFO)
# 提取关键指标
CLUSTER_STATE=$(echo "$CLUSTER_INFO" | grep cluster_state | cut -d: -f2)
SLOTS_FAIL=$(echo "$CLUSTER_INFO" | grep cluster_slots_fail | cut -d: -f2)
USED_MEMORY=$(echo "$CLUSTER_INFO" | grep used_memory_human | cut -d: -f2)
# 告警逻辑
if [ "$CLUSTER_STATE" != "ok" ] || [ "$SLOTS_FAIL" -gt 0 ]; then
echo "集群异常!状态=$CLUSTER_STATE, 故障槽位=$SLOTS_FAIL" | mail -s "Valkey Cluster Alert" admin@example.com
fi
echo "当前状态: $CLUSTER_STATE, 内存使用: $USED_MEMORY, 故障槽位: $SLOTS_FAIL"
4.2 集群扩容前后对比分析
扩容前
cluster_size:3
cluster_known_nodes:6
used_memory_human:3.00G
扩容后(新增2主2从)
cluster_size:5
cluster_known_nodes:10
used_memory_human:2.80G # 内存压力降低
4.3 网络分区故障诊断
当发生网络分区时,CLUSTER INFO
会呈现特征性变化:
- 分区一侧
cluster_state:ok
(少数派可能保持ok但不可写入) - 分区两侧
cluster_current_epoch
出现差异 cluster_stats_messages_received
停止增长
五、CLUSTER INFO与其他诊断命令的协同使用
命令组合 | 典型应用场景 |
---|---|
CLUSTER INFO + CLUSTER NODES | 节点状态与槽位分布联合诊断 |
CLUSTER INFO + INFO replication | 主从同步状态深度分析 |
CLUSTER INFO + INFO memory | 内存问题与集群状态关联排查 |
# 一键获取集群健康报告
valkey-cli -c CLUSTER INFO > cluster_health.txt
valkey-cli -c CLUSTER NODES >> cluster_health.txt
valkey-cli -c INFO memory >> cluster_health.txt
六、指标优化与集群调优建议
6.1 基于CLUSTER INFO的调优方向
-
槽位均衡:当
cluster_slots_assigned=16384
但分布不均时,执行valkey-cli --cluster rebalance 127.0.0.1:7000
-
通信优化:若
cluster_stats_messages_sent
持续过高,检查- 网络带宽是否饱和
cluster-node-timeout
配置是否合理(默认15000ms)
-
内存优化:当
used_memory_peak
接近上限,考虑- 启用内存碎片整理(
CONFIG SET activedefrag yes
) - 调整
maxmemory-policy
为allkeys-lru
- 启用内存碎片整理(
6.2 关键指标阈值建议
指标 | 健康阈值 | 告警阈值 |
---|---|---|
cluster_slots_fail | 0 | >0 |
cluster_stats_messages_sent/received | 差值<1000 | 差值>10000 |
mem_fragmentation_ratio | 1.0~1.5 | <0.8或>2.0 |
七、常见问题与解决方案
Q1: cluster_state显示ok但部分命令执行失败?
A:检查cluster_slots_pfail
指标,可能存在处于pfail
状态的槽位(尚未升级为fail
)。执行CLUSTER FAILOVER FORCE
可触发故障转移。
Q2: cluster_size与实际节点数不符?
A:可能存在处于handshake
状态的未加入节点。通过CLUSTER NODES
检查节点状态,清理无效节点:
valkey-cli --cluster del-node 127.0.0.1:7000 <node-id>
Q3: 如何监控集群指标变化趋势?
A:结合Prometheus+Grafana:
- 部署valkey_exporter采集指标
- 导入Valkey Cluster Dashboard
- 设置关键指标告警(如
valkey_cluster_slots_fail{state="fail"} > 0
)
八、总结与最佳实践
CLUSTER INFO作为Valkey Cluster的"听诊器",是分布式环境下不可或缺的诊断工具。建议:
- 常态化监控:将
cluster_state
、cluster_slots_fail
和used_memory
纳入监控系统 - 定期分析:每周检查
cluster_stats_messages_*
和槽位分布,提前发现潜在问题 - 故障演练:通过模拟网络分区等场景,熟悉CLUSTER INFO的异常指标表现
通过本文掌握的指标解析方法和实战技巧,你可以构建起完善的Valkey Cluster监控体系,确保分布式数据存储的高可用与高性能。
收藏本文,下次处理集群故障时,它将成为你的快速诊断手册!如有疑问,欢迎在评论区分享你的集群管理经验。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考