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(列印叢集從節點資訊)