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. QLocalServer和QLocalSocket单进程和进程通信

    QLocalServer 继承自QObject. QLocalServer提供了一个基于本地套接字(socket)的服务端(server).QLocalServer可以接受来自本地socket的连接. ...

  2. javascript fundamental concept

    http://hzjavaeyer.group.iteye.com/group/wiki?category_id=283 上面这个url非常适合javascript初学者阅读,感谢原作者的分享 什么是 ...

  3. SQL Server ->> 时间函数: EOMONTH, DATEFROMPARTS, TIMEFROMPARTS, DATETIMEFROMPARTS, DATETIMEOFFSETFROMPARTS

    上面几个函数都是SQL Server 2012新增的时间函数. EOMONTH 返回传入时间的月结束日,返回数据类型为DATE SELECT EOMONTH(GETDATE()) 结果为 DATEFR ...

  4. 【Oracle】Oracle11g安装和基本的使用-转载

    一.测试操作系统和硬件环境是否符合,我使用的是win2008企业版.下面的都是step by step看图就ok了,不再详细解释. 请留意下面的总的设置步骤:--------------------- ...

  5. 测试mysql性能工具

    mysqlslap mysqlslap可以模拟服务器的负载,并输出计时信息.它包含在MySQL 5.1 的发行包中,应该在MySQL 4.1或者更新的版本中都可以使用.测试时可以执行并发连接数,并指定 ...

  6. Python 编码为什么那么蛋疼?

    据说,每个做 Python 开发的都被字符编码的问题搞晕过,最常见的错误就是 UnicodeEncodeError.UnicodeDecodeError,你好像知道怎么解决,遗憾的是,错误又出现在其它 ...

  7. npm创建react项目

    1:win+R 输入cmd ,打开cmd面板 2:安装cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org 3:安装r ...

  8. java 开发常用IDE

    1.IntelliJ IDEA 2.eclipse 3.netbeans 这三个IDE都不错,据说IntelliJ IDEA最好,主要还是看个人喜好和需要.

  9. Maven项目打包jar依赖外部jar

    有时候我们想要做一些java 的小程序,需要把打包成jar,单独执行,做一个maven项目,maven非常方便,有自动打包成jar的插件,但是有时候我们的项目可能会依赖其他的jar包,所以非常麻烦. ...

  10. Android(java)学习笔记210:Android线程形态之 IntentService

    1. IntentService原理 IntentService是一种特殊的Service,既然是Service,使用的时候记得在AndroidManifest清单文件中注册. 并且它是一个抽象类,因 ...