Redis Sentinel:redis集群应用,分布式系统。

  • 多个Sentinal进程之间通过 gossip 协议来接收主服务器是否下线的信息,通过 Raft 一致性协议来决定故障转移及转移服务器。
  • 监控(monitoring):PING消息检查主从服务器运行状态
  • 通知(notification):通知问题服务器信息
  • 故障迁移(automatic failover):提升失效主服务器的从服务器为新的主服务器,其它从属服务器从新的主服务器复制信息,集群向客户端返回新的主服务器地址,

1、启动命令:

redis-server /path/to/sentinel.conf --sentinel

配置文件

sentinel monitor mymaster 127.0.0.1 6379 2 //主服务器名称 ip port 判定失效投票数

sentinel down-after-milliseconds mymaster 60000 //sentinel判定服务器失效所需的毫秒数

sentinel failover-timeout mymaster 180000 //故障转移时限

sentinel parallel-syncs mymaster 1 //故障转移时,最多可以有多少个从服务器对新的主服务器请求同步 同一时间只让一个从服务器置于不可用状态

2、自动发现Sentinel实例及从服务器:

  • sentinel实例发现:监视相同主机的sentinel实例,通过订阅发布功能实现相互发现,频道: _sentinel_:hello

  • 从服务器发现:sentinel实例通过询问主服务来获取其下从属服务器信息:

  • 发现流程:

sentinel 发送本实例 ip、port、runid 到监视的主从服务器频道 sentinel:hello
|                                                                                                                                     |
sentinel 从订阅的 主从服务器 sentinel:hello 频道 获取监视的sentinel信息                     从订阅的 主从服务器 sentinel:hello 频道获取监视的sentinel主发送的服务器配置信息
|                                                                                                                                     |
自动添加新的sentinel实例到配置列表(所有监视同一主服务器的所有sentinel实例列表) 将主服务器配置信息更新到最新的配置
(相同runid或者相同ip:port的列表条目会被移除,然后添加新的条

3、下线:

  • 主观下线(SDOWN):单个sentinel判定服务器下线

  • 客观下线(ODOWN):多个sentinel判定服务器SDOWN,并通过SENTINEL is-master-down-by-addr命令相互交互后,得出服务器下线判断。只适用于主服务器

  • 判定流程:

    • sentinel PING消息;服务器回复 +PONG -LOADING -MASTERDOWN
    • 服务器在master-down-after-milliseconds内连续回复无效信息 认定主观下线
    • 发现主服务器客观下线的sentinel进行故障迁移操作
    • sentinel 实例 只提供了订阅功能的redis服务器,订阅相应的频道获取监控服务器的相关信息。
    • Raft协议领导者选举。

4、故障转移过程:

  • 主服务器客观下线

  • sentinel epoch自增,试图当选执行故障转移

  • Raft协议选择一个从属服务器为新的主服务器

  • 发送SLAVEOF NO ONE 使其转变为主服务器

  • 通过订阅发布向其它sentinel发送最新的主服务器配置信息。

  • 向原来的从服务器发送SLAVEOF命令,使他们向心的主服务器请求信息复制同步

  • 当所有从服务器想新的主服务器请求数据复制同步事,sentinel终止故障转移

4、附注:

  • Redis Sentinel严重依赖系统时间,例配置
  • lua脚本执行超时,redis返回-BUSY状态,Sentinel会在故障转移前杀死脚本。
  • 哨兵是为了解决单点故障问题
 

Redis 哨兵 Sentinel的更多相关文章

  1. redis单点、redis主从、redis哨兵sentinel,redis集群cluster配置搭建与使用

    目录 redis单点.redis主从.redis哨兵 sentinel,redis集群cluster配置搭建与使用 1 .redis 安装及配置 1.1 redis 单点 1.1.2 在命令窗口操作r ...

  2. redis哨兵(Sentinel)、虚拟槽分区(cluster)和docker入门

    一.Redis-Sentinel(哨兵) 1.介绍 Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果master本身宕机,r ...

  3. Redis哨兵(sentinel)模式搭建

    一.Sentinel介绍 之前骚了一波Redis的简介及应用场景,今天试了下他的哨兵模式: Sentinel是Redis的高可用性(HA)解决方案,由一个或多个Sentinel实例组成的Sentine ...

  4. redis哨兵sentinel.conf文件

    关闭保护模式 //17行 protected-mode no 端口号 //21 port 26379 后台启动 //26 daemonize yes //84行 主机的ip加端口号 2 为票数 sen ...

  5. Redis容灾部署(哨兵Sentinel)

    Redis容灾部署(哨兵Sentinel) 哨兵的作用 1. 监控:监控主从是否正常2. 通知:出现问题时,可以通知相关人员3. 故障迁移:自动主从切换4. 统一的配置管理:连接者询问sentinel ...

  6. SpringBoot进阶教程(三十)整合Redis之Sentinel哨兵模式

    Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时,假如master宕机了,redis本身(以及其很多客户端)都没有实现自动进行主备切换,而 ...

  7. redis cluster + sentinel详细过程和错误处理三主三备三哨兵

    redis cluster + sentinel详细过程和错误处理三主三备三哨兵1.基本架构192.168.70.215 7001 Master + sentinel 27001192.168.70. ...

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

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

  9. redis 哨兵(sentinel)

    redis哨兵 哨兵自动故障转移 自动通知应用最新master信息 无需担心,master挂了,程序不需要修改IP啥的,由哨兵自动完成 修改sentinel.conf protected-mode n ...

随机推荐

  1. 学习一份百度的JavaScript编码规范

    JavaScript编码规范 1 前言 2 代码风格 2.1 文件 2.2 结构 2.2.1 缩进 2.2.2 空格 2.2.3 换行 2.2.4 语句 2.3 命名 2.4 注释 2.4.1 单行注 ...

  2. Jfinal框架登陆页面的图形验证码

    本文转自,http://www.bubuko.com/infodetail-720511.html 验证码的工具类, 这个jfinal自带的也有,但是下面这个和Jfinal自带的有一点点小的改动,(我 ...

  3. Java解析Excel之应用Reflection等技术实现动态读取

    目录树 背景 技术选型 问题分析 技术要点及难点分析 源码分析 测试用例 背景 Tip:因为产品提的需求我都开发完了,进行了项目提测:前天老大走过来说:你用spring-boot开发一个解析Excel ...

  4. vlookup函数使用---execl公式

    目录 vlookup函数使用---execl公式 1.用途: 2.函数语法: 3.使用方式: 4.实际案例+步骤解析 5.常见错误 vlookup函数使用---execl公式 1.用途: 我们有一张工 ...

  5. linux利用sh脚本上传下载文件到ftp服务器

    ####本地的/app/awsm/csv2 to ftp服务器上的/awsm/#### #!/bin/sh export today=`date +%Y-%m-%d` ftp -v -n 10.116 ...

  6. Docker安装(yum方式 centos7)

    yum install -y yum-utils device-mapper-persistent-data lvm2   yum-config-manager --add-repo http://m ...

  7. es6 入坑笔记(一)---let,const,解构,字符串模板

    let  全面取代var 大概相似于C++的定义,一个变量必须得先定义后使用,没有预编译 注意let的作用域,一个{}就是一个作用域,上述规则须在一个作用于内 坑:for(let i =0;i < ...

  8. Redis学习笔记(二)

    解读Retwis官网例子 Redis需要考虑需要哪些keys以及对应的value使用合适的数据类型进行存储.在retwis例子中,我们需要users,user的粉丝列表, user的关注用户列表等等. ...

  9. Linux使用scp命令进行文件远程拷贝详解

    前言 scp是 secure copy的缩写, scp是Linux系统下基于ssh登陆进行安全的远程文件拷贝命令.Linux的scp命令可以在Linux服务器之间复制文件和目录. 使用语法: scp  ...

  10. Selenium_python自动化第一个测试案例(代码基本规范)

    发生背景: 最近开始整理Selenium+python自动化测试项目中相关问题,偶然间翻起自己当时学习自动化时候写的脚本,发现我已经快认不出来写的什么鬼流水账了,所以今天特别整理下自动化开发Selen ...