redis 5.0中使用 redis-cli 添加cluster node 並 reshard


在redis-5中redis-trib.rb的功能被集成到了redis-cli中,大大簡化了redis的集群部署,加快了進群部署的速度,也方便后期維護與擴容。

以下簡要介紹一下redis-cli在集群中的操作:

環境:Ubuntu 18.04.2 LTS

redis版本:redis-5.0.5

集群架構:3master+3slave(后期添加1master+1slave)

創建集群:

1、新建所需目錄,創建配置文件,啟動6個redis實例進程(配置參數盡量保持一致)。在這里原始集群端口號為6379-6384,監聽在127.0.0.1上。添加節點監聽為127.0.0.1:6385(master),127.0.0.1:6386(slave)

2、創建集群:

命令 :redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1

--cluster-replicas 表示有一個主有幾個slave

3、擴容:

(1)查看每個集群節點的node ID和身份

進入任意集群master節點:redis-cli -p 6379

查看節點ID:cluster nodes  

注意:以上我是在測試環境中,沒有使用身份驗證,在生產環境中,必須添加requirepass參數。

(2)添加master節點

redis-cli --cluster add-node 127.0.0.1:6385 127.0.0.1:6379

注意語法,一個新節點IP:端口 空格 一個舊節點IP:端口,注意點是:

1.不能多個新節點一次性添加

2.新節點后是舊節點

3.如果設置--cluster-slave,新節點掛在舊節點下的一個從節點

4.如果設置 --cluster-master-id <arg> ,arg設置舊節點的id,具體可以使用cluster nodes查看各個節點的id

add-node new_host:new_port existing_host:existing_port
--cluster-slave
--cluster-master-id <arg>

 

例子1:添加到從節點

./redis-cli --cluster add-node 192.168.1.136:7007 192.168.1.136:7001 --cluster-slave

 

 

例子2:添加到Master,192.168.1.143:7002是新節點,192.168.1.136:7001是已經存在的一個舊節點,

./redis-cli --cluster add-node 192.168.1.136:7007 192.168.1.136:7001 --cluster-master-id 49395c60c6e5215aaf52260a72100a7f076aab76

 

 

 

這里是將節點加入了集群中,但是並沒有分配slot,所以這個節點並沒有真正的開始分擔集群工作。

(3)分配slot

redis-cli --cluster reshard 127.0.0.1:6379 --cluster-from 2846540d8284538096f111a8ce7cf01c50199237,e0a9c3e60eeb951a154d003b9b28bbdc0be67d5b,692dec0ccd6bdf68ef5d97f145ecfa6d6bca6132 --cluster-to 46f0b68b3f605b3369d3843a89a2b4a164ed21e8 --cluster-slots 1024

--cluster-from:表示slot目前所在的節點的node ID,多個ID用逗號分隔

--cluster-to:表示需要新分配節點的node ID(貌似每次只能分配一個)

--cluster-slots:分配的slot數量

(4)添加slave節點

redis-cli --cluster add-node 127.0.0.1:6386 127.0.0.1:6385 --cluster-slave --cluster-master-id 46f0b68b3f605b3369d3843a89a2b4a164ed21e8

add-node: 后面的分別跟着新加入的slave和slave對應的master

cluster-slave:表示加入的是slave節點

--cluster-master-id:表示slave對應的master的node ID

4、收縮集群

下線節點127.0.0.1:6385(master)/127.0.0.1:6386(slave)

(1)首先刪除master對應的slave

redis-cli --cluster del-node 127.0.0.1:6386 530cf27337c1141ed12268f55ba06c15ca8494fc

del-node后面跟着slave節點的 ip:port 和node ID

(2)清空master的slot

redis-cli --cluster reshard 127.0.0.1:6385 --cluster-from 46f0b68b3f605b3369d3843a89a2b4a164ed21e8 --cluster-to 2846540d8284538096f111a8ce7cf01c50199237 --cluster-slots 1024 --cluster-yes

reshard子命令前面已經介紹過了,這里需要注意的一點是,由於我們的集群一共有四個主節點,而每次reshard只能寫一個目的節點,因此以上命令需要執行三次(--cluster-to對應不同的目的節點)。

--cluster-yes:不回顯需要遷移的slot,直接遷移。

(3)下線(刪除)節點

redis-cli --cluster del-node 127.0.0.1:6385 46f0b68b3f605b3369d3843a89a2b4a164ed21e8

至此就是redis cluster 簡單的操作過程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM