Sentinel之间互相监控

Sentinel是特殊的Redis节点,也能发布订阅;

Sentinel没有主从之分;

Sentinel订阅所有Redis节点的_sentinel_:hello频道,并在上线时给所有Redis节点的_sentinel_:hello频道发送消息,包括自己的host、进程ID(runid)、以及Master配置,让其他Sentinel感知自己,更新存储的Sentinel列表(如果是新的host、新的进程号,则进行添加;如果已经有host相同,但进程ID不同的Sentinel,代表原有的Sentinel重启了,会进行替换),如果Master配置不同,代表其他的Sentinel的Master配置的版本低,也会进行替换。

Sentinel上线后会每隔1秒给其他Sentinel发送消息。

Sentinel会询问Master,了解Master的Slave的路由。

备注:runid:Redis Server启动时创建的40位随机字符串,重复概率非常小。

Sentinel判断Master是否下线

Sentinel每隔1秒向Master发送PING命令,如果30秒内(down-after-milliseconds)没有收到+PONG 、 -LOADING或者-MASTERDOWN,认为Master主观下线,然后会询问其他Sentinel,超过半数Sentinel认为Master下线,Master就是客观下线,进行新Master的选举。

处理Master故障(Automatic Failover:自动故障转移)

建议拜读:

总结:https://www.cnblogs.com/kevingrace/p/9004460.html

Sentinel选择Leader

基于Raft算法:

Master客观下线后,各Sentinel谁先请求投票,就把票投给谁;谁得到的票多,就选举谁成为Leader。

Leader不会通知其他Sentinel自己成为Leader,Leader选举出Master后,其他Sentinel会删除Master客观下线的标记。

Raft算法和Sentinel Leader Election差异:

Raft是Follower在150ms到300ms之间各自随机的election timeout时间过后开始选举;

Leader会通知其他节点自己成为了Leader。

重选Master

Redis Server与Sentinel断开连接超过阈值,失去选举权。

如果有选举权,比较优先级:replica-priority,默认100,值越小优先级越高,选择优先级最高的。

如果优先级相同,比较当前复制Master的Offset(replication offset),选择大的,也就是复制数据最多的。

如果Offset相同,比较进程ID(runid),选择最小的。

Sentinel Leader切换Master

Sentinel Leader向选出的Master发送命令:slaveof no one,抹去Master之前的Slave印记。

Sentinel Leader向Slave发送命令:slaveof host port,host、port是新的Master的主机(IP或主机名)、端口,确定Slave的Master。

Sentinal总结

官网阐述:https://redis.io/topics/sentinel

This is the full list of Sentinel capabilities at a macroscopical level (i.e. the big picture):

  • Monitoring. Sentinel constantly checks if your master and replica instances are working as expected.
  • Notification. Sentinel can notify the system administrator, or other computer programs, via an API, that something is wrong with one of the monitored Redis instances.
  • Automatic failover. If a master is not working as expected, Sentinel can start a failover process where a replica is promoted to master, the other additional replicas are reconfigured to use the new master, and the applications using the Redis server are informed about the new address to use when connecting.
  • Configuration provider. Sentinel acts as a source of authority for clients service discovery: clients connect to Sentinels in order to ask for the address of the current Redis master responsible for a given service. If a failover occurs, Sentinels will report the new address.

翻译:

以下是宏观层面(即宏观层面)上的所有前哨能力:

监控。Sentinel经常检查主实例和副本实例是否按预期工作。

通知。Sentinel可以通过API通知系统管理员或其他计算机程序,其中一个被监控的Redis实例出现了问题。

自动故障转移。如果一个主服务器不能正常工作,哨兵可以启动一个故障转移过程,其中一个副本被提升为主服务器,其他额外的副本被重新配置为使用新的主服务器,并且使用Redis服务器的应用程序被告知在连接时使用的新地址。

配置提供者。哨兵充当客户端服务发现的权威来源:客户端连接到哨兵,以询问负责给定服务的当前Redis主服务器的地址。如果发生故障转移,哨兵将报告新地址。

Redis 哨兵(Sentinel)相互监控、判断Master是否下线、处理Master故障(Automatic Failover:自动故障转移)、Sentinal总结相关推荐

  1. Redis哨兵(sentinel)

    Redis哨兵(sentinel) [目标] 掌握解决主从复制故障的解决方案 掌握哨兵监控的搭建 掌握哨兵监控机制及故障的自动转移 [理论知识] 哨兵监控架构设计 主观和客观下线 Leader选举流程 ...

  2. Redis哨兵Sentinel的搭建和原理说明

    原文地址:http://www.cnblogs.com/zhoujinyi/p/5570024.html 背景: Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Red ...

  3. Redis 哨兵Sentinel 文档

    Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服 ...

  4. Redis哨兵Sentinel

    Sentinel 是Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器以及它们的下属从服务器. 1.Sentinel基本监视原理 如下图显 ...

  5. Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)

    Redis的集群方案大致有三种:1)redis cluster集群方案:2)master/slave主从方案:3)哨兵模式来进行主从替换以及故障恢复. 一.sentinel哨兵模式介绍 Sentine ...

  6. Redis模式对比:主从模式 VS 哨兵sentinel模式 VS Redis cluster模式

    推荐观看: 十年架构师实战Redis-用Redis实现:秒杀/抢购/排行榜/推荐系统/抽奖系统!从Redis到分布式架构,通过Redis学AKF划分原则.CAP定理!​www.bilibili.com ...

  7. redis哨兵模式没有切换主机_Redis哨兵(Sentinel)模式

    Redis哨兵(Sentinel)模式 在这里插入图片描述 一.主从复制高可用 当我们使用主从复制出现的问题 手动故障转移 写能力和存储能力受限 主从复制 -master 宕机故障处理 主从切换技术的 ...

  8. redis logfile 只读_docker 配置redis主从,哨兵sentinel

    注释:docker自行安装,主从使用一主两从,然后使用sentinel进行高可用配置,当主服务器挂掉,从服务器自动升为主服务器. 主从模式介绍 主从模式是三种模式中最简单的,在主从复制中,数据库分为两 ...

  9. Redis系列(三)-Redis哨兵模式(一篇文章让你全面的了解reids哨兵模式)

    哨兵模式概述 举一个通俗易懂的例子 有一个皇帝(master)他有2个儿子,大儿子(slave1)和小儿子(slave2).有一天皇帝离家出走了皇位空虚(master宕机),大儿子和小儿子为了争夺皇位 ...

  10. 基于docker搭建redis哨兵模式

    github学习笔记 Redis 哨兵架构 1. redis 哨兵模式介绍 1) 哨兵模式是Redis的高可用方式,哨兵节点是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点.2) ...

最新文章

  1. 庆祝博客积分成功上四位数!
  2. 世界机场数据(带位置坐标)
  3. 13-NSPersistentContainer性能比较
  4. ceph rbd 常用命令使用
  5. 虚拟资源拳王公社:什么是虚拟资源自动化?为什么虚拟产品可以自动化赚,虚拟资源自动化有什么
  6. 剑指offer——面试题34:丑数
  7. infer的用法_使用infer进行静态分析总结
  8. ONVIF流媒体播放流程
  9. 微软2012年突破重围 主攻Windows Phone
  10. Javassist基本用法
  11. (LeetCode1044)最长重复子串:给出一个字符串S,返回其最长重复子串
  12. 选购家用安防摄像头,考虑室内还是室外,无线还是有线
  13. mysql 法语字符比较_法语词典哪种比较好?
  14. c语言实现定积分运算
  15. Java语言高级-02继承与多态-第4节 多态
  16. 机器学习之LASSO,岭回归
  17. 剑指offer--序列化与反序列化二叉树(先序递归,建树)
  18. node实现cmd弹窗交互——inquirer
  19. 奇妙软件k线技巧及macd教程不一定都对,合理布局才是王道。
  20. SAP实施项目上的内部顾问与外部顾问,相互为难还是相互成就?

热门文章

  1. 华为路由器显示连接到服务器失败怎么办,华为路由器设置好后不能上网怎么办...
  2. C++:hex、oct、dec使用
  3. onActivityResult不能收到setResult(RESULT_OK, intent);的回调
  4. 中国科学家完全破解世界级百年数学难题庞加莱猜想
  5. JDBC个人学习总结
  6. 【零样本学习】Zero-Shot Learning via Class-Conditioned Deep Generative Models
  7. Cisco路由器配置动态路由rip
  8. C 中使用GDI+制作个性化的网站新闻标题
  9. asp站点服务器,ASP网站搭建 ASP服务器搭建 教程
  10. 诡异事件之--数据库存3.12E8 但是自动变成了31.00