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. C#开发小技巧

    001.判断一个Form是否已关闭并释放,需要从引用和对象两方面来判断,判断引用是否为null:mainfm==null判断引用的对象是否已释放:mainfm.IsDisposedMainFormma ...

  2. 微信小程序开发4-JSON

    1.JSON是JavaScript语法的子集 2.JSON的语法规则 数据在名称/值对中 数据由逗号分隔 大括号保存对象 中括号保存数组 3.JSON 值可以是: 数字(整数或浮点数) 字符串(在双引 ...

  3. 红黑树(R-B Tree)

    R-B Tree简介 R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树.红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black). ...

  4. 微软智能云Azure – 中国首家官方支持CoreOS的公有云

    北京2016年6月24日, 在由中国开源软件推进联盟(COPU)主办, 开源社协办,微软赞助的“第十一届开源中国开源世界高峰论坛”上,微软亚太研发集团云计算高级总监梁戈碧女士正式对外宣布一个令人振奋的 ...

  5. SQL点点滴滴_UPDATE小计

    1.更新tb_card中c_customer字段的值等于tb_customer表中c_no的值 update tb_card set c_customer=ct.c_no from tb_custom ...

  6. C++ inheritance: public, private. protected ZZ

    公有继承(public).私有继承(private).保护继承(protected)是常用的三种继承方式. 1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时, ...

  7. SVNKit学习——Setting Up A Subversion Repository 创建仓库(三)

    所谓Setting Up A Subversion Repository,就是在Subversion所在的服务器上创建一个仓库,说白了就是在磁盘上建一个特殊的目录,这里我以windows举例. 1.使 ...

  8. mongoDb 命令

    1.显示MongoDB的服务器统计:db.stats() 2.创建数据库:use dbname 3.删除数据库:db.dropDatabase() 4.检查当前选择的数据库:db 5.检查数据库列表: ...

  9. python接口自动化4-绕过验证码登录(cookie) (转载)

    前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 一.抓登录coo ...

  10. 150行JavaScript代码实现增强现实

    增强现实技术(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像.视频.3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动.这 ...