redis部署bug問題解決:CLUSTERDOWN Hash slot not served

記錄一次shell部署Redis出現「malloc.h:50:31: 致命錯誤:jemalloc/jemalloc.h:沒有那個文件或目錄」和「CLUSTERDOWN Hash slot not served」的問題分析解決

​ 以前使用的shell腳本部署一些軟件到新的機器環境後使用時出現標題中的error報錯提示,但以前使用是並未發生過相似的狀況。下面給出我解決的方法,有興趣的能夠繼續看一下緣由。node

error報錯現象

首先是第一次安裝腳本沒有成功,緣由是目錄位置發生了問題,因此改進腳本後進行了再次運行腳本安裝部署redis服務(補充說明,從新安裝時有可能遇到失敗狀況,緣由是安裝編譯工具和相關工具佔用了某些進程(通常是Python相關的程序進程,若kill進程會致使編譯時出現致命錯誤,解決方法是在bash環境中從新安裝編譯環境,就是那些gcc等,不然編譯過程當中會發現缺乏相關工具或沒有一些文件從而安裝失敗)致使部署失敗的問題)redis

第一個問題報錯的具體現象以下圖所示

redis部署bug問題解決:CLUSTERDOWN Hash slot not served

解決方法:進入redis部署路徑的src命令執行命令:make MALLOC=libc

[root@localhost src]# pwd
/usr/local/redis/src
[root@localhost src]# make MALLOC=libc

redis部署bug問題解決:CLUSTERDOWN Hash slot not served

此後再從新進行部署安裝便可,此時能夠發現redis的相關命令均可以使用了shell

第二個問題報錯的具體現象以下圖所示

redis部署bug問題解決:CLUSTERDOWN Hash slot not served

該問題解決的方法以下:bash

[root@localhost service_project]# redis-cli --cluster fix 127.0.0.1:6379
#此後會進行fix操做設置

解決思路:緣由是集羣的hash槽未能正常運行,因此能夠去檢查集羣的slots的問題,咱們知道redis的hash槽數目是16384個,用於儲存數據的,而這些槽並未徹底被分配到全部節點ide

redis部署bug問題解決:CLUSTERDOWN Hash slot not served

設置完成驗證

[root@localhost service_project]# redis-cli --cluster fix 127.0.0.1:6379
127.0.0.1:6379 (95c37af4...) -> 0 keys | 16384 slots | 0 slaves.
[OK] 0 keys in 1 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 127.0.0.1:6379)
M: 95c37af4524069ab816d326f8204420bc4a420fa 127.0.0.1:6379
   slots:[0-16383] (16384 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

[root@localhost service_project]# redis-cli 
127.0.0.1:6379> set a 1
OK
127.0.0.1:6379> get a
"1"

出現該現象的狀況是二次部署編譯安裝致使的,不知道其餘狀況是否會遇到相同問題,歡迎留言告知,謝謝閱讀!

相關文章
相關標籤/搜索