Redis 学习笔记(十三)redis哨兵模式

Redis哨兵系统用于集群监控、故障通知和自动故障迁移。哨兵通过定期检测来判断主从节点是否正常,并在多数哨兵确认主机下线后执行故障迁移。配置文件sentinel.conf中设置监控、通知、故障转移参数等。当主节点故障,哨兵会选取新的主节点并同步数据,同时通知客户端更新配置。哨兵模式确保了Redis集群的高可用性。
摘要由CSDN通过智能技术生成

哨兵模式概述

Redis的哨兵模式用于管理 Redis 集群,负责以下三个任务:

  • 监控(Monitoring): 哨兵定期检查redis服务器是否运作正常。

  • 提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵可以通过 API 向管理员或者其他应用程序发送通知。

  • 自动故障迁移(Automatic failover):当一个主机不能正常工作时,哨兵会开始一次自动故障迁移操作,它会将失效主机r的其中一个从机升级为新的主机, 并让其他从机改为认主新的主机。

一般使用多哨兵模式,哨兵之间也相互监控,因为单哨兵模式下一旦哨兵宕机就完啦!

哨兵的工作

1):每个哨兵以每秒钟一次的频率向它所知的主机从机以及其他哨兵实例发送一个 PING 命令。

2):如果一个实例距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被哨兵标记为主观下线。

3):如果一个主机被标记为主观下线,则正在监视这个主机的所有哨兵 要以每秒一次的频率确认主机的确进入了主观下线状态。

4):当有足够数量的哨兵(大于等于配置文件指定的值)在指定的时间范围内确认主机的确进入了主观下线状态, 则主机会被标记为客观下线 。

5):在一般情况下, 每个哨兵会以每 10 秒一次的频率向它已知的所有主机从机发送 INFO 命令 。

6):当主机被哨兵标记为客观下线时,哨兵向下线的 主机的所有 从机发送 INFO 命令的频率会从 10 秒一次改为每秒一次 。

7):若没有足够数量的哨兵同意主机已经下线, 主机的客观下线状态就会被移除。

若 主机 重新向哨兵的 PING 命令返回有效回复,主机 的主观下线状态就会被移除。

8):当主机已确定下线,所有从机进行投票选举一个得票最多的从机,进行主从切换。主从切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换 。(原主机重新连接时,已成为新主机的从机:“什么?!大清亡了?”)

哨兵的配置(sentinel.conf)

多哨兵就多复制几个sentinel.conf配置文件

port 26379    
#哨兵运行的端口,默认为26379
dir /temp     
#哨兵的工作目录
daemonize yes     
#添加守护进程模式
logfile "/opt/redis/26379/sentinel.log"    
#添加指明日志文件名
sentinel monitor <mymaster> <master-IP> <master-port> <n> 
#设置被监控的主机的主机名(自定义),主机IP地址,主机端口号,n表示需要多少哨兵认为主机失联,则标记为客观下线
sentinel auth-pass <mymaster> <master-password>
#若访问主机需要密码,则设置密码;没有密码可不填
sentinel down-after-milliseconds <mymaster> <mseconds>
#多少毫秒后主机未应答哨兵,哨兵主观认为主机下线,默认30秒
sentinel parallel-syncs <mymater> <sentinel-num>
#当进行故障转移(主从切换)时,最多多少哨兵同时对新主机同步
sentinel failover-timeout <mymaster> <mseconds>
#故障转移的超时时间,默认3分钟

######脚本调用#######
sentinel notification-script <mymaster> /var/redis/nitify.sh
#通知型脚本,发送信息通知管理员已进行主从切换
sentinel client-reconfig-script <mymaster> /var/redis/recoonfig.sh
#通知客服端重新配置主节点参数脚本

关于更多的配置项分析可以参考https://www.cnblogs.com/xuliangxing/p/7149322.html

哨兵的启动

当配置文件sentinel.conf配置完后,可以用这个配置文件进行启动:

命令:

  redis-sentinel  /sentinel.conf
  # 或者使用命令:
  redis-server /sentinel.conf --sentinel

哨兵的常用命令:

  info   #查看sentinel的基本状态信息

  sentinel masters <mymaster>  #列出被监视的主服务器,以及主服务器的当前状态

  sentinel slaves <mymaster>  #列出给定主服务器的所有从服务器,以及这些从服务器的当前状态
  
  sentinel get-master-addr-by-name <mymaster>  #返回给定主服务器的IP地址和端口号
  
  sentinel remove <mymaster>  #放弃对给定主服务器的监听
  
  sentinel reset <pattern>  #重置所有名字和给定模式pattern相匹配的主服务器,
  #重置操作清除主服务器目前的所有状态,包括正在执行中的故障转移,并移除目前已经发现和关联的,主服务器的所有从服务器和Sentinel

  sentinel failover-timeout <mymaster> <mseconds>  #设置主从切换的超时时间

  sentinel failover <mymaster>  #当主服务器失效时,在不询问其他Sentinel意见的情况下,强制开始一次自动故障迁移,
  #但是它会给其他Sentinel发送一个最新的配置,其他sentinel会根据这个配置进行更新

  sentinel sentinels <mymaster>  #查看其他哨兵信息

  sentinel monitor <mymaster> <master-IP> <master-port> <n>  #设置哨兵监控新的主服务器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值