【redisCluster】外網遠程連接:Could not get a resource from the pool

最近搭建redisCluster集羣做測試遇到些坑耽誤了很長時間,記錄一下:

redisCluster 集羣搭建在遠程阿里雲上,搭建過程一切正常,但是在我本地客戶端可以正常連接並對立面的值進行編輯,但是在JAVA代碼測試類以及集成的spring-redisCluster中總是報錯會報不同的錯,

main方法中客戶獲取到redisCluster中的值但是無法進行set,而spring集成的redisCluster報的錯誤比較直接 
Caused by: java.lang.IllegalArgumentException: Node 172.01.34.91:9006 is unknown to cluster

看到這裏非常奇怪創建集羣的時候命名用的是內網怎麼顯示的事內網的IP:

ruby redis-trib.rb  create --replicas 1 66.66.136.66:9001 66.66.136.66:9002 66.66.136.66:9003 66.66.136.66:9004 66.66.136.66:9005 66.66.136.66:9006

而對JAVA測試類跟蹤斷點獲取的cluster對象中的節點中也有內網的IP因此斷定是配置文件出的問題;

redis各節點的配置文件如下:

執行完集羣創建命令後:

ruby redis-trib.rb  create --replicas 1 66.66.136.66:9001 66.66.136.66:9002 66.66.136.66:9003 66.66.136.66:9004 66.66.136.66:9005 66.66.136.66:9006

命令後生成的一個內網的IP:注意紅色的部分自動的生成了一個內網的IP

解決方法:

1、首先把redis所有的服務進行結束掉,同時刪除有問題的NODE(nodes-9001.conf)配置信息及歸檔數據文件dump.rdb

結束進程:

刪除歷史數據及配置文件:

2、重啓所有redis服務,9001.。。9006;

3、重新設置集羣(注意IP一定要是外網IP):

ruby redis-trib.rb  create --replicas 1 66.66.136.66:9001 66.66.136.66:9002 66.66.136.66:9003 66.66.136.66:9004 66.66.136.66:9005 66.66.136.66:9006

4、修改配置文件中內網IP改爲外網IP:※此處有個坑所有nodeji

切記步驟:必須必須一個一個的修改不要貪圖方便一下全部修改直接重啓,個人感覺沒重啓一個redis節點後,其他相應的節點信息會因爲該節點的調整重新進行設置:

首先:先結束9001進程,修改完node-9001.conf,重啓9001後,

然後:再結束9002的進程,修改node-9002.conf的IP,再啓動9002的服務,以此類推直至重啓完畢。。

redis服務重啓完畢後重新進行測試問題解決,至於“ruby redis-trib.rb  create --replicas 1 66.66.136.66:9001 66.66.136.66:9002 66.66.136.66:9003 66.66.136.66:9004 66.66.136.66:9005 66.66.136.66:9006” 命令千萬不要再去執行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章