背景
前两天Redis cluster 集群节点宿主机故障,等故障主机恢复后,我启动实例重新加入集群后,因为业务服务器配置的原因,新加入节点连接数瞬间被打满,几番重启后,发现在执行redis-cli --cluster check时,集群出现nodes don’t agree about configuration 。字面意思是有节点保存的集群状态不一致。但具体是什么不一致,百度一番还是有点一头雾水。
源代码分析
由于是使用的5.0.7版本的redis-cli 做的集群管理。不方方便查看源代码,想到低版本的redis-trib.rb 这个ruby脚本逻辑和5.0.7 的redis-cli 几乎一致。于是从redis-trib.rb 查看源代码,首先检索关键字 don’t agree about configuration :
632 def check_config_consistency
633 if !is_config_consistent?
634 cluster_error "[ERR] Nodes don't agree about configuration!"
635 else
636 xputs "[OK] All nodes agree about slots configuration."
637 end
638 end
639
640 def is_config_consistent?
641 signatures=[]
642 @nodes.each{|n|
643 signatures << n.get_config_signature
644 }
645 return signatures.uniq.length == 1
646 end
发现主

本文详细解析了RedisCluster中配置不一致的问题,通过源代码分析定位到具体原因,并提供了有效的解决方案,包括如何检查和修正节点间配置差异。
最低0.47元/天 解锁文章
3527

被折叠的 条评论
为什么被折叠?



