1.建立文件件/usr/local/redis-sentinel,并创建1011,1012,1013,1014四个文件夹
# mkdir /usr/local/redis-sentinel
# cd /usr/local/redis-sentinel
# mkdir 1011
# mkdir 1012
# mkdir 1013
# mkdir 1014
2.将redis安装目录下的redis.conf复制到1011-1014下
修改4项配置
daemonize yes
port 1011
logfile "./logs/redis-1011.log"
bind 127.0.0.1
pidfile /usr/local/redis-sentinel/1011/redis_1011.pid
slaveof 127.0.0.1 1011
3.拷贝redis安装目录下的redis-sentinel.conf文件到目录下,命名为redis-sentinel-1201.conf、redis-sentinel-1202.conf、redis-sentinel-1203.conf,分别修改这3个文件,将里面的对应选项分别设置(此处一定要注意myid要有所区别)
port 1201
sentinel monitor mymaster 127.0.0.1 1101 2
sentinel myid e53f414c6fd311e9be981866da975022
4.启动1011-1014四个redis服务
# ./redis-server /usr/local/redis-sentinel/1011/redis.conf
登录上一个客户端,查看状态
# ./redis-cli -h localhost -p 1011
info
可以看到当前角色为master,还有三台slave.
5.启动哨兵
# cd /usr/local/redis/bin/
# ./redis-sentinel /usr/local/redis-sentinel/redis-sentinel-1201.conf
启动完成之后可以看到redis服务的状态信息。
6.接下来开始测试,强行杀掉master,观察redis-sentinel输出,可以看到哨兵已经选取了1013作为新的master
在看一下哨兵的配置文件,发现对应的配置项发生改变,master已经更改为新的节点:
sentinel monitor mymaster 127.0.0.1 1013 2
7.继续测试,先将3个sentinel节点杀掉,然后将新的master节点杀掉,再启动3个sentinel,奇迹发生了,sentinel居然选出来了新的master!
原因是因为在哨兵的配置文件中,会自动存储上一个周期的节点信息。
所以在master先挂sentinel后启动的情况下,sentinel也是能与其他节点通信的。