redis5集羣構建

一、redis集羣安裝,注意redis使用版本5以上
redis安裝參考https://blog.csdn.net/eakom/article/details/102976264,考慮到沒有多個服務器,在一臺服務器上模擬集羣,使用的端口號爲7001-7006
1.複製已安裝的redis文件夾到redis-cluster

/usr/local
mkdir redis-cluster
cp -r -b redis-5.0.5 redis-cluster/redis1
cp -r -b redis-5.0.5 redis-cluster/redis2
cp -r -b redis-5.0.5 redis-cluster/redis3
cp -r -b redis-5.0.5 redis-cluster/redis4
cp -r -b redis-5.0.5 redis-cluster/redis5
cp -r -b redis-5.0.5 redis-cluster/redis6

2.修改各個redis中redis.conf配置

  • 修改端口port 分別是7001、7002…7006 後臺運行修改daemonize爲yes
  • 開啓集羣修改cluster-enabled爲yes 綁定IP修改bind ip(必須要綁定當前機器的IP,不然會悲劇)
  • 修改數據存儲路徑dir dir /usr/local/redis-cluster/1(必須要指定不同的目錄)
  • 修改集羣通信配置文件cluster-config-file node*.conf(這裏的*最好和端口對應上)
  • 修改集羣通信超時cluster-node-timeout 5000 存儲方式爲AOF修
  • 改appendonly爲yes
    3.編寫啓動命令 vi start-all.sh 並輸入一下內容,按:wq保存
cd redis1/src
	./redis-server ../redis.conf
	cd ../../
	cd redis2/src
	./redis-server ../redis.conf
	cd ../../
	cd redis3/src
	./redis-server ../redis.conf
	cd ../../
	cd redis4/src
	./redis-server ../redis.conf
	cd ../../
	cd redis5/src
	./redis-server ../redis.conf
	cd ../../
	cd redis6/src
	./redis-server ../redis.conf
	cd ../../

4.修改start-all.sh權限 chmod +x start-all.sh
5.創建集羣配置
負責redis-cli到當前目錄 cp redis-5.0.5/src/redis-cli ./
啓動

./redis-cli --cluster create 192.168.158.11:7000 192.168.158.11:7001 192.168.158.11:7002 192.168.158.11:7003 192.168.158.11:7004 192.168.158.11:7005 --cluster-replicas 1
#該選項--cluster-replicas 1意味着我們要爲每個創建的主機都希望有一個從機,其他參數是我要用於創建新集羣的實例的地址列表,該配置滿足我們要求的唯一設置是創建具有3個主設備和3個從設備的集羣,Redis-cli將爲您提出配置,輸入yes接受建議的配置。集羣將被配置並加入,這意味着實例將被引導成彼此對話。

6.連接測試(命令./redis-cli -c -h -p 7001)

./redis-cli -c -p 7001 
#如果使用腳本創建集羣,則節點可能會偵聽不同的端口,默認情況下從30001開始,查找時Redis Cluster節點能夠將客戶端重定向到正確的節點

進行驗證 cluster info(查看集羣信息) cluster nodes(查看節點列表)

二、運維
1.新增節點
複製文件

cp -r -b redis-5.0.5 redis-cluster/redis7
cp -r -b redis-5.0.5 redis-cluster/redis8
修改配置
port 分別是7007、7008
# cluster-enabled yes註釋這句話,開啓集羣
分別啓動啓動
cd redis7/src
	redis-server ../redis.conf
	cd ../../redis8/src
	redis-server ../redis.conf
	cd ../../
集羣中加入節點7007(主節點)
redis-cli --cluster add-node 192.168.158.11:7007 192.168.158.11:7001
注:add-node後面的第二個參數爲隨便一個節點的host:port
集羣中加入節點7008(7007的從節點)
redis-cli --cluster add-node 127.0.0.1:7008 127.0.0.1:7000 --cluster-slave --cluster-master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e

注意:cluster-master-id 爲node7的id
檢查集羣結果

redis-cli --cluster check 192.168.158.11:7008
會發現新增的節點的哈希槽爲空(0 slots),哈希槽爲空不能存儲數據,需要重新分配
redis-cli --cluster reshard 127.0.0.1:7007
然後輸入要移動的槽位,輸入目標node的Id ,系統提示
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
如果將所有節點用作哈希槽的源節點,則輸入all表示
否則輸入一個一個源節點ID後,鍵入“ done”結束,按yes確定

另一個方式不需要交互

#示例
redis-cli --cluster reshard <host>:<port> --cluster-from <node-id> --cluster-to <node-id> --cluster-slots <number of slots> --cluster-yes
#配置
redis-cli --cluster reshard 127.0.0.1:7007 --cluster-from 918e6a811995e87dd9dbdf1c2cab096751ee08cd --cluster-to e66ed523614b9c299262d783c21c2dd11cf02f5e --cluster-slots 30 --cluster-yes

2.刪除節點

#示例(第一個參數只是集羣中的一個隨機節點,第二個參數是您要刪除的節點的ID)
redis-cli --cluster del-node 127.0.0.1:7000 `<node-id>`

您也可以用相同的方法刪除主節點,但是要刪除主節點,它必須爲空。如果主節點不爲空,則需要先將數據從其重新分片到所有其他主節點。

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