1. 程式人生 > >redis叢集節點的新增和刪除

redis叢集節點的新增和刪除

前面的文章已經搭建好了redis三主三從的叢集模式,本文將介紹演示向叢集中新增節點

根據新新增節點的種類, 我們需要用兩種方法來將新節點新增到叢集裡面:

如果要新增的新節點是一個主節點, 那麼我們需要建立一個空節點(empty node), 然後將某些雜湊桶移動到這個空																	節點裡面。
另一方面, 如果要新增的新節點是一個從節點, 那麼我們需要將這個新節點設定為叢集中某個節點的複製品(replica)。
本節將對以上兩種情況進行介紹, 首先介紹主節點的新增方法, 然後再介紹從節點的新增方法。

無論新增的是那種節點, 第一步要做的總是新增一個空節點。

一.新增主節點

1.先看看我們之前的叢集節點資訊,連線上任意一個節點

./redis-cli -h  192.168.214.130  -p  7001  # 要換成自己IP 和埠
 cluster nodes    #檢視節點資訊

在這裡插入圖片描述 沒錯吧,3個主節點,3個從節點

2.新增一個空節點,將上篇文章中的redis01 資料夾複製一份,然後修改redis.conf 檔案,把埠修改為7007 ,使用命令 ./redis-server redis.conf 啟動節點。

3.執行命令 ./redis-trib.rb add-node new_host:new_port existing_host:existing_port

		說明:
		new_host:需要加入叢集的redis服務ip地址 如本例中是:192.168.214.130
        new_port:需要加入叢集的redis服務ip埠  如本例中是:7007
	    existing_host:叢集中已存在的任何一個redis  ip地址 如本例中的192.168.214.130
	    existing_port:叢集中已存在的任何一個redis  埠 如本例中的7001、7002、7003、7004、7005、7006
 ./redis-trib.rb  add-node    192.168.214.130:7007 192.168.214.130:7001    #新增新節點

4 為新節點分配槽(slot)

 ./redis-trib.rb reshard 192.168.214.130:7007  #重新分配slot
How many slots do you want to move (from 1 to 16384)? 5364        #設定slot數5364 這裡表示7007 分配5364個slot
What is the receiving node ID? 03ccad2ba5dd1e062464bc7590400441fafb63f2         #新節點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.  
Source node #1:all           # all表示全部節點重新分配slot,  # 也可以某個要移動slot數量的節點id
Source node #2:done          # 如果有這步的話,表示分配結束
Do you want to proceed with the proposed reshard plan (yes/no)? yes   #確認重新分 

5.檢視叢集節點新

 ./redis-trib.rb check 192.168.214.130:7007

刪除節點

1.刪除從節點

./redis-trib.rb check 192.168.214.130:7001  # 1 檢視叢集節點資訊

# 2節點所在IP,埠,節點ID
./redis-trib.rb del-node 192.168.214.130:7007 476799a70dcaf7ac15428accb3059ef966a6aa26 

2.刪除主節點 如果主節點有從節點,將從節點轉移到其他主節點 如果主節點有slot,去掉分配的slot,然後在刪除主節點

改變從節點的master

	# 1 檢視一下7002 的從節點 ,我這裡7002 的從節點為7005 #檢視一下7002 的從節點 ,我這裡7002 的從節點為7005
./redis-cli -h 192.168.214.130 -p 7002 cluster nodes | grep slave | grep 136a7c9a0017b24564d52c8c7b23f4ccf7481ad7
	# 2 連線7005
./redis-cli -h 192.168.214.130 -p 7005
	# 3 指定新的master
 cluster replicate 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052  //新master的node id  

去掉分配的slot

./redis-trib.rb reshard 192.168.214.219:7007  #要刪除的節點的IP ,埠

How many slots do you want to move (from 1 to 16384)? 5364     //被刪除master的所有slot數量  
What is the receiving node ID? 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052 //接收5364節點slot的master  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.  
Source node #1:03ccad2ba5dd1e062464bc7590400441fafb63f2 //被刪除master的node-id  
Source node #2:done   
  
Do you want to proceed with the proposed reshard plan (yes/no)? yes //取消slot後,reshard