1. 程式人生 > >redis叢集(單機模擬)動態新增、刪除節點

redis叢集(單機模擬)動態新增、刪除節點

客戶端登入: /usr/redis/bin/redis-cli -c -h 192.168.×.××× -p 7001 -c代表叢集模式 -h代表ip -p代表埠號 檢視叢集狀態的兩種方式: 1、cluster nodes (列出當前的所有節點和相關資訊) 2、cluster info(列印叢集的資訊) redis-trib.rb 的用法: reshard 重新分配槽 add-node 新增節點 create 建立叢集 伺服器啟動的情況下,動態新增節點 主節點(master) /usr/local/redis-3.0.0/src/redis-trib.rb add-node 192.168.×.×××:7007 192.168.×.×
××:7001
從節點(slave) /usr/local/redis-3.0.0/src/redis-trib.rb add-node 192.168.×.×××:7008 192.168.×.×××7001 指定從節點方法: replicate 是用來指定當前節點(從節點)的主節點id是哪個,首先要用客戶端登入,然後執行以下命令 cluster replicate eb34324c5d616ea5827b908af0b5235f4442a931(主節點的id)就ok了,這就是將從節點加入到叢集,並指定該從節點的主節點是哪一個。 刪除從節點方法:/usr/local/redis-3.0.0/src/redis-trib.rb del-node 192.168.×.×
××7008 30269e26cbf706907cd3343c1932a2b2d57bdd3a(要移除節點的id)
redis叢集 如果移除一個節點,那麼它會把該節點的程序也kill掉 刪除主節點方法:首先要把主節點的slot槽還給其他主節點,要不然會出現資料丟失,也就是在刪除之前要把該節點的全部資料(slot槽)移動到其他節點上去。(注意:目前只能是一個節點,還做不了平均分配) 1、/usr/local/redis-3.0.0/src/redis-trib.rb reshard 192.168.×.×××:7007 (重新分片) 2、How many slots do you want to move (from 1 to 16384)? 199
意思就是你想移動多少個槽(從1到16384)?199(想移除主節點的槽,cluster nodes可以查出) What is the receiving node ID? 接收節點ID是什麼? 6424f56732a5c025d81c40b6cbb0dfbb986755b6(接收槽節點的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. Source node #1: 請輸入所有源節點id。 鍵入“all”,將所有節點用作雜湊槽的源節點。 鍵入“done”後,輸入所有的源節點id。 源節點# 1: 這裡要說一下redis 3.0以前(3.0以後不知道)想把槽還回去,指能是一個節點還做不到平均分配,所以上面all基本沒用,源節點#1(不是隻有一個,想移動其他的也可以):就是你要移除節點的資料來源,即id Source node #1:done Do you want to proceed with the proposed reshard plan (yes/no)? 你想執行這個計劃嗎?就是跟你確認一下yes就好了 執行之後登陸叢集中任意一個節點檢視狀態 cluster nodes 就可以看到剛才的節點分配成功了,那麼接下來就可以把想刪除的節點幹掉,從而保證資料不會丟失。 /usr/local/redis-3.0.0/src/redis-trib.rb del-node 192.168.×.×××:7007 30269e26cbf706907cd3343c1932a2b2d57bdd3a(要移除節點的id) 再檢視叢集狀態就已經刪除了該節點!