1.1 Redis Sentinel介绍
Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,加入master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。
1.2 Redis sentinel功能
- 监控(Monitoring):Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
- 提醒(Notification):当被监控的某个 Redis 服务器出现问题时,Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
- 自动故障迁移(Automatic failover):当一个主服务器不能正常工作时,Sentinel 会开始一次自动故障迁移操作,它会将失效主服务器的其中一个从服务器升级为新的主服务器,并让失效主服务器的其他从服务器改为复制新的主服务器;当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址,使得集群可以使用新主服务器代替失效服务器。
1.3 搭建Redis Sentinel监控
1.3.1 复制集群配置文件模板
[root@centos7 ~]# cp /usr/local/redis/sentinel.conf /usr/local/redis/conf/sentinel_26379.conf
1.3.2 编辑配置文件
[root@centos7 ~]# vim /usr/local/redis/conf/sentinel_26379.conf port 26379 dir /tmp # 指定监控master,1表示要有1个sentinel同意才进行主从切换 sentinel monitor mymaster 10.0.0.103 6379 1 # 超过10000毫秒后认为主机宕机 sentinel down-after-milliseconds mymaster 10000 sentinel parallel-syncs mymaster 1 # 当主从切换900000毫秒后认为主从切换失败 sentinel failover-timeout mymaster 10000 # 安全认证密码,无密码认证可以不配此参数 sentinel auth-pass mymaster 123456
1.3.3 开启哨兵监控
[root@centos7 ~]# nohup redis-sentinel /usr/local/redis/conf/sentinel_26379.conf &
1.3.4 测试状态
1.3.4.1 查看当前状态
10.0.0.103:6379> role 1) "master" 2) (integer) 866 3) 1) 1) "10.0.0.103" 2) "6380" 3) "731" 2) 1) "10.0.0.103" 2) "6381" 3) "731" 10.0.0.103:6380> role 1) "slave" 2) "10.0.0.103" 3) (integer) 6379 4) "connected" 5) (integer) 1839 10.0.0.103:6381> role 1) "slave" 2) "10.0.0.103" 3) (integer) 6379 4) "connected" 5) (integer) 2393
1.3.4.2 关闭6379
10.0.0.103:6379> shutdown
1.3.4.3 查看状态
10.0.0.103:6381> role 1) "master" 2) (integer) 1438 3) 1) 1) "10.0.0.103" 2) "6380" 3) "1438" 10.0.0.103:6380> role 1) "slave" 2) "10.0.0.103" 3) (integer) 6381 4) "connected" 5) (integer) 3505
1.3.5 宕机后恢复
[root@centos7 ~]# redis-server /usr/local/redis/conf/redis_6379.conf [root@centos7 ~]# redis-cli -h 10.0.0.103 -p 6379 10.0.0.103:6379> role # 开机后自动变为从库 1) "slave" 2) "10.0.0.103" 3) (integer) 6381 4) "connected" 5) (integer) 6973
1.4 Redis Sentinel基础操作
1.4.1 登录Redis Sentinel
[root@centos7 ~]# redis-cli -p 26379
1.4.2 列出所有被监视的主服务器信息
127.0.0.1:26379> sentinel masters 1) 1) "name" 2) "mymaster" 3) "ip" 4) "10.0.0.103" 5) "port" 6) "6379" ...省略部分输出内容...
1.4.3 列出所有从库
127.0.0.1:26379> sentinel slaves mymaster 1) 1) "name" 2) "10.0.0.103:6381" 3) "ip" 4) "10.0.0.103" 5) "port" 6) "6381" ...省略部分输出内容... 2) 1) "name" 2) "10.0.0.103:6380" 3) "ip" 4) "10.0.0.103" 5) "port" 6) "6380" ...省略部分输出内容...
1.4.4 返回给定主库的IP和端口
127.0.0.1:26379> sentinel get-master-addr-by-name mymaster 1) "10.0.0.103" 2) "6379"
1.4.5 重置所有名字和给定模式相匹配的主库
127.0.0.1:26379> sentinel reset mymaster (integer) 1
1.4.6 主服务器失效时强制一次failover
127.0.0.1:26379> sentinel failover mymaster OK

我的微信
如果有技术上的问题可以扫一扫我的微信