CentOS 6.8
monitor: 192.168.1.100
master: 192.168.1.120
slave: 192.168.1.121
192.168.1.122
1.安装redis
tar -zxvf redis-3.2.6.tar.gz
mv redis-3.2.6 /usr/local/
cd /usr/local/redis-3.2.6
make
make install
最后会有一个warning:
Hint: To run 'make test' is a good idea ;)
如果想要make test 的话,可能会报错:
You need tcl 8.5 or newer in order to run the Redis test
解决方法:
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar -xzvf tcl8.6.1-src.tar.gz
mv tcl8.6.1 /usr/local/
cd /usr/local/tcl8.6.1/unix/
./configure
make
make install
再去make test即可
启动redis服务
src/redis-server
启动redis客户端
src/redis-cli
2.编辑Master上的配置文件vi redis.conf
bind 192.168.1.120
# 开启守护模式
daemonize yes
# 打开aof持久化
appendonly yes
# 每秒一次aof写
appendfsync everysec
3.编辑Slave上的配置文件
vi redis.conf
bind 192.168.1.121(122)
# 开启守护模式
daemonize yes
# 打开aof持久化
appendonly yes
# 每秒一次aof写
appendfsync everysec
# 指定所属的master
slaveof 192.168.1.120 6379
# 指定slave只读
slave-read-only yes
4.编辑sentinel.conf(三个节点下都要一样配置,master的sentinel配置在monitor上)
vi sentinel.conf
# sentinel通讯端口
port 26379
# sentinel需要监控的master/slaver信息 2为投票机制
sentinel monitor mymaster 192.168.1.120 6379 2
# master被当前sentinel实例认定为失效的间隔时间
sentinel down-after-milliseconds mymaster 10000
# 当新master产生时,同时进行“slaveof”到新master并进行同步复制的slave个数
# 在salve执行salveof同步时,将会终止客户端请求。
# 此值较大,意味着“集群”终止客户端请求的时间总和和较大。
# 此值较小,意味着“集群”在故障转移期间,多个salve向客户端提供服务时仍然使用旧数据。
sentinel parallel-syncs mymaster 1
# failover过期时间。当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel将会认为此次failover失败。
sentinel failover-timeout mymaster 60000
5.启动所有节点下的redis server
cd /usr/local/redis/src
./redis-server /usr/local/redis/redis.conf
这里需要注意redis server启动时需要指定刚刚编辑好的conf文件
6.启动所有节点下的sentinel
./redis-sentinel /usr/local/redis/sentinel.conf
也是要指定编辑好的conf文件
7.查看master节点信息
./redis-cli -h 192.168.1.120 -p 6379 info Replication
8.查看任意slave节点信息
9.插入数据测试
Master:./redis-cli -h 192.168.1.120 -p 6379
192.168.1.120:6379> set name zzp
OK
192.168.1.120:6379> get name
"zzp"
Slave:./redis-cli
127.0.0.1:6379> get name
"zzp"
127.0.0.1:6379> set name zzc
(error) READONLY You can't write against a read only slave.
10.failover测试
将master节点关闭模拟宕机,
monitor:
# +sdown master mymaster 192.168.1.120 6379
显示master宕机,但是只有这一条状态
再看slave节点,也是一样,并没有进行之后的failover的选举
等半天没有任何动静之后,我再将master启动,发现master又回到了集群中
在网上查找了好久,找到几个类似的情况,解决方法:
在sentinel.conf 中加入 protected-mode no
如上重新配置之后再次进行测试
Master节点关闭:可以看到failover开始,并进行选举121节点为master~
同时再回复原先的master,查看其节点信息
发现192.168.1.120已经从master,变为slave~