要想搭建一個最簡單的Redis叢集,那麼至少需要6個節點:3個Master和3個Slave。為什麼需要3個Master呢?如果你了解過Hadoop/Storm/Zookeeper這些的話,你就會明白一般分布式要求基數個節點,這樣便于選舉(少數服從多數的原則)。
<a href="https://s3.51cto.com/wyfs02/M00/8E/25/wKioL1i21R7wulddAAApTTxpreM283.png" target="_blank"></a>
這裡,我将采用一種“偷懶”的方式,在一個Linux虛拟機上搭建6個節點的Redis叢集。(因為開啟6個Linux虛拟機,我的電腦完全扛不住)
實際上,思路很簡單,我将在一台節點上開啟6個Redis執行個體,并且這6個Redis各自有自己的端口。這樣的話,相當于模拟出了6台機器了。然後在以這6個執行個體組建Redis叢集就可以了。
第一步:為這6個執行個體建立好各自存放的目錄
<a href="https://s4.51cto.com/wyfs02/M01/8E/25/wKioL1i21WyzJixvAABZ619O6pQ859.png" target="_blank"></a>
第二步:既然是要啟動6個Redis執行個體,自然需要準備各自的配置檔案
<a href="https://s3.51cto.com/wyfs02/M02/8E/27/wKiom1i21ZKyeHiSAAAanVkctR4262.png" target="_blank"></a>
<a href="https://s5.51cto.com/wyfs02/M01/8E/25/wKioL1i21bLzWmNuAAHJd_c9vo0295.png" target="_blank"></a>
具體來說,需要注意下:由于在一台機器(192.168.99.121)上,是以每個執行個體應該有不同的端口;同時,每個執行個體顯然會有自己的存放資料的地方;開啟AOF模式;開啟叢集配置;開啟背景模式;
第三步:實際上,Redis叢集的操作在後文你可以看到是通過Ruby腳本來完成的,是以我們需要安裝Ruby相關的RPM包,以及Redis和Ruby的接口包。
<a href="https://s3.51cto.com/wyfs02/M02/8E/25/wKioL1i21d6xc-ZVAABC0JeanYk540.png" target="_blank"></a>
<a href="https://s1.51cto.com/wyfs02/M02/8E/27/wKiom1i21ffCgH-7AAArb84YcL0549.png" target="_blank"></a>
<a href="https://s2.51cto.com/wyfs02/M02/8E/25/wKioL1i21hShf5e7AAAh4E98AU0442.png" target="_blank"></a>
第四步:讓Redis叢集工作起來!
<a href="https://s5.51cto.com/wyfs02/M00/8E/27/wKiom1i21jTjsov1AAElpmAo1Bk955.png" target="_blank"></a>
接下來,我們要通過Ruby腳本來建立叢集了。
<a href="https://s1.51cto.com/wyfs02/M01/8E/27/wKiom1i21liAyk4TAAB6ZZc4WRY590.png" target="_blank"></a>
1
<code>[root@mydream121 bin]</code><code># ./redis-trib.rb create --replicas 1 192.168.99.121:8001 192.168.99.121:8002 192.168.99.121:8003 192.168.99.121:8004 192.168.99.121:8005 192.168.99.121:8006</code>
<a href="https://s4.51cto.com/wyfs02/M01/8E/25/wKioL1i21pCyDxiNAACP7YZxQA8666.png" target="_blank"></a>
<a href="https://s2.51cto.com/wyfs02/M00/8E/25/wKioL1i21qjTJIUKAABpTDYIAY4983.png" target="_blank"></a>
首先,我們來看一下建立叢集指令中 --replicas 1,這個代表什麼意思呢?1其實代表的是一個比例,就是主節點數/從節點數的比例。那麼想一想,在建立叢集的時候,哪些節點是主節點呢?哪些節點是從節點呢?答案是将按照指令中IP:PORT的順序,先是3個主節點,然後是3個從節點。這一點可以通過上面的2張圖檔印證。
其次,注意到圖中slot的概念。slot對于Redis叢集而言,就是一個存放資料的地方,就是一個槽。對于每一個Master而言,會存在一個slot的範圍,而Slave則沒有。在Redis叢集中,依然是Master可以讀、寫,而Slave隻讀。資料的寫入,實際上是分布的存儲在slot中,這和以前1.X的主從模式是不一樣的(主從模式下Master/Slave資料存儲是完全一緻的),因為Redis叢集中3台Master的資料存儲并不一樣。這一點将在後續的實驗中得到驗證。
第五步:驗證Redis叢集搭建是否成功
<a href="https://s2.51cto.com/wyfs02/M02/8E/27/wKiom1i21s6QQveqAACU_jgXh6o534.png" target="_blank"></a>
<a href="https://s1.51cto.com/wyfs02/M01/8E/25/wKioL1i21vKRTxA_AAAj1ovcelo581.png" target="_blank"></a>
到這裡,Redis叢集的搭建就完畢了,See U~
<b>本文轉自zfz_linux_boy 51CTO部落格,原文連結:http://blog.51cto.com/zhangfengzhe/1902479,如需轉載請自行聯系原作者</b>