Redis Sentinel(六)

2017年12月9日11:21:10 发表评论 643 views

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

weinxin
我的微信
如果有技术上的问题可以扫一扫我的微信
版权声明
1. 本网站名称:Leon的博客
2. 本站永久网址:https://blog.leonshadow.cn
3. 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ632113590进行删除处理。
4. 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5. 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6. 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
liyang