Redis哨兵原理是什么

发布时间:2020-08-29 09:15:35 作者:小新
来源:亿速云 阅读:188

Redis哨兵原理是什么?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

本文实现环境

一、什么是哨兵

先简单说几句我们在配置主从复制时有一种情况就是主节点宕机了,谁来提供服务呢!

当主节点宕机后主从复制就没有存在的意义了,数据为王的时代没有了数据何谈什么高可用。

Redis哨兵原理是什么这个时候就横空出世了一位老大哥名叫哨兵,老大哥说这个问题我来帮你们处理。

既然主节点master作为老大不领你们玩了。我就从你们四个中间再挑选出来一位老大,然后你们跟着他玩。

等不带你们玩的那个老大回来后他的身份就失效了,就不在是你们的老大了。他只能跟着我挑选出来的老大玩。

上边这段对话过程就是我们配置哨兵的意义到底在哪,跟谁玩就是谁给谁数据,知道了哨兵的作用我们就在继续。

「最后我们用专业术语来解释一下什么是哨兵。」

哨兵,英文名sentinel,是一个分布式系统,用于对主从结构中的每一台服务器进行监控,当主节点出现故障后通过投票机制来挑选新的主节点,并且将所有的从节点连接到新的主节点上。

二、哨兵的作用

上文中我们谈到的对话过程就是哨兵的作用之一自动故障转移。

谈到作用肯定就是这个哨兵到底在工作中到底干了什么事情。我们先用比较干巴的概念描述一下,然后在下文的工作原理会一一谈到。

哨兵的三个作用监控、通知、自动转移故障

这里有一个注意点,哨兵也是一台redis服务器,只是不对外提供任何服务。

配置哨兵时配置为单数。那么为什么配置哨兵服务器的数量为单数呢?带着这个疑问你会在下文看到你想要的答案。

二、如何配置哨兵

1. 准备工作

这一章我们就开始配置哨兵,前期工作准备。下图就是咔咔的准备工作。开启8个客户端,三个哨兵、一个主节点、俩个从节点、一个主节点客户端、一个从节点客户端。Redis哨兵原理是什么

2. sentinel.conf配置解读

哨兵使用的配置文件是sentinel.confRedis哨兵原理是什么我们来对sentinel.conf配置信息进行解读Redis哨兵原理是什么但是大多数都是注释,这里咔咔给大家提供一个命令来过滤这些无用信息 cat sentinel.conf | grep -v '#' | grep -v '^$'Redis哨兵原理是什么

3. 开始配置

使用命令cat sentinel.conf | grep -v '#' | grep -v '^$' > ./data/sentinel-26379.conf把sentinel.conf过滤后的信息移到/usr/local/redis/confRedis哨兵原理是什么然后打开sentinel-26379.conf修改信息存放目录Redis哨兵原理是什么然后快速的复制俩个哨兵配置文件,端口为26380和26381。sed 's/26379/26381/g' sentinel-26379.conf > sentinel-26381.conf

测试主从复制处于正常工作状态,启动三台redis服务器,端口分别为6379、6380、6381Redis哨兵原理是什么查看主节点信息,是有俩台从节点在连接着,端口分别为6380、6381。

这里有一个小小的点就是lag怎么一个是1一个是0呢!lag是延迟时间,我这里是本地测试所以会出现0的情况,使用云服务器是很少出现的。lag的值为0和1都属于正常。Redis哨兵原理是什么测试主节点添加一个hash值,hset kaka name kakaRedis哨兵原理是什么分别从slave1和slave2获取kaka的值,检测主从复制是否正常运行。

经过测试我们的主从结构是正常运行的。Redis哨兵原理是什么Redis哨兵原理是什么启动一个哨兵redis-sentinel 26379-sentinel.confRedis哨兵原理是什么连接26379哨兵,主要是最后一行,监控的主节点名为mymaster,状态正常,从节点有俩个,哨兵数量为1个Redis哨兵原理是什么在来查看一下26379的哨兵配置信息,这个时候已经改动了Redis哨兵原理是什么在启动一个26380的哨兵,redis-sentinel 26380-sentinel.conf,这里注意一下最后一行多了一条信息,这个id就是我们26379配置文件新增的idRedis哨兵原理是什么然后我们来到哨兵26379的客户端,同样也是新增的26380哨兵的idRedis哨兵原理是什么这个时候我们在查看一下26379哨兵的配置文件,第一次查看配置文件是没有配置26380哨兵的,第二次查看时配置了26380哨兵后添加的信息。Redis哨兵原理是什么最后我们需要把哨兵客户端3启动起来,端口号为26381。启动起来之后,我们的配置信息和服务端的信息也会改动,添加哨兵26380有的信息,哨兵26381也会有。

直到这里我们对哨兵的配置就结束了,接下来我们把主节点master给宕掉Redis哨兵原理是什么等待30秒后我们来到26379哨兵的客户端,这里新增了一些信息,那么这些信息都做了什么呢!让我们细细道来。

Redis哨兵原理是什么这里边的信息我们先需要知道几个

当我们在重新把6379的redis服务器上线后,就可以看到哨兵服务端响应了俩句。一句是去除6379的下线。最后一句就是重连6379到新的主节点上。Redis哨兵原理是什么Redis哨兵原理是什么这个时候主节点就是6380了,在6380的redis客户端设置值,检测主从复制是否正常工作。

在新的主节点6380添加list类型Redis哨兵原理是什么在6379和6381获取这个值,至此呢!我们的哨兵模式就配置完成了。Redis哨兵原理是什么Redis哨兵原理是什么

三、哨兵工作原理

配置完哨兵后,就需要对其工作原理进行解析了,只有知道其工作流程,才能对哨兵有更好的理解。

本文讲解原理没有那么干巴!让你可以把一篇技术文章当故事去看。

进入正题,哨兵作用是监控、通知、故障转移。那么工作原理也是围绕这三点来讲的。

1. 监控工作流程

  1. 哨兵发送info指令,并且保存所有哨兵状态,主节点和从节点的信息
  2. 主节点会记录redis实例的信息,主节点记录的信息跟哨兵记录的信息看起来是一样的,实际上还是有点区别哈。
  3. 哨兵会根据在主节点拿到的从节点信息,给对应的从节点也发送info指令
  4. 接着哨兵2来了,同样的也会改主节点发送info指令,并且建立cmd连接
  5. 这个时候哨兵2也会保存跟哨兵1一样的信息,只不过是保存的哨兵信息是2个。
  6. 这个时候为了每个哨兵的信息都一致它们之间建立了一个发布订阅。为了哨兵之间的信息长期对称它们之间也会互发ping命令。
  7. 当再来一个哨兵3时,也会做同样的事情,给主节点和从节点发送info。并且跟哨兵1和哨兵2建立连接。

2. 通知工作流程

Sentinel会给主从的所有节点发送命令获取其状态,并且会把信息发布到哨兵的订阅里。Redis哨兵原理是什么

3. 故障转移原理(本文重点)

这时哨兵已经检测到问题所在了,那么到底是那个哨兵去负责推选新的主节点呢!不能是张三也去,李四也去,王五也去,这样就乱套了、于是就需要在所有的哨兵里选出领头的,那么是如何选的呢!请看下图。

这个时候呢!五个sentinel就在一起开会了,所有的哨兵都在一个内网中,然后他们会做一件事情就是五个sentinel会同时发送指令sentinel is-master-down-by-address-port并且携带上自己竞选次数和runid。Redis哨兵原理是什么每个sentinel既是参选者也是投票者,每个sentinel都有一票,信封就代表自己的投票权。Redis哨兵原理是什么当sentinel1和sentinel4同时把指令发送到群里准备竞选时,sentinel2这个时候就说我先接到谁的指令就把票投给谁。假如sentinel1发的早,那么sentinel2的票就会投给sentinel1。Redis哨兵原理是什么按照这样的规则一直发起投票直到有一个sentinel的票数为总sentinel数量的一半之多。假设说是sentinel1的票数满足总哨兵数量的一半之多后,sentinel1就会当选。这个时候就进行到了下一个阶段。Redis哨兵原理是什么在上边哨兵已经选出了sentinel1为代表去所有的从节点找出一个作为主节点。这个挑选主节点不是随便拿一个是有一定的规则的。

先把不在线的干掉

Redis哨兵原理是什么响应慢的干掉,sentinel会给所有的redis发送信息,响应速度慢的就会被干掉Redis哨兵原理是什么与原主节点断开时间最久的干掉,这里由于演示不够用了,所有新增了一个slave5,没有任何意义哈!Redis哨兵原理是什么以上三个点都判断结束后还有salve4和slave5,就会根据优先原则来进行筛选。

Redis哨兵原理是什么选出新的主节点后就要对所有的节点发送指令了。Redis哨兵原理是什么

四、总结

关于哨兵的所有知识点就已经说完了,本文最重要的就是哨兵的工作原理了。我们在简单的梳理一下其工作原理。


感谢各位的阅读!看完上述内容,你们对Redis哨兵原理是什么大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. Redis之-哨兵模式原理
  2. Redis 哨兵集群

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

redis edi %d

上一篇:Redis主从复制原理是什么

下一篇:Redis集群指的是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》