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

之后運行2腳本並且把日志打印到/home/sw/3:sh 2 |tee /home/sw/3 即可。

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM