Redis Sentinel
 
sentinel的功能:
监控:sentinel节点定期检测redis数据节点,其余sentinel节点是否可达。
通知:sentinel 节点会将故障转移结果通知给应用方
主节点故障转移:实现从节点晋升为主节点
配置提供者:在redis sentinel结构中,客户端在初始化的时候连接的是sentinel节点集合。从中取得主节点信息。
 
 
 
多个sentinel节点之间相互独立,如何发现彼此呢?:
1 sentinel通过订阅主节点(主节点即我们加入sentinel高可用的节点:如sentinel monitor jia2 127.0.0.1 4014 2 。黑体为主节点 )的 _sentinel_:hello (PUBSUB CHANNELS 命令可以查到该订阅)了解其他 sentinel 节点信息。如果是新加入的sentinel节点。就将该节点信息保存起来。
 
2 sentinel节点之间交换主节点的状态。作为客观下线的依据。
注意:其实一个sentinel节点和那些sentinel节点通讯由 他连接的 master决定。 一个sentinel会和 他master 下的  slave 。master连接的其他sentinel 通信。
建议:一个业务一套sentinel。一套sentinel 3个节点。方便管理。
 
sentinel 节点的publish格式如下:
<sentinel 节点ip> <sentinel节点端口> <sentinel runid> <sentinel节点配置版本><主节点名字><主节点ip><主节点端口><主节点配置版本>
<主节点名字><主节点ip><主节点端口> :构成唯一的高可用。任何一个可以在同个网络内的sentinel如果设置了相同的 seninel monitor <主节点名字> <主节点ip><主节点端口> 会成为同一个高可用。
 
 
redis sentinel 客户端基本实现:
1、遍历所有提供的sentinel节点,获取一个可用的sentinel节点。通过 sentinel get-master-addr-by-name master-name  找到主节点。
当然也可以找到从节点(但是sentinel只对主节点高可用。如果要发现从节点。建议故障转移完了且定时执行sentinel reset <master-name>,这样可以保证得到可用的slave。)。
2、redis sentinel 客户端只有在初始化的时候和切换主节点时候需要和sentinel节点集合进行交互来获取主节点。所以在设计客户端时候需要将sentinel 节点集合配置成发现服务。(sentinel下面master发生变化才通知客户端重新获取连接。即监控》通知
 
故障转移:
主观下线sdown:单个sentinel认为master挂了。告知其他sentinel节点检查该master。
客观下线odown:超过quorum个sentinel认为master挂了》使用Raft算法选举领导者sentinel进行故障转移
故障转移:下线当前master》选择slave-priority优先级高的slave节点提升为新主节点(slaveof no one)》其他节点执行slaveof 新主节点》告知client(client端的API订阅)
注意:下线后可能没有马上更新master的信息。可设置脚本sentinel reset <master-name> 。语句必须对所有sentinel执行。(因为可能老的主节点已死。但是sentinel把它列入为新主节点的从。所以如果要把这节点下线不用。一定要对所有sentinel reset <master-name> 。不然下次旧主节点起来依然被sentinel拉入作为从。)
 
相关命令:
sentinel monitor <master-name> <ip> <port> <quorum>  加入sentinel
sentinel remove <master-name> 移除master
sentinel client-reconfig-script <master-name> <script> 故障转移后执行的脚本 。参考故障转以后提供给脚本的对应参数。
sentinel masters 
sentinel master <master-name>
sentinel  slaves <master-name>
sentinel sentinels <master-name>  查看一个master的所有sentinels
sentinel flushconfig
sentinel reset   <master> 更新sentinel的信息。

Redis Sentinel 介绍的更多相关文章

  1. redis sentinel介绍

    目录 配置redis主从复制 使用ping命令检查是否启动 主节点查看链接信息 开始部署sentinel 节点 部署sentinel 启动sentinel 演示下故障转移 查看当前sentinel监控 ...

  2. Redis Sentinel基本介绍(翻译以及总结)

    目录 Redis Sentinel介绍 分布式的Redis Sentinel 快速开始 获取Sentinel 启动Sentinel 部署Sentinel的基本要求 配置Sentinel 其他的Sent ...

  3. (转)基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案

    转载自:http://warm-breeze.iteye.com/blog/2020413 本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedi ...

  4. 基于Redis Sentinel的Redis集群(主从Sharding)高可用方案(转)

    本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedis2.2.2及以上版本(强制),Redis2.8及以上版本(可选,Sentinel最早出现在 ...

  5. 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案

    本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedis2.2.2及以上版本(强制),Redis2.8及以上版本(可选,Sentinel最早出现在 ...

  6. Redis Sentinel 高可用部署实践集群

    一.Redis Sentinel 介绍    1.Sentinel     数据库环境搭建,从单机版到主备.再到多数据库集群,我们需要一个高可用的监控:比如Mysql中,我们可能会采用MHA来搭建我们 ...

  7. 【Redis】Redis Sentinel 哨兵模式搭建

    Redis Sentinel介绍 Redis Sentinel是Redis的官方高可用性解决方案 Redis Sentinel为Redis提供高可用性.实际上,这意味着使用Sentinel可以创建一个 ...

  8. Redis Sentinel 高可用实现说明

    背景:      前面介绍了Redis 复制.Sentinel的搭建和原理说明,通过这篇文章大致能了解Sentinel的原理和实现方法以及相关的搭建.这篇文章就针对Redis Sentinel的搭建做 ...

  9. Redis Sentinel高可用架构

    Redis目前高可用的架构非常多,比如keepalived+redis,redis cluster,twemproxy,codis,这些架构各有优劣,今天暂且不说这些架构,今天主要说说redis se ...

随机推荐

  1. 数组多功能splice()方法的插入,删除,替换

    多功能splice()插入.删除.替换 <script type="text/javascript"> var arr=['A','B','C','D','E','F' ...

  2. windows 64位 安装mvn提示 不是内部或外部命令

    在安装mvn的过程中当在mvn的目录下去执行mvn命令的时候是可以正常执行的,当设置好环境变量后执行后发现提示mvn不是内部命令. 原因是设置的MAVEN_HOME变量未被Path解析,解决办法是 直 ...

  3. 通过JavaScript创建Qml对象

    有两种方法可以创建,都是全局对象Qt提供的方法 一:用Qt.createComponent加载一个qml文件并创建Component 二:用Qt.createQmlObject从一个qml字符串创建C ...

  4. 利用Grahics 进行图片裁剪

    这两天做了一个图片对比工具,里面要处理两张大的图片,所以要对图片先进行裁剪最开始用了 /// <summary>        /// 裁剪图片        /// </summa ...

  5. ubuntu配置(娱乐工作)

    因为目前没有使用ubuntu作为工作的电脑(mac还是好用),所以暂时记录一下别人分享的ubuntu常用软件: 输入法:搜狗输入法 虚拟机:virtualbox 浏览器:chromium ide:id ...

  6. 无需安装 vsftpd , 直接使用 FTP 来管理 docker 容器中的文件

    无图无真相,先放个效果图:     背景 使用 docker 来跑一些服务很方便,但是有的时候想管理容器里面的文件却很麻烦 -- 一般常规做法有3种: 通过数据卷或数据卷容器的方式 启动容器的时候时候 ...

  7. 用WCAT进行IIS压力测试

    用WCAT进行IIS压力测试 分类: javascript专辑 IT信息化 2008-10-13 16:56 5754人阅读 评论(1) 收藏 举报 iis测试服务器microsoft脚本网络 如何建 ...

  8. sql server——分组查询(方法和思想)

    思想 先排序在汇总 sql server里分组查询通常用于配合聚合函数,达到分类汇总统计的信息.而其分类汇总的本质实际上就是先将信息排序,排序后相同类别的信息会聚在一起,然后通过需求进行统计计算. 使 ...

  9. JAVA中的那些名词解释!

    1.JDO: (Java Data Object )是Java对象持久化的新的规范,也是一个用于存取某种数据仓库中的对象的标准化API.作用:用于存取某种数据仓库中的对象 2.JPA: JPA是Jav ...

  10. sql server 获取表结构和记录数

    表结构 then d.name else null end) 表名, a.colorder 字段序号,a.name 字段名, ( then '√'else '' end) 标识, (case when ...