計劃部署三個虛擬機 三個master節點 三個slave節點: html
IP:192.168.26.133 port:7133(master) port:8133(slave) node
IP:192.168.26.134 port:7134(master) port:8134(slave) redis
IP:192.168.26.135 port:7135(master) port:8135(slave)
ruby
統一安裝目錄: /home/develop/redis app
安裝須要的包 gcc tcl 測試
sudo apt-get install gcc ui
sudo apt-get install tcl spa
建立目錄 redis-master redis-slave .net
mkdir redis-master 翻譯
mkdir redis-slave
下載redis-3.0.3
wget http://download.redis.io/releases/redis-3.0.3.tar.gz
tar -zxvf redis-3.0.3.tar.gz
192.168.26.133:
mkdir -p /home/develop/redis/cluster/7133
mkdir -p /home/develop/redis/cluster/8133
192.168.26.134:
mkdir -p /home/develop/redis/cluster/7134
mkdir -p /home/develop/redis/cluster/8134
192.168.26.135:
mkdir -p /home/develop/redis/cluster/7135
mkdir -p /home/develop/redis/cluster/8135
cd redis-3.0.3/
三個虛擬機分別執行:
make PREFIX=/home/develop/redis/redis-master install
make PREFIX=/home/develop/redis/redis-slave install
192.168.26.133:
cp redis-3.0.3/redis.conf cluster/7133/redis-7133.conf192.168.26.134:
cp redis-3.0.3/redis.conf cluster/7134/redis-7134.conf192.168.26.135:
cp redis-3.0.3/redis.conf cluster/7135/redis-7135.conf
修改redis-xxxx.conf配置文件
demonize yes 是否做爲守護進程運行
pidfile /var/run/redis-7133.pid 其餘相應修改成各自端口的
port 7133 監聽端口,默認爲 6379。 其餘節點相應修改成各自端口 8133 7134 8134 7135 8135
cluster-enabled yes 打開集羣
cluster-config-flie /home/develop/redis/cluster/7133/nodes.conf 集羣配置文件(啓動自動生成),不用人爲干涉
cluster-node-timeout 15000 節點互連超時時間,毫秒
cluster-migration-bareier 1 數據遷移的副本臨界數,這個參數表示的是,一個主節 點在擁有多少個好的從節點的時候就要割讓一個從節 點出來給另外一個沒有任何從節點的主節點。
cluster-require-full-coverage yes 若是某一些 key space 沒有被集羣中任何節點覆蓋,集 羣將中止接受寫入。
appendonly yes 啓用 aof 持久化方式,由於 redis 自己同步數據文件是按上面 save 條件來同 步的,因此有的數據會在一段時間內只存在於內存中。 默認值爲 no
192.168.26.133:
redis-master/bin/redis-server cluster/7133/redis-7133.conf
redis-slave/bin/redis-server cluster/8133/redis-8133.conf
192.168.26.134:
redis-master/bin/redis-server cluster/7134/redis-7134.conf
redis-slave/bin/redis-server cluster/8134/redis-8134.conf
192.168.26.135:
redis-master/bin/redis-server cluster/7135/redis-7135.conf
redis-slave/bin/redis-server cluster/8135/redis-8135.conf
ps -ef | grep redis
安裝ruby rubygems
sudo apt-get install ruby
cd ..
wget http://production.cf.rubygems.org/rubygems/rubygems-2.0.3.tgz
tar -zxvf rubygems-2.0.3.tgz
cd rubygems-2.0.3/
sudo ruby setup.rb
sudo gem install redis
執行 Redis 集羣建立命令(只須要在其中一個節點上執行一次則可)
cp redis-trib.rb /home/develop/redis/redis-master/bin/redis-trib
cd /home/develop/redis/redis-master/bin/
redis-trib create --replicas 1 192.168.26.133:7133 92.168.26.134:7134 192.168.26.135:7135 192.168.26.133:8133 192.168.26.134:8134 192.168.26.135:8135
中間輸入 yes
正常狀況提示 All 16384 slots covered.說明集羣中的 16384 個槽都有至少一個主節點在處理, 集羣運做正常。
集羣建立過程說明:
(1) 給定 redis-trib 程序的命令是 create , 這表示咱們但願建立一個新的集羣;
(2) 這裏的 --replicas 1 表示每一個主節點下有一個從節點;
(3) 以後跟着的其它參數則是實例的地址列表,程序使用這些地址所指示的實例來建立新集羣; 總的來講,以上命令的意思就是讓 redis-trib 程序建立一個包含三個主節點和三個從節點的集羣。 接着,redis-trib 會打印出一份預想中的配置給你看,若是你以爲沒問題的話(注意覈對主從關係是不是 你想要的),就能夠輸入 yes , redis-trib 就會將這份配置應用到集羣當中
集羣簡單測試
127.0.0.1:7113>set name zhangsan
-> Redirected to slot [8559] located at 192.168.26.134:7134 OK
./redis-cli -h 192.168.26.133 -p 8133
127.0.0.1:8113>get name
-> Redirected to slot [8559] located at 192.168.26.134:7134 "zhangsan"
./redis-cli -h 192.168.26.133 -p 7133 cluster nodes
系統列出三個master 三個slave 節點。
OK,配置成功。
參考文檔
Redis 官方集羣指南:http://redis.io/topics/cluster-tutorial
Redis 官方集羣規範:http://redis.io/topics/cluster-spec
Redis 集羣指南(中文翻譯,緊供參考):http://redisdoc.com/topic/cluster-tutorial.html
Redis 集羣規範(中文翻譯,緊供參考): http://redisdoc.com/topic/cluster-spec.html
其它供參考資料
Redis 3.0 集羣搭建測試(一):http://blog.csdn.net/zhu_tianwei/article/details/44928779
Redis 3.0 集羣搭建測試(二):http://blog.csdn.net/zhu_tianwei/article/details/45009647
Redis 集羣要點:http://5i.io/redis-3-0-cluster-configuration/