1. 程式人生 > >【Redis】 手工搭建叢集

【Redis】 手工搭建叢集

       上篇部落格討論了redis的主從複製的問題,使用主從複製可以提高redis的高可用性,今天我們就來看一看如何redis的另一種高可用方案—叢集,當然叢集中也少不了主從複製的身影啊。

        下面我們就來手動搭建Redis的叢集。

1. 配置

        搭建redis的叢集將開啟6個redis,其中3個為master,3個為slave。所以我們需要複製6份配置檔案,並按上一篇文章的介紹進行修改。當然為了使用叢集我們還需要多兩個設定項:cluster-enabled和cluster-config-file。其中第一個設定為開啟叢集,第二個為設定叢集節點的配置檔案。(其中的配置項可以用埠號來區分)

 

2. 啟動redis例項

       我們將配置好的6個redis例項啟動,啟動後我們可以通過下面的命令來檢視一些相關資訊。

               Cluster nodes 檢視節點資訊

               Cluster info 檢視叢集資訊(整個叢集的資訊)

               Info cluster 檢視當前redis在叢集中的一些配置資訊。

3. 連線節點

       當我們配置好redis並啟動了redis例項後,並不能就組成一個叢集,我們可以理解為每個redis都是在一個叢集中,我們還要使用cluster meet命令來把所有的組合到一起。

       執行完該命令後我們再檢視叢集資訊,可以看到6個redis已經在一個叢集中了,但是狀態還是fail,也就是說還沒有成功啟動。

          

4. 設定主從

      為了實現redis的高可用,我們需要設定為主從資料庫,所以下面將要做這樣的設定。將6484設定為6481的slave,將6485設定為6482的slave,將6486設定為6483的slave,命令cluster replicate node_id就可以幫我們做著這樣的事情,它的意思就是將該redis設定為node_id的redis的slave。我們通過使用cluster nodes 可以檢視每個redis的node_id.下面展示了兩個命令,其中一個為檢視叢集的節點,一個為將6486設定為6483的slave。

5. 分配插槽

      所謂插槽就是redis對key進行分片的單元,在redis的叢集實現中,內建了資料自動分片機制,叢集內部會將所有的key對映到16834個插槽中,叢集中的每個資料庫例項負責其中部分的插槽的讀寫。

分配插槽我們可以使用cluster addslots,一個一個的新增,下面展示了使用該命令分配了三個插槽,

可見16834個插槽會有多麼大的工作量啊,所以我們要換一種方式,那就是將所有的redis停下來,直接修改node的配置檔案,然後重新啟動資料庫。看下面的配置紅框裡面的就是我們對每個master設定的插槽,我們需要對每個master的node配置檔案進行修改。下面圖示展示了對三個master進行插槽的分配。

修改完後重啟。重啟後我們在檢視叢集資訊,發現此時狀態已經為OK,說明叢集搭建成功了。

           

6. 大功告成

完成上面的配置後我們可以做一個小小的測試。我存入一個key為age的資料。

上面展示了在6483上存入age的一個測試,redis返回為error,並告訴我們age應該放到741插槽上,並且它在6481上 總結 redis叢集的搭建就介紹到這裡,當然我們也可以使用其他的方法,手工搭建雖然看著有點費勁但是可以讓我們明白一些原理性的東西,比如插槽,如果我們使用自動化的搭建工具,可能我們就不會明白插槽有什麼作用。