Redis哨兵模式简介

目录

 

1.哨兵简介

1.启动哨兵模式

3.哨兵工作原理 

3.1监控阶段

3.2通知阶段

3.3 故障转移阶段​

3.4 三个阶段总结


1.哨兵简介

在主从复制下,redis服务器存在一个master和多个slave同时在工作。如果这时候,主机宕机,会发生什么情况,即数据写服务没人复制,且从机的数据也无法实现同步。

针对上述场景,引入了哨兵模式的概念,哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。

哨兵的作用: 

1.监控

  • 不断的检查master和slave是否正常运行。
  • master存活检测、 master与slave运行情况检测

2.通知(提醒)

当被监控的服务器出现问题时, 向其他(哨兵间,客户端) 发送通知。
3.自动故障转移

断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服
务器地址


1.启动哨兵模式

配置哨兵:

1.配置一拖二的主从结构

2.配置三个哨兵

3.启动哨兵

启动顺序,先主机,后从机,最后哨兵

cd /home/believe123/myproject/redis/sentinel/

分别开三个窗口,启动主从机
redis-server ./redis-6379.conf
redis-server ./redis-6380.conf
redis-server ./redis-6381.conf

分别开三个窗口,启动三个哨兵
redis-sentinel ./sentinel-26379.conf
redis-sentinel ./sentinel-26380.conf
redis-sentinel ./sentinel-26381.conf

当主机宕机时,例如6379下线,6381被投票选举为主机,等待6379上线的时,它就变成了6381的从机。

手动杀死master服务器,6381变为master:

 重新连接6379,6379就作为6381的从机进行数据同步:

配置文件内容如下:

且运行过程中sentinel*.conf文件会被重写:

3.哨兵工作原理 

哨兵在进行主从切换过程中经历三个阶段:

  • 监控阶段
  • 通知阶段
  • 故障转移阶段

3.1监控阶段

sentinel与master之间维持着cmd连接,来通过info获取其状态信息,通过定时ping操作维护各个 sentinel的通信。

3.2通知阶段

每个时段,挑选出一个 sentinel 来获取master和slave的info,并通过sentinel之间的pulish和subcribe操作,将信息广播给其他sentinel。

3.3 故障转移阶段

当其中一个哨兵sentinel1发现master下线时,通知其他哨兵(sentinel2、sentinel3),然后其他哨兵尝试给master发送消息,如果发现master真的下线,则将flags:SRI_S_DOWN转换为flags:SRI_O_DOWN。

该策略实现是配置:
sentinel monitor mymaster 127.0.0.1 6379 2

说明:设置哨兵监听的主服务器信息,最后的参数决定了最终参与选举的服务器数量

通过投票选举新的master:

 选举规则:

服务器列表中挑选备选master:

  • 在线的
  • 响应快的
  • 与原master断开时间短的
  • 优先原则
    • 优先级
    • offset
    • runid

发送指令( sentinel )

  • 向新的master发送slaveof no one
  • 向其他slave发送slaveof 新masterIP端口

3.4 三个阶段总结

1.监控阶段

  • 同步信息

2.通知阶段

  • 保持联通

3.故障转移阶段

  • 发现问题
  • 竞选负责人
  • 优选新master
  • 新master上任,其他slave切换master,原master作为slave故障回复后连接

 

参考来源:

http://yun.itheima.com/course/611.html?bili 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值