人生难得几回搏,此时不搏待何时。这篇文章主要讲述入门指南|redis-Sentinel(哨兵机制)你学废了么?相关的知识,希望能为你提供帮助。
九、redis-Sentinel(哨兵机制)
工作过程
Redis Sentinel是一个分布式系统,为Redis提供高可用性解决方案。可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来 接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故 障迁移, 以及选择哪个从服务器作为新的主服务器。
Sentinel负责持续监控主从节点的健康,当主节点挂掉时,自动选择一个最优的从节点切换成为主节点。客户端来连接集群时,会首先连接Sentinel,通过Sentinel来查询主节点的地址,然后再连接主节点进行数据交互。当主节点发生故障时,客户端会重新向Sentinel要地址,Sentinel会将最新的主节点告诉客户端,如此应用程序无需重启即可自动完成节点切换。
宕机前
宕机的master下线
宕机的master上线后
消息丢失
Sentinel 实战
Redis采用异步复制,意味着当主节点挂掉时,从节点可能没有收到全部的同步消息,这部分未同步的消息丢失了,如果主从延迟特别大,那么丢失的消息就会特别多。Sentinel无法保证消息不丢失,但是也能尽量保证消息少丢失,提供了如下两个参数
min-slaves-to-write 1
min-slaves-max-lag 10
第一个参数表示主节点必须至少有一个从节点在进行正常复制,否则就停止对外写服务,丧失可用性。
何为正常服务?何为异常服务?这是由第二个参数决定的,它的单位是秒,如果在10秒以内,没收到从节点反馈,就意味着不正常。
- 环境配置
第一:准备3台服务器,此处我的sentinel就直接放在原先的服务器上,关闭防火墙
???systemctl stop firewalld.service?
?
主机说明 | 主机IP | 端口 | sentinel端口 |
master | 172.16.51.128 | 6379 | 26379 |
slave | 172.16.51.129 | 6379 | 26379 |
slave | 172.16.51.130 | 6379 | 26379 |
- 修改redis.conf。先配置redis主从
172.16.51.128(master)
bind 0.0.0.0
protected-mode no
172.16.51.129(slave)
bind 0.0.0.0
protected-mode no
slaveof 172.16.51.127 6379
172.16.51.30(slave)
bind 0.0.0.0
protected-mode no
slaveof 172.16.51.127 6379
依次启动三个节点
- 配置sentinel文件
172.16.51.128(master)
bind 0.0.0.0
protected-mode no
# 主redis 节点信息
sentinel monitor mymaster 172.16.51.127 6379 2
172.16.51.129(slave)
bind 0.0.0.0
protected-mode no
sentinel monitor mymaster 172.16.51.127 6379 2
172.16.51.30(slave)
bind 0.0.0.0
protected-mode no
sentinel monitor mymaster 172.16.51.127 6379 2
依次启动三个节点,然后随机关闭redis master。看看会不会重新选择主节点
Sentinel基本原理
- 监控阶段
用于同步各个节点的状态信息
获取sentinel的状态(是否在线)
获取master状态
获取所有slave状态
master保存sentinel信息,作用是让其他sentinel来发现其他的sentinel,建立订阅通道
通知阶段
每个sentinel进行互通
- 故障转移阶段
推荐阅读
- 小白快速入门|flutter-快速预览dart的基本语法(持续更新)
- CS5801HDMI TO eDP/DP转换芯片资料
- 分布式|redis持久化,面试必问!!!
- 路由基础学习笔记之OSPF认证
- 分享一个全网最全的订单库存扣减设计思路
- 分布式|redis实现集群的几种方式你都知道了么()
- 路由基础学习笔记之OSPF建立和路由策略
- 跟着“乐哉”学习redis系列教程-Redis的订阅
- 接入第三方|接入声网灵动课堂 流程图