计划部署三个虚拟机 三个master节点 三个slave节点:
IP:192.168.26.133 port:7133(master) port:8133(slave)
IP:192.168.26.134 port:7134(master) port:8134(slave)
IP:192.168.26.135 port:7135(master) port:8135(slave)
统一安装目录: /home/develop/redis
安装需要的包 gcc tcl
sudo apt-get install gcc
sudo apt-get install tcl
创建目录 redis-master redis-slave
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.conf
cp redis-3.0.3/redis.conf cluster/8133/redis-8133.conf
192.168.26.134:
cp redis-3.0.3/redis.conf cluster/7134/redis-7134.conf
cp redis-3.0.3/redis.conf cluster/8134/redis-8134.conf
192.168.26.135:
cp redis-3.0.3/redis.conf cluster/7135/redis-7135.conf
cp redis-3.0.3/redis.conf cluster/8135/redis-8135.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
dir /home/develop/redis/cluster/7133 节点数据持久化存放目录,7133相应修改
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
查看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 集群创建命令(只需要在其中一个节点上执行一次则可)
cd /home/develop/redis/redis-3.0.3/src/
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 就会将这份配置应用到集群当中
集群简单测试
./redis-cli -h 192.168.26.133 -p 7133
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