一、简介

官网文档地址:https://redis.io/topics/sentinel
image.png
Sentinel(哨兵)是用于监控Redis集群中Master状态的工具,是 Redis 高可用解决方案,哨兵可以监视一个或者多个redis master服务,以及这些master服务的所有从服务;当某个master服务宕机后,会把这个master下的某个从服务升级为master来替代已宕机的master继续工作。其中三个特性:

  • 监控(Monitoring):Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
  • 提醒(Notification):当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
  • 自动故障迁移(Automatic failover):当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作。

特点

  • 保证高可用
  • 监控各个节点的情况
  • 自动故障迁移

缺点

  • 主从模式,切换需要时间,会丢数据
    • 比如master同步数据给slave的时候,这其实是异步复制吧,这个时候master挂了,那么slave上的数据就没有master新,数据同步需要时间的,1-2秒的数据会丢失。master恢复并转换成slave后,新数据则丢失
  • 没有解决 master 写的压力

二、环境搭建

1. 普通方式搭建哨兵模式

创建并且配置sentinel.conf:(需要启动至少3个哨兵,并且是奇数)

  1. port 26379
  2. pidfile "/usr/local/redis/sentinel/redis-sentinel.pid"
  3. dir "/usr/local/redis/sentinel" #哨兵的工作空间
  4. daemonize yes
  5. protected-mode no #保护模式
  6. logfile "/usr/local/redis/sentinel/redis-sentinel.log" #日志文件

核心控制

# 配置哨兵
sentinel monitor mymaster 192.168.71.130 6379 2   #监控master的名称(mymaster 前后要保持一致) 地址 端口 2是决策哨兵的数量(3个总数)
# 访问master的密码
sentinel auth-pass mymaster 1234
# master被sentinel认定为失效的间隔时间
sentinel down-after-milliseconds mymaster 30000
# 剩余的slaves重新和新的master做同步的并行个数
sentinel parallel-syncs mymaster 1
# 主备切换的超时时间,哨兵要去做故障转移,这个时候哨兵也是一个进程,如果他没有去执行,超过这个时间后,会由其他的哨兵来处理
sentinel failover-timeout mymaster 180000

不同的linux之间的远程传递(用于复制)

scp sentinel.conf root@192.168.71.102:/usr/local/redis/

启动哨兵(如果没有创建日志文件夹,则需要提前创建)

./redis-sentinel sentinel.conf

日志查看

tail -f redis-sentinel.log

2. 查看哨兵中的内容

连接哨兵

redis-cli -p 26379

相关指令

# 查看imooc-master下的master节点信息
sentinel master mymaster

# 查看imooc-master下的slaves节点信息
sentinel slaves mymaster

# 查看imooc-master下的哨兵节点信息
sentinel sentinels mymaster

3. 部署约定

  • 哨兵节点要有至少3个或者技奇数个节点
  • 哨兵分布式部署在不同的计算机节点
  • 一组哨兵只监听一组主从

4. SpringBoot中的配置

spring:
  redis:
    database: 1
    password: 1234
    sentinel:
      master: mymaster 
      #所有的哨兵节点
      nodes: 192.168.1.191:26379,192.168.1.192:26379,192.168.1.193:26379

三、Docker搭建哨兵

https://juejin.cn/post/6844903908398071815#heading-5