在搭建Redis5.x版本的集群环境出现各节点无法互相发现与Hash槽分配异常 CLUSTERDOWN Hash slot not served的情况

在Linux同一台服务器下搭建伪集群——

127.0.0.1:6380
127.0.0.1:6381
127.0.0.1:6382
127.0.0.1:6383
127.0.0.1:6384
127.0.0.1:6385

启动Redis集群,然后连接其中一台客户端,随便set一个指令,测试集群是否可行,结果报出异常(error)CLUSTERDOWN Hash slot not served提示——

[root@localhost bin]# redis-cli -c -p 6380
127.0.0.1:6380> auth longshine
OK
127.0.0.1:6380> set a 1
(error) CLUSTERDOWN Hash slot not served

首先,先看一下集群各个节点是否能互相发现,执行以下指令查看各个节点连接情况—— cluster nodes

127.0.0.1:6380> cluster nodes
e59d13b92dca3edd52d2928083f85aff5a87cb84 :6380@16380 myself,master - 0 0 0 connected

接着再检查一下当前集群状态,发现目前状态为fail,说明集群没有互连成功—cluster info

127.0.0.1:6380> cluster info
cluster_state:fail
cluster_slots_assigned:0
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:1
cluster_size:0
cluster_current_epoch:0
cluster_my_epoch:0
cluster_stats_messages_sent:0
cluster_stats_messages_received:0

发现,Redis搭建的集群没有互相发现,故而,只需要在其中一台客户端上执行以下指令,手动帮助该节点去发现其他两个节点,因集群是互连的,所以只需要在其中一台上手动发现另外两台即可— cluster meet

127.0.0.1:6380> cluster meet 127.0.0.1 6387
OK
127.0.0.1:6380> cluster meet 127.0.0.1 6381
OK
127.0.0.1:6380> cluster meet 127.0.0.1 6382
OK
127.0.0.1:6380> cluster meet 127.0.0.1 6383
OK
127.0.0.1:6380> cluster meet 127.0.0.1 6384
OK
127.0.0.1:6380> cluster meet 127.0.0.1 6385
OK

完成以上指令,查看各个节点状态,发现当前节点已经能发现其他几台机器节点了— cluster nodes

127.0.0.1:6380> cluster nodes
b5736409d6e318fe53942b8cfd3a47c9dd8406e3 127.0.0.1:6383@16383 master - 0 1669613645000 3 connected
19e38f8eaca8be3d8e955ec95632c36e9f9a748d 127.0.0.1:6381@16381 master - 0 1669613646000 1 connected
e59d13b92dca3edd52d2928083f85aff5a87cb84 127.0.0.1:6380@16380 myself,master - 0 1669613644000 0 connected
b3e67205d783eaef13c3968150367100bdab4d07 127.0.0.1:6385@16385 master - 0 1669613646000 5 connected
23bcc3819d06c6853949a59d33ddaf922fb86fef 127.0.0.1:6384@16384 master - 0 1669613647596 4 connected
054b0b5ff6f383c34c33ba98a5ac2fb9658f08e4 127.0.0.1:6382@16382 master - 0 1669613646593 2 connected

再测试集群状态,发现状态依然还是失败,且还报CLUSTERDOWN Hash slot not served

127.0.0.1:6380> set key1 ll
(error) CLUSTERDOWN Hash slot not served
127.0.0.1:6380> cluster info
cluster_state:fail
cluster_slots_assigned:0
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:0
cluster_current_epoch:5
cluster_my_epoch:0
cluster_stats_messages_ping_sent:1211
cluster_stats_messages_pong_sent:53
cluster_stats_messages_meet_sent:13
cluster_stats_messages_sent:1277
cluster_stats_messages_ping_received:53
cluster_stats_messages_pong_received:47
cluster_stats_messages_received:100

到这一步,说明当前集群存在hash槽异常情况,那么,可以执行以下指令修复下——

[root@localhost bin]# ./redis-cli --cluster fix 127.0.0.1:6380

回车执行,顿时就会运行打印很多以下信息,说明正在对16384个hash槽重新分配——

>>> Covering slot 15195 with 127.0.0.1:6380
>>> Covering slot 4062 with 127.0.0.1:6380
>>> Covering slot 7708 with 127.0.0.1:6380
>>> Covering slot 11909 with 127.0.0.1:6380
>>> Covering slot 9828 with 127.0.0.1:6380
>>> Covering slot 5152 with 127.0.0.1:6380
>>> Covering slot 8446 with 127.0.0.1:6380
>>> Covering slot 5345 with 127.0.0.1:6380
......

等运行完成后,我们再检查一下集群状态,发现状态已经由刚刚的fail变出ok了,说明hash槽已经正确分配——

127.0.0.1:6380> cluster info
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:6
cluster_current_epoch:42
cluster_my_epoch:41
cluster_stats_messages_ping_sent:1382
cluster_stats_messages_pong_sent:224
cluster_stats_messages_meet_sent:13
cluster_stats_messages_sent:1619
cluster_stats_messages_ping_received:224
cluster_stats_messages_pong_received:218
cluster_stats_messages_received:442
127.0.0.1:6380> set key1 lll
OK
127.0.0.1:6380> get key1
"lll"

这样就解决了。

Redis集群Hash槽分配异常 CLUSTERDOWN Hash slot not served的解决方式相关推荐

  1. Redis集群配置和常见异常解决

    Redis集群配置和常见异常解决 参考文章: (1)Redis集群配置和常见异常解决 (2)https://www.cnblogs.com/hzb462606/p/11121281.html 备忘一下 ...

  2. redis集群搭建报错-(error) CLUSTERDOWN The cluster is down

    [README] 最近搭建一个redis集群,参考博文 (https://www.cnblogs.com/mafly/p/redis_cluster.html) 对集群配置后,master, slav ...

  3. redis集群报Jedis does not support password protected Redis Cluster configurations异常解决办法...

    解决spring-data-redis操作redis集群报"Jedis does not support password protected Redis Cluster configura ...

  4. redis 集群 实操 (史上最全、5w字长文)

    文章很长,建议收藏起来慢慢读! 总目录 博客园版 为大家准备了更多的好文章!!!! 推荐:尼恩Java面试宝典(持续更新 + 史上最全 + 面试必备)具体详情,请点击此链接 尼恩Java面试宝典,34 ...

  5. Redis集群方案:redis-cluste原理与搭建

    一.Redis集群方式介绍 3.0版本之前的redis是不支持集群的,只支持单实例模式,虽然支持主从模式.哨兵模式部署来解决单点故障,但是想要集群得用中间件.不适合大型数据. 常见集群方案: (1)官 ...

  6. Redis集群(Cluster)

    Redis集群 集群解决的问题 代理主机和无中心化集群 Redis集群的特点 Redis集群环境搭建 slots(插槽) 在集群中录入值 查询集群中的值 故障恢复 Redis集群的优缺点 集群解决的问 ...

  7. Redis(16) -- Redis集群

    Redis6 12.1)存在问题 容量不够,redis如何进行扩容? 并发写操作, redis如何分摊? 另外,主从模式,薪火相传模式,主机宕机,导致ip地址发生变化,应用程序中配置需要修改对应的主机 ...

  8. Redis高可用架构-Redis集群,一文get三种方式

    前言 容量不够,redis如何进行扩容? 并发写操作, redis如何分摊? 另外,主从模式,薪火相传模式,主机宕机,导致ip地址发生变化,应用程序中配置需要修改对应的主机地址.端口等信息. 之前通过 ...

  9. Redis集群的配置与使用

    redis集群 什么是redis集群? redis是指启动N个节点,将整个数据库分布在这N个节点中,每个节点存储总数据的1/N. redis集群实现了对redis的水平扩容 redis集群通过分区来提 ...

最新文章

  1. Spark算子汇总和理解(详细)
  2. 人工智能的挑战远未到来
  3. stringwriter_Java StringWriter getBuffer()方法与示例
  4. It is worth noting that among the four
  5. 21day学通python_python21day
  6. python量化常用_简单介绍下量化分析的常用库TA-lib
  7. 【NOIP2013提高组】华容道
  8. 英语单词常见后缀词性
  9. centos系统下安装daemontools详细指南
  10. 双方确认函_确认函格式范文
  11. 微信开发者工具 文件删除操作 二次确认框 设置
  12. 计算机里什么文件无法删除,电脑里面有哪些不能删除的文件?
  13. 花呗接入央行征信系统!会影响贷款吗?
  14. 镇雄县赤水源品区域公用品牌介绍——中国赤水河源 好品世界珍享
  15. 网站建设和网站运营,网站如何进行宣传推广
  16. python 身份证号码有效性验证
  17. 销售人员如何寻找客户?
  18. Lambda表达式秒用——SerializedLambda序列化
  19. 用两步排除法快速解答浮点数表示范围选择题
  20. 计算机应用bsp什么意思,bsp是什么

热门文章

  1. OpenGL:gl_ClipDistance和gl_CullDiatance
  2. java lifo 队列_java - 如何在LIFO模式下实现链接的阻塞队列 - SO中文参考 - www.soinside.com...
  3. 浅谈Serverless之uniCloud
  4. 【汇正财经】怎样利用价值投资买牛票?
  5. 《关于我同学拿我照片网恋这件事所引发的学习之旅》(1)
  6. javascript编程题_JavaScript中的鼠标滚轮编程
  7. 拼多多库存怎么做|旭宇同创
  8. 135编辑器生成html,135编辑器如何使用动态样式
  9. 【用三大件写出的开门烟花特效】
  10. 结算从业人员常用词典1.0