高性能網站架構之緩存篇—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 就可以將端口號爲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集羣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章