redis哨兵模式实现主从切换

环境设定
base2 172.25.78.12 master
base3 172.25.78.13 slave
base4 172.25.78.14 slave
配置一主二从环境
在base2上
[[email protected] ~]# tar zxf redis-5.0.3.tar.gz
[[email protected] ~]# cd redis-5.0.3
[[email protected] ~]# yum install gcc -y
[[email protected] redis-5.0.3]# make && make install
[[email protected] redis-5.0.3]# which redis-cli
/usr/local/bin/redis-cli
[[email protected] redis-5.0.3]# cd utils/
[[email protected] utils]# ./install_server.sh
redis哨兵模式实现主从切换
[[email protected] utils]# vim /etc/redis/6379.conf # 编辑配置文件
70 bind 0.0.0.0 # 监听本机所有端口
187 databases 16 # 默认数据库为16个
293 # masterauth # 设定redis的认证,因为我们这是内网网段进行操作,所以此处不用设定
457 min-replicas-to-write 1
458 min-replicas-max-lag 10
[[email protected] utils]# systemctl restart redis_6379
[[email protected] utils]# netstat -antlp
redis哨兵模式实现主从切换
[[email protected] redis]# redis-cli # 进入交互式界面,添加信息
redis哨兵模式实现主从切换
在base3上
[[email protected] ~]# tar zxf redis-5.0.3.tar.gz
[[email protected] ~]# cd redis-5.0.3
[[email protected] redis-5.0.3]# yum install gcc -y
[[email protected] redis-5.0.3]# make && make install
[[email protected] redis-5.0.3]# cd utils/
[[email protected] utils]# ./install_server.sh
redis哨兵模式实现主从切换
[[email protected] utils]# netstat -antlp
redis哨兵模式实现主从切换
[[email protected] utils]# vim /etc/redis/6379.conf
70 bind 0.0.0.0
288 slaveof 172.25.78.12 6379 # 指定master
[[email protected] utils]# systemctl restart redis_6379
[[email protected] utils]# redis-cli # 同步成功
redis哨兵模式实现主从切换
127.0.0.1:6379> set name xixi # 我还发现redis的一个好处,slave端默认只读
redis哨兵模式实现主从切换
在base4上
[[email protected] ~]# tar zxf redis-5.0.3.tar.gz
[[email protected] ~]# cd redis-5.0.3
[[email protected] redis-5.0.3]# yum install gcc -y
[[email protected] redis-5.0.3]# make && make install
[[email protected] redis-5.0.3]# cd utils/
[[email protected] utils]# ./install_server.sh
redis哨兵模式实现主从切换
[[email protected] utils]# vim /etc/redis/6379.conf
70 bind 0.0.0.0
288 slaveof 172.25.78.12 6379
[[email protected] utils]# systemctl restart redis_6379
[[email protected] utils]# redis-cli # 同步成功
redis哨兵模式实现主从切换
开始配置自主故障切换
在master上
[[email protected] redis]# pwd
/etc/redis
[[email protected] redis]# cd
[[email protected] ~]# cd redis-5.0.3
[[email protected] redis-5.0.3]# cp sentinel.conf /etc/redis/
[[email protected] redis-5.0.3]# cd /etc/redis/
[[email protected] redis]# ls
6379.conf sentinel.conf
[[email protected] redis]# vim sentinel.conf

16 protected-mode no # 去掉保护模式
84 sentinel monitor mymaster 172.25.78.12 6379 2 # 指定要监控的master,2表示将这个主服务器判断为失效至少需要 2 个 Sentinel 同意
113 sentinel down-after-milliseconds mymaster 10000 # Sentinel 认为服务器已经断线所需的毫秒数即服务多长时间开始下线
121 sentinel parallel-syncs mymaster 1 # 在执行故障转移时,最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长
146 sentinel failover-timeout mymaster 180000 # 三分钟之内还没有完成故障切换,表示超时

注:改完这个文件之后千万不能重启
[[email protected] redis]# scp sentinel.conf base3:/etc/redis/
[[email protected] redis]# scp sentinel.conf base4:/etc/redis/
在三个服务上都进行监控
[[email protected] redis]# redis-server /etc/redis/sentinel.conf --sentinel &
[[email protected] redis]# redis-server /etc/redis/sentinel.conf --sentinel &
[[email protected] redis]# redis-server /etc/redis/sentinel.conf --sentinel &
模拟master坏掉
[[email protected] redis]# redis-cli
127.0.0.1:6379> info replication # 先查看信息
redis哨兵模式实现主从切换
[[email protected] redis]# systemctl stop redis_6379 # 现在模拟坏掉
查看监控
这是master坏掉之前的监控
redis哨兵模式实现主从切换
这是master坏掉之后的监控
redis哨兵模式实现主从切换
redis哨兵模式实现主从切换
在其余两台上查看信息,发现master已经切换
在base3上和在base4上
redis哨兵模式实现主从切换
redis哨兵模式实现主从切换
在base2上
[[email protected] ~]# vim /etc/redis/6379.conf # 修改自己的状态为slave
286 slaveof 172.25.78.14 6379 # 改为现在master的ip
[[email protected] ~]# systemctl start redis_6379