您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Redis集群如何增加節(jié)點與刪除節(jié)點,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
查看集群啟動情況:ps -ef | grep redis
查看集群的slots分配情況以及節(jié)點之間的主從關系:
首先登陸節(jié)點7000:redis-cli -p 7000 -h 192.168.182.132 -c //注意不要丟了-c
cluster nodes 查看集群節(jié)點信息
在本例中我們先增加兩個節(jié)點:主節(jié)點7006和從節(jié)點7007,并給7006分配4096個slots,設置7007為7006的從節(jié)點,然后再將這兩個節(jié)點從集群中刪除,一定要先刪除主節(jié)點,再刪除從節(jié)點,要不然故障轉移會生效。
一、集群的擴容
1.準備新的節(jié)點
在集群目錄redis_cluster目錄下增加redis7006和redis7007目錄
mkdir redis7006
mkdir redis7007
增加完成后的目錄
復制端口7000的redis.conf配置文件到redis7006和redis7007目錄下,并修改配置文件中的端口為對應目錄的端口號。
例如redis7006下的redis.conf文件的內容為:
port 7006 bind 192.168.182.132 //本機IP daemonize yes //設置為后臺運行 pidfile /var/run/redis-7006.pid cluster-enabled yes //開啟集群 cluster-config-file node-7006.conf cluster-node-timeout 15000 appendonly yes
準備完成后,啟動兩個新的redis節(jié)點:
redis-server redis7006/redis.conf redis-server redis7007/redis.conf ps -ef | grep redis //查看新的redis節(jié)點是否啟動成功
啟動以后登錄7006查看節(jié)點情況:
redis-cli -p 7006 -h 192.168.182.132 -c cluster nodes
2.添加主節(jié)點
?。?)向集群中添加節(jié)點7006,注意一定要保證節(jié)點里面沒有添加過任何數(shù)據,不然添加會報錯。
cd /usr/local/redis/redis/src ./redis-trib.rb add-node 192.168.182.132:7006 192.168.182.132:7000 //第一次節(jié)點為新增的節(jié)點 第二個節(jié)點為集群中的節(jié)點
添加成功:
可以看到使用addnode命令來添加節(jié)點,第一個參數(shù)是新節(jié)點的地址,第二個參數(shù)是任意一個已經存在的節(jié)點的IP和端口. 我們可以看到新的節(jié)點已經添加到集群中:
新節(jié)點7006現(xiàn)在已經連接上了集群, 成為集群的一份子, 并且可以對客戶端的命令請求進行轉向了, 但是和其他主節(jié)點相比, 新節(jié)點還有兩點區(qū)別:
新節(jié)點沒有包含任何數(shù)據, 因為它沒有包含任何哈希槽.盡管新節(jié)點沒有包含任何哈希槽, 但它仍然是一個主節(jié)點, 所以在集群需要將某個從節(jié)點升級為新的主節(jié)點時, 這個新節(jié)點不會被選中。
接下來, 只要使用 redis-trib 程序, 將集群中的某些哈希桶移動到新節(jié)點里面, 新節(jié)點就會成為真正的主節(jié)點了。
(2)為主節(jié)點7006分配虛擬槽
cd /usr/local/redis/redis/src ./redis-trib.rb reshard 192.168.182.132:7001 //可以為任意的節(jié)點 在此登錄的7001只是作為客戶端去訪問的
執(zhí)行后:
因為我們增加7006為主節(jié)點后,一共存在四個主節(jié)點,為了平均分配我們需要給7006分配16384除以4等于4096個節(jié)點,所以我們輸入4096,按enter繼續(xù):
輸入7006的節(jié)點ID,按enter繼續(xù):
從哪些主節(jié)點抽取槽到新節(jié)點中:all為所有主節(jié)點,done:指定節(jié)點,在這里我們輸入all,按enter繼續(xù):
輸入yes后按enter開始給7006分配虛擬槽,分配完成后:
登錄集群查看一下集群的狀態(tài):
redis-cli -p 7000 -h 192.168.182.132 -c cluster nodes
至此主節(jié)點已經添加完畢了,我們的集群由三主三從變成了四主三從。
3.添加從節(jié)點7007
(1)使用add-node添加新節(jié)點
cd /usr/local/redis/redis/src ./redis-trib.rb add-node 192.168.182.132:7007 192.168.182.132:7000 //第一次節(jié)點為新增的節(jié)點 第二個節(jié)點為集群中的節(jié)點
加入集群成功,登錄到集群中查看一下集群狀態(tài):
7007還是一個Master節(jié)點,而且沒有擁有自己的slot槽。那么我們接下來要讓它變成從節(jié)點。
(2)將7007變?yōu)?006的 從節(jié)點
使用CLUSTER REPLICATE 命令改變一個從節(jié)點的主節(jié)點。
redis-cli -p 7007 -h 192.168.182.132 cluster replicate 52d169e7011ccdf10f99c1d83f92409dcc37ab55 //后面的字符串為節(jié)點7006的節(jié)點ID
設置成功后查看一下:
集群的從節(jié)點7007添加成功。
二、集群的縮容
只要使用del-node命令即可:
./redis-trib del-node 127.0.0.1:7000 <node-id> 第一個參數(shù)是任意一個節(jié)點的地址,第二個節(jié)點是你想要移除的節(jié)點地址。
使用同樣的方法移除主節(jié)點,不過在移除主節(jié)點前,需要確保這個主節(jié)點是空的. 如果不是空的,需要將這個節(jié)點的數(shù)據重新分片到其他主節(jié)點上.
替代移除主節(jié)點的方法是手動執(zhí)行故障恢復,被移除的主節(jié)點會作為一個從節(jié)點存在,不過這種情況下不會減少集群節(jié)點的數(shù)量,也需要重新分片數(shù)據.[/code]
1.刪除從節(jié)點
刪除節(jié)點用del-node命令。此命令需要制定刪除節(jié)點的ip和端口,以及節(jié)點的id。
cd /usr/local/redis/redis/src ./redis-trib.rb del-node 192.168.182.132:7007 7007節(jié)點ID
刪除成功后:
刪除后我們再次查看集群的節(jié)點信息,如下所示,7007從節(jié)點已經被移除掉。
2.刪除主節(jié)點
(1)將主節(jié)點7006的slots分配到其他主節(jié)點上
cd /usr/local/redis/redis/src ./redis-trib.rb reshard 192.168.182.132:7006
選擇完這幾項以后,回車繼續(xù):
輸入yes,表示接受這個計劃,然后回車,完成7006節(jié)點的槽的移除。
登錄集群查看當前集群情況:
節(jié)點7006上沒有任何槽。
(2)使用del-node命令來刪除7006主節(jié)點。
cd /usr/local/redis/redis/src ./redis-trib.rb del-node 192.168.182.132:7006 52d169e7011ccdf10f99c1d83f92409dcc37ab55
刪除成功:
最后登錄查看集群又恢復到了三主三從的結構了,只是從剛開始的均勻分配變成了7000端口的主節(jié)點多了4096個slots。
關于“Redis集群如何增加節(jié)點與刪除節(jié)點”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。