因為一些原因,以前IP沒法用了,所有節點都down掉了,所以項目忽然報錯:
服務器現在修改Redis節點的IP地址
注意,雖然是修改,但實質上是重建集群,所以需要你刪除之前每個節點的一些文件,才能用新的IP重建集群:
在刪除之前,要先暫停所有節點:
查看Redis進程:
ps -ef|grep redis
然后殺死進程:
kill -9 xxx
好了,可以開始刪除相關文件了:
需要刪除的文件 : Redis每個節點相應的 持久化文件和節點信息文件:
進入每一個節點,有dump.rdb持久化文件和nodes.conf節點信息文件,刪除。
你要是忘了自己文件在哪里了,可以用下面指令查看一下目錄:
find / -name 文件名
我這里都放在一起了:
在對應文件目錄下刪除相關文件:
rm -f nodes-*.conf rm -f dump-*.rdb
刪除后只留下如下文件:
PS:(如果你的Redis.conf文件里開啟並生成了appendonly.aof,你也必須刪除它,因為不刪除aof文件會和不刪除rdb文件一樣導致在接下來重新創建節點過程中出現原節點存在數據(Not Empty)異常)
接着:
在重建集群之前需要你依次將每個節點重新啟動起來,否則會直接報錯 [ERR] Sorry, can't connect to node
重新創建集群(用新的ip)執行redis-trib.rb腳本:
(*注意:"192.168.127.130"是本地局域網IP,如果是生產環境下或者非本地測試,請直接使用服務器外網IP地址)
./redis-trib.rb create --replicas 1 192.168.127.130:8000 192.168.127.130:8001 192.168.127.130:8002 192.168.127.130:8003 192.168.127.130:8004 192.168.127.130:8005
我執行到這里就已經成功了,但是由於IP原因,我這里引用別人一的張圖(別人圖片還有說明,比我認真多了):
輸入yes,創建成功.
后記:
1、通過以上步驟,重新配置Redis集群IP就成功了。
2、總結可能出現的步驟問題,導致客戶端不能正常訪問Redis:
1、redis.conf限制了IP地址訪問
2、沒有開啟Redis集群總線端口==>"Redis端口+10000"
3、使用rudy命令開啟集群,在非本地環境下,沒有使用外網IP
ruby redis-trib.rb create --replicas 1 外網IP:7000 外網IP:7001 外網IP:7002 外網IP:7003 外網IP:7004 外網IP:7005