Redis:六、哨兵模式


一、哨兵模式简介

哨兵(Sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制来选举出新的master并将所有的slave连接到新的master。
哨兵也是一台redis服务器,只不过不提供数据服务。
哨兵通常配置为单数。
在这里插入图片描述

二、哨兵的搭建

在这里插入图片描述

  • sentinel.conf 配置文件解读
# Example sentinel.conf

# port <sentinel-port>
port 8001

# 守护进程模式
daemonize yes

# 指明日志文件名
logfile "./sentinel1.log"

# 工作路径,sentinel一般指定/tmp比较简单
dir ./

# 哨兵监控这个master,在至少quorum个哨兵实例都认为master down后把master标记为odown
# (objective down客观down;相对应的存在sdown,subjective down,主观down)状态。
# slaves是自动发现,所以你没必要明确指定slaves。
# 通常哨兵数量设置为单数,quorum = 哨兵数量/2 +1
sentinel monitor MyMaster 127.0.0.1 7001 1

# master或slave连接多长时间(默认30秒)不能使用后标记为s_down状态。
sentinel down-after-milliseconds MyMaster 1500

# 新master上任后数据同步时一次有多少数据同步,数值越小服务器压力越小但速度越慢
sentinel parallel-syncs mymaster 1  

# 若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout TestMaster 10000

# 设置master和slaves验证密码
sentinel auth-pass TestMaster testmaster123

sentinel config-epoch TestMaster 15
#除了当前哨兵, 还有哪些在监控这个master的哨兵
sentinel known-sentinel TestMaster 127.0.0.1 8002 0aca3a57038e2907c8a07be2b3c0d15171e44da5
sentinel known-sentinel TestMaster 127.0.0.1 8003 ac1ef015411583d4b9f3d81cee830060b2f29862
  • 实例搭建
    在这里插入图片描述
    在这里插入图片描述
    显示 6379作为master,它下面还有2个slave,同时有3个哨兵监视着。
    在这里插入图片描述

三、哨兵工作原理

1. 阶段(1)监控阶段:
在这里插入图片描述
sentinel 会向master要状态信息、向slave要状态信息、向其它sentinel要状态信息。

2. 阶段(2)通知阶段:
在这里插入图片描述
sentinel1 会不断向master、slave发送指令来判断连接是否正常,并且将接受到的信息分享给其余sentinel。

3. 阶段(3)故障转移阶段:
在这里插入图片描述

  1. sentinel1 会不断发送请求给master,如果在指定时间内接收不到响应则认为master已经下线,并且将master标记为 flags:SRI_S_DOWN (主观下线)。随后sentinel1 会将这一消息分享给其余sentinel,其余sentinel也会不断发送消息给master进行连接测试,如果有半数以上的sentinel都认为master已经下线,则master的状态会被标记为 flags:SRI_O_DOWN (客观下线)。

  2. 找到需要剔除的master 主机后,接下来需要从众多 sentinel 中选举出一个代表 sentinel 去实行剔除工作。
    在这里插入图片描述

  3. 最后就是执行剔除工作并且选举出新的master。会根据以下要求进行选举。
    在这里插入图片描述
    哨兵工作原理:
    在这里插入图片描述
    在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值