1. 程式人生 > >redis叢集動態新增主節點和從節點

redis叢集動態新增主節點和從節點

如上圖所示:我現在有6臺機器的redis叢集,埠為7002,7003,7004為主,埠為7001,7005,7006為從節點
現在準備了兩個沒有在叢集中的redis服務:7007和7008;
ok 現在讓我們開始把7007和7008新增到叢集中
第一步:執行下./redis-trib.rb看命令是否正常,這個命令是用ruby寫的所以如果不正常請安裝ruby.
安裝ruby步驟
1:yum install ruby
2:yum install rubygems
3:gem install redis  (安裝redis和ruby 的介面)
第二步:
執行命令 ./redis-trib.rb  add-node    new_host:new_port existing_host:existing_port
說明:new_host:需要加入叢集的redis服務ip地址 如本例中是:192.168.142.128
           new_port:需要加入叢集的redis服務ip埠  如本例中是:7007和7008
existing_host:叢集中已存在的任何一個redis  ip地址 如本例中的192.168.142.128
existing_port:叢集中已存在的任何一個redis  埠 如本例中的7001、7002、7003、7004、7005、7006

執行命令./redis-trib.rb add-node 192.168.142.128:7007 192.168.142.128:7001
如下:新增7007成功。
現在我們再來看下叢集節點資訊如下
埠為7007的redis已經成功的加入到叢集中,但是他這個主節點沒有空間槽。我們還需要進行第三步給這個節點
非配空間槽
第三步:給新加入節點分配空間槽
     1:執行命令./redis-trib.rb reshard 192.168.142.128:7007
執行命令如上圖所示:問你是否從原有的1-16384個槽中分配多少到新的主節點我們這裡分配4000為例回車
2:然後緊接著會詢問你給id為誰的主節點分配,我們這裡copy這個id就行
3:詢問你是從所有的空間去給這個節點分配空間還是從某一個節點分配
我這裡輸入all  回車繼續
4:然後會給你分配出一個分配計劃,輸入yes開始分配。完成ok
我們再來看下7007已經分配了4000個空間槽 。
第四步:我們把埠為7008的redis新增到叢集,把它作為 7007的從節點
重複第二步命令:./redis-trib.rb  add-node    192.168.142.128:7008 192.168.142.128:7002
新增成功。
最後一步: 需要登入新加入的7008redis,執行命令cluster replicate 主節點id(就是你想把這個從節點
放到那個主節點下面)
ok 完成如上圖所示叢集資訊
測試:
如上圖所示 新增叢集完成。
而且測試發現:空間槽的分配是不分有沒有資料的,有資料的槽也有可能分配到新的主節點下