Redis哨兵模式与高可用 基础学习

Redis哨兵模式与高可用

来自《Redis设计与实现》

Sentinel是Redis高可用的解决方案

哨兵是一个独立的进程,原理:哨兵通过发送命令,等待redis服务器响应,从而监控运行的多个Redis实例。

由一个或者多个sentinel实例组成的sentinel系统可以监视任意多个服务器进程,以及这些主服务器属下的所有从服务器,并在被监视的主服务器下线以后,自动将现行的服务器属下的某个从服务器升级为新的猪服务器,然后由新的服务器代替已经下线的主服务器继续处理命令的请求。

Sentinel启动时,需要执行的步骤

  • 初始化服务器
  • 将普通的Redis服务器使用代码代替成Sentinel专用代码
  • 初始化Sentinel状态
  • 给定配置的文件,初始化sentinel监视主服务器列表
  • 创建连向主服务器的网络连接

Sentinel本质上是一个运行在特殊模式下的Redis服务器

创建连接主服务器的连接的时候,会有两个连接:一个是命令连接,用以向主服务器发送命令,并且接受命令的回复;另一个是订阅主服务器的__sentinel__:hello命令

  • Sentinel默认以10秒一次的频率向被监视的主服务器 发送INFO命令,分析INFO命令获取主服务器的当前信息。
  • Sentinel发现主服务器的有新的从服务器以后,会向其创建新的命令连接与订阅连接。
  • Sentinel默认2秒一次的频率向所有被监视的服务器的sentinel:hello频道发送命令 记录的是本身的信息
  • Sentinel默认一秒一次的频率向所有的命令连接的实例发送PING命令,超过指定时间未返回确定主观下线
  • 主观下线以后,会向其他同样监视这个服务的Sentinel进行询问,如果同时确定以后,将服务器判定为客观下线
  • 客观下线以后,监视下线主服务器的Sentinel会协商选举出一个领头的Sentinel,对下线的主服务器进行故障转移的操作

故障转移:

  • 对已经下线的所有的从属服务器里面,选出一个成为新的主服务器。
  • 令其他所有的从属服务器复制新的主服务器
  • 将原来的主服务器降级成为新的从属服务器,重新上线以后复制新的主服务器

新服务器产生的机制:向某个从属服务器发送SLAVEOF no one命令使其成为新的主服务器

  • 删除所有下线或者断线的从属服务器
  • 删除列表内最近五秒内没有响应INFO命令的从属服务器,从而保证所有从属服务器都是最近通信成功的
  • 删除所有与已下线的主服务器连接断开超过down-after-milliseconds*10毫秒的从服务器,保证服务器保存的信息是比较新的
  • 根据优先级==》复制偏移量==》运行ID的方法选出新的主服务器
  • 向所有的从属服务器发送SLAVEOF命令,包括已经下线的原主服务器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]中提到,哨兵模式是为了实现Redis高可用性。当一个master节点宕机时,需要大部分的哨兵节点都同意才能进行故障转移,确保系统的正常工作。即使部分哨兵节点挂掉了,哨兵集群仍然能够正常工作,因为哨兵选举流程是分布式的。\[1\] 引用\[2\]中提到,哨兵的功能包括集群监控、消息通知、故障转移和配置中心。它负责监控Redis的主节点和从节点是否正常工作,并在主节点宕机时自动将其转移到从节点上。同时,哨兵还负责通知客户端新的主节点地址,确保客户端能够正确连接到Redis集群。\[2\] 引用\[3\]中提到,Redis集群模式使用了hash slot来实现节点的增加和移除,这使得增加和移除节点的成本非常低。当增加一个主节点时,只需要将其他主节点的hash slot移动部分过去;当减少一个主节点时,只需要将其hash slot移动到其他主节点上。这种机制使得Redis集群模式具有高可用性。\[3\] 综上所述,Redis哨兵模式和集群模式都是为了实现高可用性。哨兵模式通过故障转移来保证系统的正常工作,而集群模式通过使用hash slot来实现节点的增加和移除,从而实现高可用性。 #### 引用[.reference_title] - *1* *2* *3* [Redis 哨兵模式、集群模式](https://blog.csdn.net/weixin_43889841/article/details/117483197)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值