Redis6.0.4 服務器集羣搭建

實現目標

在一臺主機上,搭建一個3主3從的高可用Redis服務器集羣。

Redis6.0.4安裝

參見CentOS7.0安裝Redis6.0.4

準備工作

1.在redis安裝目錄,創建6個文件夾:

mkdir 9000 9001  9002  9003  9004  9005

2.將redis安裝目錄redis.conf文件分別拷貝到6個文件夾中,並命名爲:
redis-cluster.conf

[root@localhost redis-6.0.4]# cp redis.conf 9000/redis-cluster.conf
[root@localhost redis-6.0.4]# cp redis.conf 9001/redis-cluster.conf
[root@localhost redis-6.0.4]# cp redis.conf 9002/redis-cluster.conf
[root@localhost redis-6.0.4]# cp redis.conf 9003/redis-cluster.conf
[root@localhost redis-6.0.4]# cp redis.conf 9004/redis-cluster.conf
[root@localhost redis-6.0.4]# cp redis.conf 9005/redis-cluster.conf

3.將9000-9005 的6個文件夾中redis-cluster.conf文件按照以下的方式進行配置。
第92行的端口號改成所在文件夾的名稱,比如以9000爲例:
在這裏插入圖片描述
4.將206的守護進程開啓:
在這裏插入圖片描述
5.關閉保護模式:(如果開啓,需要設置密碼,比較繁瑣。如有需要可以按照自己的需求配置)
在這裏插入圖片描述
6.1172行,將集羣開啓:
在這裏插入圖片描述
7.將1180行的註釋打開,按照如下格式進行配置:nodes-當前節點的端口號.conf
在這裏插入圖片描述
8.創建啓動腳本:start-cluster.sh

#以集羣方式啓動9000到9005的Redis服務
for port in {9000..9005}
do
#關閉已經啓動的服務,刪除臨時文件
redis-cli -c -p $port -h 192.168.43.88 shutdown
rm -f $port/dump*
rm -f $port/nodes*
done;
#start redis
for port in {9000..9005}
do redis-server $port/redis-cluster.conf
done;
#create cluster
echo yes|src/redis-cli --cluster create  192.168.43.88:9000 192.168.43.88:9001 192.168.43.88:9002 192.168.43.88:9003 192.168.43.88:9004 192.168.43.88:9005  --cluster-replicas 1

需要將其中的IP修改爲你服務器對應的IP:
在這裏插入圖片描述

ps:需要注意的是,老版本的redis創建服務節點需要使用redis-trib.rb創建,但是新版本的redis則直接用redis-cli 就可以了。

其它參數解釋:
–cluster-replicas 1:表示希望爲集羣中的每個主節點創建一個從節點(一主一從)。
–cluster-replicas 2:表示希望爲集羣中的每個主節點創建兩個從節點(一主二從)。

也就是說,當前的腳本,將啓動3主3從的節點。

9.創建停止腳本:stop-cluster.sh

for port in {9000..9005}
do
redis-cli -c -p $port shutdown
done;

驗證

執行 sh start-cluster.sh
在這裏插入圖片描述
可以看到,3主3從的集羣配置成功。
M:代表主節點,並且自動分配了槽道號。
S:代表從節點,沒有槽道號。

測試一下

登錄其中一個節點:設置 zhaoliwen鍵的值爲ok:
通過對zhaoliwen鍵的hash取模計算,得到其槽道號爲6716,歸屬端口爲9003的節點管理,並自動切換到了端口爲9003的節點:
在這裏插入圖片描述
獲取鍵值:
在這裏插入圖片描述
ok,redis集羣到此搭建成功。剩下的就可以通過java客戶端調取使用了。

錯誤解決

[ERR] Node 192.168.43.88:9000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
在這裏插入圖片描述
如果遇到這樣的錯誤,不要慌。
1.刪除dump.rdb文件。
2.刪除自動生成的在redis.conf裏面cluster-config-file配置的的文件:
在這裏插入圖片描述

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