前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第十八章《redis哨兵》

第十八章《redis哨兵》

作者头像
全栈程序员站长
发布2022-06-29 15:52:15
2060
发布2022-06-29 15:52:15
举报
文章被收录于专栏:全栈程序员必看

redis sentinel(redis哨兵) 一、redis哨兵简介 特殊的redis节点,不是数据节点。用来监控数据节点,如果数据节点故障,能够对该节点进行下线标识,如果故障的节点是主节点,sentinel可以实现自动的故障切换。

二、故障转移的流程 1.主节点发生故障后,客户端连接主节点失败,两个从节点连接主节点失败,复制中断; 2.如果主节点无法正常启动,需要选出一个从节点(slave-1) ,对其执行slaveof no one 命令使其成为新的主节点; 3.更新应用方的主节点设置,让应用方连接到新的主节点; 4.客户端命令另一个从节点(slave-2)去复制新的主节点; 5.原来的主节点恢复后,让它作为从节点去复制新的主节点。

三、为什么sentinel要以集群的方式存在? 单个sentinel来监控数据节点会出现两个问题: 1.一旦sentinel节点故障,无法监控并自动故障转移; 2.由于网络或其他问题可能导致sentinel对数据节点故障的误判; 由于以上问题,所以一般用3个或更多的sentinel节点;

四、sentinel的选举 (1) sentinel节 点会监控数据节点以及其他的sentinel节点,如果发现主节点故障,sentinel会将信息发送给其他的sentinel节点,如果大多数sentinel节点都认为主节点下线了,就会选出一个leader节点去执行故障转移; 达到一半+1数量的sentinel节点同意选出leader节点

启动sentinel节点的命令: (1)redis-sentinel sentinel.conf (2)redis-server sentinel.conf –sentinel

sentinel的命令: 1.sentinel masters 或 sentinel master mastername 查看sentinel监控的主节点信息: 2.sentinel slaves mastername: 查看mastername集群的从节点信息: 3.sentinel sentinels mastername 查看其他sentinel节点的信息 4.sentinel reset mastername/ 清除主节点的相关状态,重新发现主节点和sentinel节点 5.sentinel failover mastername 对指定的mastername进行强制故障转移(没有和其他的sentinel节点商量),当故障转移完成后再将信息发送给其他的sentinel节点,使其更新自身配置。 6.sentinel ckquorum mastername 检测当前主机点的哨兵是否达到quorum的个数 7.sentinel flushconfig 将sentinel节点的配置信息强制写到磁盘上 8.sentinel remove mastername 取消当前sentinel节点对于mastername主节点的监控; 9.sentinel monitor mastername ip port quorum 指定主节点ip、端口、quorum等

sentinel实现监控和故障转移的原理: sentinel的3个定时任务 (1)每隔秒给主节点发送info命令获取集群的拓扑结构 (2)每隔2秒,向redis的_sentinel_:hello频道发送sentinel节点对于主节点的判断以及当前sentinel节点的信息; sentinel节点之间进行主节点状态信息的交换,作为后面客观下线和leader sentinel节点选举的依据; (3)每隔一秒,每隔sentinel节点会向主节点、从节点,其他sentinel节点发送一条ping命令做心跳检测,来确认这些节点的存活状态

主观下线: 当sentinel节点在超过down-after-millisencons 这个配置设置的时间没有收到主节点的回应,就会主观的认为主节点下线了,就会在频道里发送节点下线信息;

客观下线: sentinel节点主观判断主节点下线后,会在频道里发送sentinel is-master-down-by-addr <current_epoch> 这个命令,如果超过quorum个sentinel都认为主节点下线,那么就是客观下线,接下来就是选举leader,执行故障转移;

当等于 “ * ”时候,作用是sentinel节点之间交换对主节点下线的判断,当等于当前sentinel节点的runid时,作用是希望其他sentinel节点同意自己成为leader的请求。

实际部署需要注意的点: 1.不要将多个sentinel节点部署在同一台服务器上; 2.一般部署3个或多余3个的奇数个sentinel节点; 3.我们可以用一套sentinel集群来监控多个主节点,也可以每个主节点都部署一套sentinel集群; (1)一套sentinel监控多个主节点: 优点:降低维护成本,方便维护 缺点:一旦sentinel集群出现问题,多个主从的故障转移就会失败 (2)每个主节点都部署一条 优点:每套sentinel都是彼此隔离的,相互不受影响 缺点:造成资源浪费

五、哨兵实验: 先配置一主两从 关闭所有的防火墙 master节点 修改配置文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

启动redis

在这里插入图片描述
在这里插入图片描述

进入redis

在这里插入图片描述
在这里插入图片描述

两个slave节点 修改配置文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

启动redis

在这里插入图片描述
在这里插入图片描述

进入redis

在这里插入图片描述
在这里插入图片描述

三台复制配置文件

在这里插入图片描述
在这里插入图片描述

修改配置文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三台启动命令 redis-sentinel sentinel1.conf

进入

在这里插入图片描述
在这里插入图片描述

查看主节点信息

在这里插入图片描述
在这里插入图片描述

故障转移shutdown之后等待30秒登录 验证一下

在这里插入图片描述
在这里插入图片描述

去从节点看一下节点信息

在这里插入图片描述
在这里插入图片描述

主节点的redis-server宕机,然后主节点的redis-cli就无法登录,等30秒之后登录redis-cli -p 26379,输入命令sentinel master mymaster或者sentinel sentinels mymaster查看sentinel的主节点信息,查看是否切换成功,去从节点登录redis-cli,输入info replication查看节点信息 主节点宕机,故障切换,其中的一个从就变成了主,然后把主节点重启,主节点就会变成从节点

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/101960.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档