redis cluster info显示cluster_state:fail解决方案

1、查看错误信息:

1.1 错误信息(1)

  1. 127.0.0.1:7000> get name
  2. (error) CLUSTERDOWN The cluster is down
  3. 127.0.0.1:7000> cluster info
  4. cluster_state:fail
  5. cluster_slots_assigned:16380
  6. cluster_slots_ok:16380
  7. cluster_slots_pfail:0
  8. cluster_slots_fail:0
  9. cluster_known_nodes:6
  10. cluster_size:3
  11. cluster_current_epoch:8
  12. cluster_my_epoch:1
  13. cluster_stats_messages_sent:1007
  14. cluster_stats_messages_received:1005

1.2 错误信息(2)

  1. 127.0.0.1:7000> cluster slots
  2. 1) 1) (integer) 0
  3.    2) (integer) 5460
  4.    3) 1) "127.0.0.1"
  5.       2) (integer) 7000
  6.       3) "09d1ad8d8aa8acd0ca2b95206c58901e47318ec9"
  7.    4) 1) "127.0.0.1"
  8.       2) (integer) 7004
  9.       3) "3b6910a3cf76025564d9f744f64ffa3a3b35fbc8"
  10. 2) 1) (integer) 10923
  11.    2) (integer) 11991
  12.    3) 1) "127.0.0.1"
  13.       2) (integer) 7002
  14.       3) "9b7110678b6eef4ae80c330eb0cfb51ffbc216ea"
  15.    4) 1) "127.0.0.1"
  16.       2) (integer) 7003
  17.       3) "7d0da6cebfa834177a189b9f71b048e8aeb29c49"
  18. 3) 1) (integer) 11993
  19.    2) (integer) 12381
  20.    3) 1) "127.0.0.1"
  21.       2) (integer) 7002
  22.       3) "9b7110678b6eef4ae80c330eb0cfb51ffbc216ea"
  23.    4) 1) "127.0.0.1"
  24.       2) (integer) 7003
  25.       3) "7d0da6cebfa834177a189b9f71b048e8aeb29c49"
  26. 4) 1) (integer) 12383
  27.    2) (integer) 14040
  28.    3) 1) "127.0.0.1"
  29.       2) (integer) 7002
  30.       3) "9b7110678b6eef4ae80c330eb0cfb51ffbc216ea"
  31.    4) 1) "127.0.0.1"
  32.       2) (integer) 7003
  33.       3) "7d0da6cebfa834177a189b9f71b048e8aeb29c49"
  34. 5) 1) (integer) 14042
  35.    2) (integer) 14385
  36.    3) 1) "127.0.0.1"
  37.       2) (integer) 7002
  38.       3) "9b7110678b6eef4ae80c330eb0cfb51ffbc216ea"
  39.    4) 1) "127.0.0.1"
  40.       2) (integer) 7003
  41.       3) "7d0da6cebfa834177a189b9f71b048e8aeb29c49"
  42. 6) 1) (integer) 14387
  43.    2) (integer) 16383
  44.    3) 1) "127.0.0.1"
  45.       2) (integer) 7002
  46.       3) "9b7110678b6eef4ae80c330eb0cfb51ffbc216ea"
  47.    4) 1) "127.0.0.1"
  48.       2) (integer) 7003
  49.       3) "7d0da6cebfa834177a189b9f71b048e8aeb29c49"
  50. 7) 1) (integer) 5461
  51.    2) (integer) 10922
  52.    3) 1) "127.0.0.1"
  53.       2) (integer) 7001
  54.       3) "caa158fcb538991c73438ca9801ab6ab2510e85a"
  55.    4) 1) "127.0.0.1"
  56.       2) (integer) 7005
  57.       3) "0fbf5cbddefe6ad2324a225d25447ff80b033b27"

2.分析错误信息
 2.1 从错误信息(1)中cluster_slots_assigned:16380看出少了4个slot,因为集群就是要满足所有的16364个槽点全部分配才会成功。
2.2 统计错误信息(2)

  1. 1) 0-5460     7000、7004
  2. 2)10923-11991     7002、7003
  3. 3)11993-12381     7002、7003
  4. 4)12383-14040     7002、7003
  5. 5)14042-14385     7002、7003
  6. 6)14387-16383     7002、7003
  7. 7) 5461-10922     7001、7005

找到缺少的slot分别为11992、12382、14041、14386

3.解决方法:
 3.1将一个或多个槽(slot)指派(assign)给当前节点

cluster addslots 11992 12382 14041 14386
3.2 显示结果:

  1. 127.0.0.1:7000> cluster addslots 11992 12382 14041 14386
  2. OK
  3. 127.0.0.1:7000> cluster info
  4. cluster_state:ok
  5. cluster_slots_assigned:16384
  6. cluster_slots_ok:16384
  7. cluster_slots_pfail:0
  8. cluster_slots_fail:0
  9. cluster_known_nodes:6
  10. cluster_size:3
  11. cluster_current_epoch:8
  12. cluster_my_epoch:1
  13. cluster_stats_messages_sent:42312

 4、解决方法2:

  写shell脚本用cluster addslots命令吧1~16384所有槽点都添加一遍即可。对于已经存在的会说此槽点正在忙,所以不用担心重复添加。之后查看集群状态即为正常。

脚本如下:

  1. > /home/sw/2
  2. for ((i=1;i<=16384;i++));
  3. do
  4. echo "redis-cli -h 192.168.5.115 -p 7004 cluster addslots "${i} >> /home/sw/2
  5. done

#redis-cli -h 192.168.5.115 -p 7004 cluster addslots 1..16384

扫描二维码关注公众号,回复: 9267561 查看本文章

之后运行2脚本并且把日志打印到/home/sw/3:sh 2 |tee /home/sw/3 即可。

 参考:https://blog.csdn.net/zsx18273117003/article/details/83414440

猜你喜欢

转载自www.cnblogs.com/dudu99/p/12332372.html