微信公众号: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)模式 在这里插入图片描述 一.主从复制高可用 当我们使用主从复制出现的问题 手动故障转移 写能力和存储能力受限 主从复制 -master 宕机故障处理 主从切换技术的 ...

  2. 我的Redis哨兵为什么不切换?

    一.背景 ​ 做为一个DBA,在普天同乐的国庆节期间,还在像个值班老大爷一样,苦逼的值守着数据中心,这可能是国庆节最惨的事情了.今天在值班空闲之余,正好想起在前几天遇到的一个奇怪的redis问题,顺便 ...

  3. redis系列之——高可用(主从、哨兵、集群)

    Redis系列目录 redis系列之--分布式锁 redis系列之--缓存穿透.缓存击穿.缓存雪崩 redis系列之--Redis为什么这么快? redis系列之--数据持久化(RDB和AOF) re ...

  4. redis面试:哨兵模式主从切换数据丢失问题

    redis哨兵是怎么工作的 哨兵作用 监控整个主数据库和从数据库,观察它们是否正常运行 当主数据库发生异常时,自动将从数据库升级为主数据库,继续保证整个服务的文档 哨兵是怎样工作的 每隔sentine ...

  5. Redis主从复制哨兵模式自动切换

    Redis主从复制 1.概念 主从复制,是指将一台Redis服务器的数据复制到其他的redis服务器上.前者为主节点master,后者为从节点slave,数据的复制是单向的,由主节点复制到从节点(主节 ...

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

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

  7. Redis数据库(三)——(主从复制、哨兵模式、集群)

    Redis数据库(三)--(主从复制.哨兵模式.集群) 一.Redis主从复制 1.Redis主从模式介绍 2.Redis主从复制的流程 3.Redis主从复制的作用 4.Redis主从复制的搭建 环 ...

  8. redis 高可用(持久化、主从复制、哨兵、集群)以及集群的三种模式

    Redis高可用定义 在web服务器中,高可用代表服务器可以正常访问的时间,一般使用百分比来衡量多长时间内可以提供正常服务 但是在redis中,高可用的定义还要更广泛一点,除了提供正常的服务(如主从分 ...

  9. Redis的主从复制与高可用搭建(哨兵模式)

    前言 为什么要使用Redis 首先我们先介绍些redis的基本概念,redis是Nosql数据库,是一个key-value存储系统.虽然redis是key-value的存储系统,但是redis支持的v ...

最新文章

  1. Mysql 主从延时监控(pt-heartbeat)详解
  2. SAP SD基础知识之信用范围数据维护
  3. 面试题:SSH 和 SSM 两个框架的浅显的区别?
  4. ios php ide,最好的PHP IDE for Mac? (最好免费!)
  5. SQL Server数据库原理
  6. 【快速入门Linux】2_Linux命令—基本使用
  7. flutter android 和 ios 发布
  8. WebRTC 将一统实时音视频天下?
  9. 减法运算的借位标志cf_数学|有理数运算法则及题型汇总
  10. 摩尔庄园同一服务器怎么显示好友,摩尔庄园手游怎么搜索别人搜索好友步骤详解...
  11. 2022年中国汽车维修设备市场现状研究分析
  12. 小程序中实现搜索功能
  13. 【个人网站】个人网站搭建预备工作
  14. 上海居住证积分全流程
  15. 浅谈C语言(初学者)
  16. 语音模块LD3320模块的二次开发,并与树莓派进行串口通信
  17. 不能上升到金钱的爱都不是真爱!
  18. Java生鲜电商平台-商品中心的架构设计与源码解析
  19. 2020年全国大学生电子设计大赛赛后总结
  20. 谁说阅读App只能“阅”?百度大脑变“口语专家”为英语朗读打分

热门文章

  1. 【Python】Python中str()和repr()函数的区别
  2. 【WebPPTtoPDF】在线将PPT转化为PDF,支持自定义排列方式
  3. 密码学系列之:feistel cipher
  4. Spring5参考指南:Bean作用域
  5. viewer vue 文档_vue基于viewer实现的图片查看器
  6. python的read_csv_python,pd.read_csv成熟导入
  7. 【已解决】[Error] cannot pass objects of non-trivially-copyable type ‘std::string {aka class std::basic_s
  8. 同步规则和happen-before规则
  9. 腾达n304v2支持万能中继吗_驱动天空 - 网络设备 - 宽带路由器 - 腾达路由器
  10. linux命令行下载github文件,Linux命令行下使用GitHub