Redis Sentinel(六)

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
温馨提示:本文最后更新于2022-12-20 20:57:49,已超过490天没有更新。某些文章具有时效性,若文章内容或图片资源有错误或已失效,请联系站长。谢谢!
转载请注明本文链接:https://blog.leonshadow.cn/763482/894.html
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享