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. Keras 时序模型

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Thinking_boy1992/article/details/53207177 本文翻译自 时序模 ...

  2. 零零碎碎的java知识:static属性、普通属性、static代码块、普通代码块、构造函数

    本文中结论仅经本机测试,不保证在别的环境下成立.如果有什么不成立的地方务必告诉我_(:_」∠)_ java的内存是动态分配的,其机制和c/c++相当不一样……emmm在此不表. static: ·st ...

  3. silverlight generic.xaml 包含中文 编译错误的问题

    发现我在一个dll工程里面新建一个xaml文件起名成generic.xaml 如果这个xaml里面存在中文则会编译错误,发现这样建立的xaml使用的是gb2312编码 果断文件-另存为-编码另存为 u ...

  4. swoole 创建UDP服务器

    udp_server.php <?php // 创建Server对象,监听 127.0.0.1:9502端口,类型为SWOOLE_SOCK_UDP $serv = new swoole_serv ...

  5. sqlserver函数教程

    sqlserver聚合函数教程: mssql sqlserver avg聚合函数使用简介mssql sqlserver CHECKSUM_AGG聚合函数使用简介mssql sqlserver coun ...

  6. 使用jQuery操作input的value值

    表单控件是我们的重中之重,因为一旦牵扯到数据交互,离不开form表单的使用,比如用户的注册登录功能等 那么通过上节知识点我们了解到,我们在使用jquery方法操作表单控件的方法: $(selector ...

  7. laravel中delete()方法和destroy()方法的区别

    delete()方法是实例方法,需要查询到相应的数据并通过模型实例调用 destroy()方法可以直接调用,通过索引删除记录 举个栗子: /*delete()方法删除*/ //先查找记录 $blog ...

  8. 记一次挖掘115网盘反射型xss,08xss的储存型xss

    记一次对115分站简单绕过过滤继续实现xss,08xss平台也中枪!! 115反射型xss url:http://115.qiye.115.com/disk/?ac=select_public_fil ...

  9. 深入理解PHP传参原理(PHP5.2)

    首先说下今天想到的一个问题.在编写php扩展的时候,似乎参数(即传给zend_parse_parameters的变量)是不需要free的.举例: PHP_FUNCTION(test) { char* ...

  10. python 浮点运算 及 小数点精确位数

    >>> 1050 / 3133>>> 1050 / float(31)33.87096774193548                     # 分子或者分母用 ...