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

相關文章
相關標籤/搜索