用户名
Email
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
帖子
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
物联网
›
物联网
›
浅谈 Redis 主从复制原理(二)
浅谈 Redis 主从复制原理(二)
尚未崩坏
论坛元老
|
2025-2-24 19:36:01
|
显示全部楼层
|
阅读模式
楼主
主题
1885
|
帖子
1885
|
积分
5655
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
各人好,我是此林。
【浅谈 Redis 主从集群原理(一) 】
上一篇文章中,说到了 Redis 主从复制的全量同步和增量同步,repl_baklog 复制缓冲区,以及 slave 挂掉之后数据同步的措施。
下面先容的上一篇遗留问题,主节点 master 宕机了,怎么办?
1. 哨兵(Sentinel)
这里贴一张网上的图,对哨兵有个团体了解。
哨兵的作用有三个:
1. 监控:不断地检查 master 和 slave 是否按照预期工作。
2. 自动故障恢复:如果 master 宕机,哨兵会推举一个 slave 提拔为 master。
3. 通知:当集群发生故障转移时,会将最新信息推送给 Redis 客户端(如:RedisTemplate)
2. 服务监控
哨兵基于心跳机制监测服务状态,每隔 1 秒向集群的每个实例发送 ping 下令。
主观下线:如果某一个哨兵发现有节点没有在规定时间内相应,认为该节点主观下线。
客观下线:一般如果凌驾一半数目的哨兵都认为该节点宕机,那么该节点客观下线。
3. master 推举
如果发现 master 宕机了,须要在 slave 中推举一个作为新的 master。
推举优先级规则:
1. 先根据 slave 和 master 断开时间的长短,剔撤除凌驾指定阈值的 slave。
2. 然后在剩余的节点中,比较 slave-priority 的大小,越小优先级越高(可以通过设置文件设置)
3. 如果 slave-priority 一样,就比较 slave 的 offset,就是同步进度,越大的代表数据越新。
4. 最后比较 slave 节点的 id 大小,越小优先级越高。
4. 故障转移
当选了一个 slave 作为新的 master 后,开始举行故障转移。
1. 哨兵向新的 master 发送 slaveof no one 下令,让 slave 酿成 master。
2. 哨兵再向其他节点发送 slaveof 新master的IP 新master的端口,让其他节点成为新 master 的 slave。
3. 最后,把故障节点标记为 master,如许故障节点恢复后就会成为新 master 的 slave。
5. 哨兵集群搭建
哨兵集群信息如下:
哨兵节点
IP地址
端标语
s1
192.168.183.128
27001
s2
192.168.183.128
27002
s3
192.168.183.128
27003
主从集群信息如下:
节点
IP地址
端标语
master
192.168.183.128
7001
slave1
192.168.183.128
7002
slave2
192.168.183.128
7003
目录信息如下:
在s1、s2、s3目录下创建 sentinel.conf,这是 s1 的。
注:vi 下令编辑,:wq 保存,:q! 不保存退出,键盘按下 i 是insert 模式,\+关键字是搜索
设置解释:
port 27001:
指定哨兵端口
sentinel announce-ip
:声明当前哨兵的IP地址
sentinel monitor
:指定主节点信息。mymaster 是主节点名称,IP 和 端口也是主节点的,2 是当凌驾两个哨兵认为某个节点主观下线的时候,那么该节点客观下线。
为什么只要设置 master:
master 上可以通过 info replication 下令查询到 slave 的信息,以是现实上还是会监控整个集群的。
sentinel down-after-milliseconds:
slave 和 master 断开的最大时长
sentinel failover-timeout:
slave 故障恢复的超时时间
哨兵启动:
redis-sentinel s1/sentinel.conf
redis-sentinel s2/sentinel.conf
redis-sentinel s3/sentinel.conf
复制代码
6. RedisTemplate 哨兵模式
RedisTemplate 作为 Redis 的一个客户端,底层使用 lettuce 实现节点的感知和自动切换。
在application.yml 里设置如下:
这里我们发现只要设置哨兵节点即可。
以是总结之前的,可知哨兵有如下作用:
1. 服务监控
2. master 推举和 slave 故障转移
3. 通知 Redis 客户端节点变革
主从读写设置:
@Bean
public LettuceClientConfigurationBuilderCustomizer configurationBuilderCustomizer() {
return configBuilder -> configBuilder.readFrom(ReadFrom.REPLICA_PREFERRED);
}
复制代码
这里的 ReadFrom 是设置 Redis 的读取计谋:
MASTER:从主节点读取
MASTER_PERFERRED:优先从 MASTER 读取,MASTER 不可用才读取 slave。
REPLICA:从从节点读取
REPLICA_PERFERRED:优先从从节点读取,slave 不可用才读取 MASTER。
主从切换、读写分离、故障转移通知接收由 RedisTemplate 全自动完成,底层已经封装好了,我们无需关注。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
尚未崩坏
论坛元老
这个人很懒什么都没写!
楼主热帖
读高性能MySQL(第4版)笔记01_MySQL架 ...
SQL Server向表中插入数据
鸿蒙DevEco Studio3.0——开发环境搭建 ...
容器开发运维人员的 Linux 操作机配置 ...
Redis命令手册
关于对四维空间一些理解
Webpack的使用
Triple 协议支持 Java 异常回传的设计 ...
0基础下载并安装SQLite并新建数据库 ...
.NET现代化应用开发 - CQRS&类目管理代 ...
标签云
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
Mysql
登录参与点评抽奖加入IT实名职场社区
下次自动登录
忘记密码?点此找回!
登陆
新用户注册
用其它账号登录:
关闭
快速回复
返回顶部
返回列表