文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Redis中哨兵的原理是什么

2024-04-02 19:55

关注

Redis中哨兵的原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

哨兵

在一个典型的一主多从的Redis系统中,当主数据库遇到异常中断服务后,需要手动选择一个从数据库升级为主数据库,整个过程需要人工介入,难以自动化。

Redis2.8提供了哨兵2.0(2.6提供了1.0,但是问题较多),哨兵顾名思义就是监控Redis系统的运行状况。它的功能包括一下两个:

哨兵是一个独立的进行,在一个一主多从的Redis系统中,可以使用多个哨兵监控整个Redis系统,哨兵之间也会互相监控。

配置

Redis中哨兵的原理是什么

基于前面的一主两从架构,为他们加入哨兵。

可以在三个redis节点的redis目录下找到sentinel.conf文件,这个文件就是哨兵的配置文件,修改配置如下:

sentinel monitor mymaster 192.168.2.101 6379 3

其中:

如果你需要后台启动,则修改daemonize参数:

daemonize yes

配置后如果有防火墙,不要忘记打开哨兵的端口,默认是26379。

最后,开启哨兵:

redis-sentinel /yourpath/sentinel.conf

做个测试,关闭主数据库(192.168.2.101)后,等待30秒(默认30秒):

随后启动刚才关闭的主数据库(192.168.2.101),哨兵自动将其转为从数据库;

Redis中哨兵的原理是什么

原理

1. 监控过程

哨兵启动后,会与要监控的主数据库建立两条连接:

在和主数据库建立连接后,哨兵会定时执行下面3个操作:

第一个操作是发送INFO命令,目的是获取主数据库的信息,以及主数据库的从数据库的信息,从而实现新节点的自动发现,并对从数据库也建立两条连接。

第二个操作是订阅__sentinel__:hello频道,并发送哨兵本身的信息,与同样监控该数据库的其他哨兵分享自己的信息,同时也能识别哨兵是否是新哨兵。哨兵与哨兵之间也会建立一个链接,用来发送PING命令;

第三个操作是发送PING命令,在发现了从数据库和其他哨兵后,要做的就是定时监控Redis服务是否停止,时间间隔与配置文件中的down-after-milliseconds有关,当这个值小于1秒时,哨兵会每隔该值的时间发送PING命令,当这个值大于1秒时,哨兵会每隔1秒发送一次PING命令。

配置方式是在sentinel.conf文件中加入:

sentinel down-after-milliseconds mymaster 600 # 600毫秒发送一个PING

当超过down-after-milliseconds时,如果PING的数据库未回复,则哨兵认为其主观下线。主观下线可以理解为当前的哨兵认为该节点下线了。

如果该节点是主数据库,则哨兵们会进一步判断是否需要对其进行故障修复:

哨兵会发送SENTINEL  is-master-down-by-addr命令询问其他哨兵,判断他们是否也认为该主数据库下线,如果达到quorum参数,也就是我们在配置哨兵时的命令:

sentinel monitor mymaster 192.168.2.101 6379 3

的最后一个参数3,哨兵们会认为这个主数据库客观下线,并选举一个领头哨兵对主从系统发起故障恢复。

2. 领头哨兵选举

要进行故障恢复,则需要选举出一个领头哨兵,领头哨兵的选择算法是Raft算法,具体过程如下:

3. 故障恢复

选择出领头哨兵后,会把从数据库中的一个挑选出来升级为主数据库:

选择好节点后,领头哨兵将想这个节点发送slaveof no one,升级他为主数据库。

然后想其他从数据库发送slaveof命令切换主数据库。

最后更新内部的记录,将已经停止服务的旧的主数据库更新为新的主数据库的从数据库,当其回复后自动以从数据库的身份加入到主从架构中。

哨兵部署

哨兵的推荐部署方案:

设置quorum的值为N/2+1,这样使得只有当大部分哨兵统一后才会选择领头哨兵进行故障恢复。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯