佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Redis集群增加節(jié)點與刪除節(jié)點的方法詳解

Redis集群增加節(jié)點與刪除節(jié)點的方法詳解

熱門標(biāo)簽:服務(wù)外包 呼叫中心市場需求 AI電銷 地方門戶網(wǎng)站 Linux服務(wù)器 鐵路電話系統(tǒng) 網(wǎng)站排名優(yōu)化 百度競價排名

前言

  本文主要是承接上一篇文章Redis集群的離線安裝成功以后,我們?nèi)绾芜M(jìn)行給集群增加新的主從節(jié)點(集群擴容)以及如何從集群中刪除節(jié)點(集群縮容),也就是集群的伸縮,集群伸縮的原理是控制虛擬槽和數(shù)據(jù)在節(jié)點之間進(jìn)行移動,通過實際操作來整理一下集群的伸縮。

  上篇文章中搭建好的集群為三主三從,端口號為7000、7001、7002、7003、7004、7005。

  查看集群啟動情況:ps -ef | grep redis

查看集群的slots分配情況以及節(jié)點之間的主從關(guān)系:

  首先登陸節(jié)點7000:redis-cli -p 7000 -h 192.168.182.132 -c //注意不要丟了-c

  cluster nodes 查看集群節(jié)點信息

  在本例中我們先增加兩個節(jié)點:主節(jié)點7006和從節(jié)點7007,并給7006分配4096個slots,設(shè)置7007為7006的從節(jié)點,然后再將這兩個節(jié)點從集群中刪除,一定要先刪除主節(jié)點,再刪除從節(jié)點,要不然故障轉(zhuǎn)移會生效。

一、集群的擴容

  1.準(zhǔn)備新的節(jié)點

    在集群目錄redis_cluster目錄下增加redis7006和redis7007目錄

    mkdir redis7006

    mkdir redis7007

    增加完成后的目錄

   復(fù)制端口7000的redis.conf配置文件到redis7006和redis7007目錄下,并修改配置文件中的端口為對應(yīng)目錄的端口號。

  例如redis7006下的redis.conf文件的內(nèi)容為:

port 7006
bind 192.168.182.132 //本機IP
daemonize yes //設(shè)置為后臺運行
pidfile /var/run/redis-7006.pid
cluster-enabled yes //開啟集群
cluster-config-file node-7006.conf
cluster-node-timeout 15000
appendonly yes

  準(zhǔn)備完成后,啟動兩個新的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ù)據(jù),不然添加會報錯。

 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ù)是任意一個已經(jīng)存在的節(jié)點的IP和端口. 我們可以看到新的節(jié)點已經(jīng)添加到集群中:

  新節(jié)點7006現(xiàn)在已經(jīng)連接上了集群, 成為集群的一份子, 并且可以對客戶端的命令請求進(jìn)行轉(zhuǎn)向了, 但是和其他主節(jié)點相比, 新節(jié)點還有兩點區(qū)別:

新節(jié)點沒有包含任何數(shù)據(jù), 因為它沒有包含任何哈希槽.盡管新節(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é)點已經(jīng)添加完畢了,我們的集群由三主三從變成了四主三從。

  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

  設(shè)置成功后查看一下:

    集群的從節(jié)點7007添加成功。

二、集群的縮容

  只要使用del-node命令即可:

./redis-trib del-node 127.0.0.1:7000 node-id>
第一個參數(shù)是任意一個節(jié)點的地址,第二個節(jié)點是你想要移除的節(jié)點地址。

使用同樣的方法移除主節(jié)點,不過在移除主節(jié)點前,需要確保這個主節(jié)點是空的. 如果不是空的,需要將這個節(jié)點的數(shù)據(jù)重新分片到其他主節(jié)點上.

替代移除主節(jié)點的方法是手動執(zhí)行故障恢復(fù),被移除的主節(jié)點會作為一個從節(jié)點存在,不過這種情況下不會減少集群節(jié)點的數(shù)量,也需要重新分片數(shù)據(jù).[/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é)點已經(jīng)被移除掉。

  2.刪除主節(jié)點

  (1)將主節(jié)點7006的slots分配到其他主節(jié)點上

  cd /usr/local/redis/redis/src

  ./redis-trib.rb reshard 192.168.182.132:7006

    選擇完這幾項以后,回車?yán)^續(xù):

    輸入yes,表示接受這個計劃,然后回車,完成7006節(jié)點的槽的移除。

    登錄集群查看當(dāng)前集群情況:

    節(jié)點7006上沒有任何槽。

  (2)使用del-node命令來刪除7006主節(jié)點。

cd /usr/local/redis/redis/src

./redis-trib.rb del-node 192.168.182.132:7006 52d169e7011ccdf10f99c1d83f92409dcc37ab55

  刪除成功:

  最后登錄查看集群又恢復(fù)到了三主三從的結(jié)構(gòu)了,只是從剛開始的均勻分配變成了7000端口的主節(jié)點多了4096個slots。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • Redis源碼解析:集群手動故障轉(zhuǎn)移、從節(jié)點遷移詳解
  • redis集群搭建_動力節(jié)點Java學(xué)院整理

標(biāo)簽:衡水 銅川 黃山 崇左 仙桃 湘潭 蘭州 湖南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Redis集群增加節(jié)點與刪除節(jié)點的方法詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    凭祥市| 天镇县| 正宁县| 南昌市| 通榆县| 辉南县| 三原县| 隆回县| 镇江市| 西峡县| 基隆市| 安陆市| 丹东市| 东源县| 美姑县| 措美县| 江都市| 收藏| 绥阳县| 阿尔山市| 荆门市| 怀来县| 那曲县| 沭阳县| 盖州市| 治多县| 沾化县| 滕州市| 延津县| 武山县| 安溪县| 枝江市| 和林格尔县| 古蔺县| 赤水市| 石台县| 长丰县| 陆河县| 长治县| 焦作市| 鄂托克前旗|