微信公众号:51码农网
网站:http://www.51manong.com51码农网,让程序员的坚持学习变得可能

Redis哨兵(Sentinel)模式

Redis的主从复制,当主机出现了宕机时,需要人工手动去干预,把一台从服务器切换为主服务器,或者手动去重启主机,费时费力,而且还会导致该时间段内的服务不可用,这就要说说Redis的哨兵模式。

哨兵自然就是站岗放哨,负责监控。Redis的哨兵系统执行3个任务

1.监控,Redis的哨兵会不断检查主服务器和从服务器的运行状况

2.提醒,当哨兵检查到某个Redis服务器出现了问题,哨兵可以通过API向运维或者其他程序发送通知

3.自动故障迁移(Automatic failover), 当一个主服务器不能正常工作时, 哨兵会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器

哨兵模式的配置文件sentinel.conf

运行一个 Sentinel 所需的最少配置如下所示:

sentinel monitor mymaster 127.0.0.1 6379 1
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5

第一行配置指示 Sentinel 去监视一个名为 mymaster 的主服务器, 这个主服务器的 IP 地址为 127.0.0.1 , 端口号为 6379 , 而将这个主服务器判断为失效至少需要 1 个 Sentinel 同意 (只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行)。

down-after-milliseconds 选项指定了 Sentinel 认为服务器已经断线所需的毫秒数。
如果服务器在给定的毫秒数之内, 没有返回 Sentinel 发送的 PING 命令的回复, 或者返回一个错误, 那么 Sentinel 将这个服务器标记为主观下线(subjectively down,简称 SDOWN )。

不过只有一个 Sentinel 将服务器标记为主观下线并不一定会引起服务器的自动故障迁移: 只有在足够数量的 Sentinel 都将一个服务器标记为主观下线之后, 服务器才会被标记为客观下线(objectively down, 简称 ODOWN ), 这时自动故障迁移才会执行。

parallel-syncs 选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长

哨兵模式演示

1.将Redis源码下的sentinel文件复制到Redis的安装目录

[erayt@ERAYT-01 redis-3.0.0]$ cp sentinel.conf /usr/local/redis/bin/

顺便说一下,Redis Sentinel 兼容 Redis 2.4.16 或以上版本, 推荐使用 Redis 2.8.0 或以上的版本。2.配置sentinel

sentinel monitor mymaster 127.0.0.1 6379 1

3.启动哨兵

[erayt@ERAYT-01 bin]$ ./redis-sentinel sentinel.conf

查看窗口日志

3146:X 20 Jul 05:41:40.158 # Sentinel runid is 2fd81c3ed629769930e5b4511470e95b0a429a4b
3146:X 20 Jul 05:41:40.158 # +monitor master mymaster 127.0.0.1 6379 quorum 2
3146:X 20 Jul 05:41:41.169 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379
3146:X 20 Jul 05:41:41.169 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379

4.关闭Redis的主节点6379

[erayt@ERAYT-01 bin]$ ./redis-cli shutdown

查看窗口日志

3260:X 20 Jul 05:55:33.661 # +switch-master mymaster 127.0.0.1 6379 127.0.0.1 6380
3260:X 20 Jul 05:55:33.674 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6380
3260:X 20 Jul 05:55:33.696 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380
3260:X 20 Jul 05:56:03.710 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380

6380这个节点应该成为了新的主服务器

127.0.0.1:6380> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6381,state=online,offset=570,lag=0
master_repl_offset:570
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:569

故障转移的步骤

发现主服务器已经进入客观下线状态。
对我们的当前纪元进行自增, 并尝试在这个纪元中当选。
如果当选失败, 那么在设定的故障迁移超时时间的两倍之后, 重新尝试当选。

如果当选成功, 那么执行以下步骤。
1.选出一个从服务器,并将它升级为主服务器。
2.向被选中的从服务器发送 SLAVEOF NO ONE 命令,让它转变为主服务器。
3.通过发布与订阅功能, 将更新后的配置传播给所有其他 Sentinel , 其他 Sentinel 对它们自己的配置进行更新。
4.向已下线主服务器的从服务器发送 SLAVEOF host port 命令, 让它们去复制新的主服务器。
5.当所有从服务器都已经开始复制新的主服务器时, 领头 Sentinel 终止这次故障迁移操作。

微信公众号:51码农网

redis 哨兵_Redis的哨兵模式相关推荐

  1. 为什么至少三个哨兵_Redis的哨兵

    Redis-Sentinel简介 Redis Sentinel是一个分布式架构,其中包含若干个 Sentinel 节点和 Redis 数据节点,每个 Sentinel 节点会对数据节点和其余 Sent ...

  2. 实现redis 手动_Redis精华所在,一口气说完Redis的主从复制和哨兵模式

    主从复制概念 主从复制指将一台redis的数据复制另外一台redis服务器上,前者称为主节点(master),后者称为从节点(slave). 注意复制的过程是单向的,只能从主节点到从节点,主节点以写为 ...

  3. redis哨兵模式没有切换主机_Redis的哨兵模式

    微信公众号:51码农网 网站:http://www.51manong.com51码农网,让程序员的坚持学习变得可能 Redis哨兵(Sentinel)模式 Redis的主从复制,当主机出现了宕机时,需 ...

  4. redis哨兵模式原理_Redis的哨兵 (sentinal) 机制的工作原理

    什么是哨兵机制? Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务: 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Mas ...

  5. java redis 主从 哨兵_Redis主从复制与哨兵机制

    Redis主从复制 1.redis的复制功能是支持多个数据库之间的数据同步.一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数 ...

  6. redis集群之哨兵模式【原】

    redis集群之哨兵(sentinel)模式 哨兵模式理想状态 需要>=3个redis服务,>=3个redis哨兵,每个redis服务搭配一个哨兵. 本例以3个redis服务为例: 一开始 ...

  7. Redis高可用方案-哨兵模式-SpringBoot整合

    哨兵是用来放哨的,能实时监控我们redis集群的状态,保证redis服务器不会挂掉 ​ 搭建:https://blog.csdn.net/Zer01ne/article/details/8301040 ...

  8. Redis集群之哨兵模式

    本文来说下Redis集群之哨兵模式 文章目录 概述 哨兵模式 什么是哨兵 实现原理 哨兵选举过程 master选举过程 cluster集群模式 cluster集群模式是怎么存放数据的 键是如何和163 ...

  9. Redis 哨兵(sentinel)模式集群配置(5.0.3版本)

    一.准备工作 1.系统环境:centos6.4 2.服务器六台(1主5从): 192.168.1.161(master) 192.168.1.162(slave) 192.168.1.163(slav ...

最新文章

  1. galaxy android 8,三星终于正式升级安卓8.0!Galaxy S8尝鲜
  2. ftp服务----基于虚拟用户的创建
  3. 分享一个web页面背景全屏的jquery插件Fullscreen Background
  4. 从一个文件夹下随机抽取一定数量(比例)的图片移动到另一个文件夹 Python3实现
  5. php 表单提交及验证 tp,ThinkPHP表单自动提交验证实例教程
  6. 基于图查询系统的图计算引擎
  7. NTFS不利的一面——ADS流文件
  8. 从.NET中委托写法的演变谈开去(中):Lambda表达式及其优势
  9. python 通过ip获取城市_Python根据用户IP判断所属城市 !
  10. 计算机基础(三):srpintf()函数小结
  11. python3 input函数
  12. plsql command window create function
  13. svn文件本地删除 服务器不删,svn delete-删除文件和目录命令大全
  14. AntColony 磁力搜索BT引擎的核心
  15. 计算机的键盘应用,电脑键盘应用小知识
  16. jpa 动态查询条件 数组_JPA使用Specification构建动态查询
  17. oracle wip 资源吸收,Oracle ERP系统借贷关系
  18. 寂寞不归路-软件高手是这样练成的(转载)
  19. Scala之特质特质Trait
  20. 咪咕盒子链接服务器失败_咪咕打卡正式开启,你的疑问都可以在这里找答案!...

热门文章

  1. springboot幂等性_SpringBoot+Redis实现接口幂等性,就看这篇了
  2. 鸿蒙硬件HI3861-I2C-MCP23017
  3. js深拷贝和浅拷贝对数组的影响_javascript之浅拷贝与深拷贝
  4. statsmodels学习——使用多元回归拟合数据
  5. Liunx上训练模型的常见情况(不定期更新)
  6. 服务器文件同步本站,服务器文件同步
  7. Shell-删除误解压的文件
  8. ubuntu16.04(其他版本也可)批量修改图片名---shell编程
  9. 每天一道Java题[4]
  10. 运输层的多路复用于多路分解