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

一、查看错误信息:node

1.1 错误信息(1)redis

  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)shell

  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).net

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

找到缺乏的slot分别为1199二、1238二、1404一、14386日志

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

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

  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

 四、解决方法2:class

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

脚本以下:cli

  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

以后运行2脚本而且把日志打印到/home/sw/3:sh 2 |tee /home/sw/3 便可。

 

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

相关文章
相关标签/搜索