⑤+sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380:最后一句是端口为 6379 的还是没有上线,于是给踢下线 。
当我们在重新把 6379 的 redis 服务器上线后,就可以看到哨兵服务端响应了俩句 。一句是去除 6379 的下线 。最后一句就是重连 6379 到新的主节点上 。

文章插图

文章插图
这个时候主节点就是 6380 了,在 6380 的 redis 客户端设置值,检测主从复制是否正常工作 。
在新的主节点 6380 添加 list 类型:

文章插图
在 6379 和 6381 获取这个值,至此,我们的哨兵模式就配置完成了 。

文章插图

文章插图
哨兵工作原理
配置完哨兵后,就需要对其工作原理进行解析了,只有知道其工作流程,才能对哨兵有更好的理解 。
本文讲解原理没有那么干巴!让你可以把一篇技术文章当故事去看 。
进入正题,哨兵作用是监控、通知、故障转移 。那么工作原理也是围绕这三点来讲的 。
监控工作流程

文章插图
监控工作流程如下:
①哨兵发送 info 指令,并且保存所有哨兵状态,主节点和从节点的信息 。
②主节点会记录 redis 实例的信息,主节点记录的信息跟哨兵记录的信息看起来是一样的,实际上还是有点区别 。
③哨兵会根据在主节点拿到的从节点信息,给对应的从节点也发送 info 指令 。
④接着哨兵 2 来了,同样的也会给主节点发送 info 指令,并且建立 cmd 连接 。
⑤这个时候哨兵 2 也会保存跟哨兵 1 一样的信息,只不过是保存的哨兵信息是 2 个 。
⑥这个时候为了每个哨兵的信息都一致它们之间建立了一个发布订阅 。为了哨兵之间的信息长期对称它们之间也会互发 ping 命令 。
⑦当再来一个哨兵 3 时,也会做同样的事情,给主节点和从节点发送 info 。并且跟哨兵 1 和哨兵 2 建立连接 。
通知工作流程
sentinel 会给主从的所有节点发送命令获取其状态,并且会把信息发布到哨兵的订阅里 。

文章插图
故障转移原理

文章插图
哨兵会一直给主节点发送 publish sentinel:hello,直到哨兵报出 sdown,这个词这会是有不是有点熟悉了 。没错就是我们上文中把主节点断开后哨兵服务端报出的信息 。
哨兵报出主节点 sdown 后还没有完,哨兵还会往内网里发布消息说明这个主节点挂了 。发送的指令是 sentinel
is-master-down-by-address-port 。
其余的哨兵接收到指令后,主节点挂了吗?让我去看看到底挂没挂 。发送的信息也是 hello 。
其余的哨兵也会发送他们收到的信息并且发送指令 sentinel
is-master-down-by-address-port 到自己的内网,确认一下第一个发送 sentinel
is-master-down-by-address-port 的哨兵说你说的对,这个家伙确实挂了 。
当所有人都认为主节点挂了后就会修改其状态为 odown 。当一个哨兵认为主节点挂了标记的是 sdown,当半数哨兵都认为挂了其标记的状态是 odown 。这也就是配置哨兵为什么配置单数的原因 。
对于一个哨兵认为主节点挂了称之为主观下线,半数哨兵认为主节点挂了称之为客官下线 。
一旦被认为主节点客官下线后,哨兵就会进行下一步操作:
这时哨兵已经检测到问题所在了,那么到底是那个哨兵去负责推选新的主节点呢!不能是张三也去,李四也去,王五也去,这样就乱套了、于是就需要在所有的哨兵里选出领头的,那么是如何选的呢!请看下图 。
这个时候,五个 sentinel 就在一起开会了,所有的哨兵都在一个内网中,然后他们会做一件事情就是五个 sentinel 会同时发送指令 sentinel
is-master-down-by-address-port 并且携带上自己竞选次数和 runid 。

文章插图
每个 sentinel 既是参选者也是投票者,每个 sentinel 都有一票,信封就代表自己的投票权 。
推荐阅读
- 今日头条算法原理—— 3分钟了解今日头条推荐算法原理
- 核武器原理都知道,为何很多国家倾全力也造不出,究竟难在哪里?
- 深入理解Go的interface内部执行原理
- 经常用Redis,你知道主从复制吗?
- 普洱熟茶饼和生茶,普洱生茶和普洱熟茶减肥原理不同
- Windows版 安装Redis步骤以及踩过的坑
- Hello Redis,我有7个问题想请教你
- 红外遥控原理及实现
- 搞懂这9个“烹饪原理”,让你厨艺大增,下厨做饭不求人,真实用
- 太阳能光伏发电原理及优势
