1. 程式人生 > >Ubuntu下搭建Redis叢集

Ubuntu下搭建Redis叢集

系統:Ubuntu14.04.1(伺服器版)

Redis版本:3.0.7

機器:test2:192.168.56.102:7000(主節點)、192.168.56.102:7001(不一定是192.168.56.102:7000的從節點)

           test3:192.168.56.103:7000(主節點)、192.168.56.103:7001(不一定是192.168.56.103:7000的從節點)

   test4:192.168.56.104:7000(主節點)、192.168.56.104:7001(不一定是192.168.56.104:7000的從節點)

搭建步驟:

1.在test2機器上建立資料夾,用於存放節點檔案:

sudo mkdir cluster-test

2.修改建立檔案的許可權:

sudo chmod -R 777 /cluster-test/

3.在cluster-test資料夾下建立以埠號命名的子資料夾:

mkdir 7000 7001

4.在7000檔案中建立redis.conf檔案:

vim redis.conf

5.將以下內容拷貝到redis.conf檔案中:

port 7000

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes

6.將7000目錄下的redis.conf檔案拷貝到7001目錄下,並修改裡面的埠號為7001:

cp ./redis.conf /cluster-test/7001/redis.conf

7.將test2上的cluster-test檔案通過ssh拷貝到test3和test4上,在test2上執行命令:

scp -r /cluster-test/ test3://home/test3

scp -r /cluster-test/ test4://home/test4

8.分別在test2、test3和test4上下載並安裝Redis,然後,編譯(見另一文章,注:本人的redis安裝目錄在根目錄下,許可權為777):

9.在test2、test3和test4上分別從redis安裝目錄下的src檔案中將編譯好的redis-server拷貝到cluster-test目錄下:

cp /redis-3.0.7/src/redis-server /cluster-test/

10.在test2、test3和test4上分別進入7000和7001目錄,啟動節點:

../redis-server ./redis.conf 

11.在test2(也可以選擇其他機器)上安裝ruby環境:

sudo apt-get update

sudo apt-get install ruby

12.在test2(根據上一步而定)上安裝ruby程式和redis的第三方介面:

sudo gem install redis

13.在test2上的redis安裝目錄的src下輸入命令建立叢集:

./redis-trib.rb create --replicas 1 192.168.56.102:7000 192.168.56.103:7000 192.168.56.104:7000 192.168.56.103:7001 192.168.56.104:7001 192.168.56.102:7001

14.使用命令檢視叢集狀態:

./redis-trib.rb check 192.168.56.102:7000

15.成功狀態如下圖:


Redis叢集測試:

1.重新分片:

./redis-trib.rb reshard 192.168.56.102:7000

2.叢集故障:

./redis-cli -p 7000 debug segfault

3.刪除節點:

./redis-trib.rb del-node 192.168.56.103:7000 節點ID

注意:刪除主節點時,主節點必須沒有雜湊槽。

4.新增新節點:

a.新增主節點:

按照前面建立節點的方法,建立一個新節點,埠號為7002,並執行。

新增新節點到叢集:

./redis-trib.rb add-node 192.168.56.102:7002 192.168.56.103:7000

為新節點分配雜湊槽:

./redis-trib.rb reshard 192.168.56.103:7000

b.新增從節點:

新增前面刪除的從節點:

./redis-trib.rb add-node --slave --master-id 主節點ID 192.168.56.104:7001 192.168.56.103:7000

5.其他命令:

./redis-trib.rb check 192.168.56.103:7000(檢查叢集狀態)

./redis-cli -p 7000 cluster nodes | grep master(列印叢集主節點資訊)

./redis-cli -p 7000 cluster nodes | grep slave(列印叢集從節點資訊)