(轉)高性能網站架構之緩存篇—Redis集群增刪節點


標簽: 高性能架構集群緩存redis

         上一篇文章,我們搭建了Redis-cluster集群,這篇博客跟大家講一下如何在一個運行的集群上增加節點或者刪除節點。

Redis集群添加節點

       首先我們要新建立一個節點,將redis01 復制一份改為redis07,然后修改端口號也改為7007 ,然后我們執行[root@localhost redis07]# ./redis-server redis.conf 啟動以后,然后進行查看,發現有一個端口號為7007的redis實例已經啟動了!我們怎么把這個redis 實例添加到集群中呢。

       在將7007 端口號的redis實例添加到集群之前,一定要確保這個redis實例沒有存儲過數據,也不能持久化的數據文件,否則在添加的時候會報錯的!我們執行命令  ./redis-trib add-node127.0.0.1:7007 to cluster 127.0.0.1:7001 (如果這句命令有誤,可以用這個:  ./redis-trib add-node127.0.0.1:7007 127.0.0.1:7001)就可以將端口號為7007的實例添加到redis-cluster中。如下如所示。

        

       我們執行在任意一個客戶端下執行 cluster nodes 命令,可以看到7007 已經作為主節點添加到我們的集群中了,但是可以看到他沒有分配哈希槽,沒有分配哈希槽的話表示就沒有存儲數據的能力,所以我們需要將其他節點上的哈希槽分配到這個節點上。

   

 

       下邊我們看一下如何分配哈希槽。我們隨便進入一個客戶端,然后我們執行 ./redis-trib.rb reshard 192.168.20.140:7001, 就可以看到如下圖所示提示,問我們需要移動多少個哈希槽,我們在這里移動1000個。

        

 

        完以后,又會問我們需要覆蓋的節點id是什么,這個id就是我們新創建的節點id。然后讓我們輸入源節點,如果這里我們輸入all的話,他會隨機的從所有的節點中抽取1000個作為新節點的哈希槽。

       

 

        我們輸入all以后,會出下下圖所示東西,表示hash槽正在移動。

        

 

        移動完以后,我們進入客戶端,執行cluster nodes 命令,查看集群節點的狀態,我們會看到原來沒有哈希槽的7007節點,分配到了1000個哈希槽,而且是不連續的。說明是從原來的三個節點中抽取的。

        

 

        這樣我們一個新的節點就添加好了, 但是我們發現總共是7個節點,其中的六個互為住備,但有一個是有主,沒有備,所以我們需要在為該節點添加一個備份節點。我們在創建一個實例,端口號為7008,啟動以后我們只命令./redis-trib.rb add-node --slave127.0.0.1:7008  127.0.0.1:7007 ,第一個實例127.0.0.1:7008為備份節點,第二個實例127.0.0.1:7007為主節點。然后我們在執行,cluster nodes 命令,就會發現新添加的節點已經作為7007 備份節點開始工作了!

       

  

 

 

Redis 集群刪除節點

        刪除節點也分兩種,一種是主節點,一種是從節點。在從節點中,我們沒有分配哈希槽,所以刪除很簡單,我們直接執行./redis-trib.rb del-node 127.0.0.1:700865ee465423c925326a5137668541151b4c37d2d9 有兩個參數ip:port  和節點的id。 我們就可以將從節點從集群中刪除了。

        

 

        而在刪除主節點的時候,因為在主節點中存放着數據,所以我們在刪除之前,要把這些數據遷移走,並且把該節點上的哈希槽分配到其他主節點上。

       我們執行./redis-trib.rb reshard 127.0.0.1:7007,問我們有多少個哈希槽要移走,因為我們這個節點上有1000 個所以我們這里輸入1000,如下如所示。

        

 

        這樣期間會詢問我們是否要從新分配,我們輸入yes。然后就看到7007上的所有節點都被移動到了7001.這樣我們就操作完了。然后再執行./redis-trib.rb del-node127.0.0.1:7007 61f786c40bcc170006a440abd7dc773e6dd15a19 ,就會看到7007 端口的實例也被從集群中移除了。

       

 

        我們進入客戶端,看一下集群節點的情況。會看到7007 節點和7008 節點就都被我們移除集群了!   

 

 

        這篇博客為大家說了集群節點的維護,下一篇文章給大家說一下在程序中我們如何使用redis集群。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM