原文链接:https://blog.csdn.net/yswKnight/article/details/78158540

一.什么是哨兵机制?

答:Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务:

监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。

提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。

自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。

哨兵(sentinel) 是一个分布式系统,你可以在一个架构中运行多个哨兵(sentinel) 进程,这些进程使用流言协议(gossipprotocols)来接收关于Master是否下线的信息,并使用投票协议(agreement protocols)来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master。

每个哨兵(sentinel) 会向其它哨兵(sentinel)、master、slave定时发送消息,以确认对方是否”活”着,如果发现对方在指定时间(可配置)内未回应,则暂时认为对方已挂(所谓的”主观认为宕机” Subjective Down,简称sdown).

若“哨兵群”中的多数sentinel,都报告某一master没响应,系统才认为该master"彻底死亡"(即:客观上的真正down机,Objective Down,简称odown),通过一定的vote算法,从剩下的slave节点中,选一台提升为master,然后自动修改相关配置。

虽然哨兵(sentinel) 释出为一个单独的可执行文件 redis-sentinel ,但实际上它只是一个运行在特殊模式下的 Redis 服务器,你可以在启动一个普通 Redis 服务器时通过给定 --sentinel 选项来启动哨兵(sentinel)。

哨兵(sentinel) 的一些设计思路和zookeeper非常类似

二.哨兵模式的配置修改

实现步骤:

1.拷贝到etc目录

cp sentinel.conf  /usr/local/redis/etc

2.修改sentinel.conf配置文件

sentinel monitor mymast  192.168.110.133 6379 1  #主节点 名称 IP 端口号 选举次数

#配置主服务器的密码(如没设置密码,可以省略)

sentinel auth-pass mymaster 123456

3. 修改心跳检测 5000毫秒

sentinel down-after-milliseconds mymaster 5000

4. 做多多少合格节点

sentinel parallel-syncs mymaster 2

5. 启动哨兵模式

./redis-server /usr/local/redis/etc/sentinel.conf --sentinel &

6. 停止哨兵模式

注意:

1.当启动哨兵模式之后,如果你的master服务器宕机之后,哨兵自动会在从redis服务器里面 投票选举一个master主服务器出来;这个主服务器也可以进行读写操作!

2.如果之前宕机的主服务器已经修好,可以正式运行了。那么这个服务器只能进行读的操作,会自动跟随由哨兵选举出来的新服务器!

3.大家可以进入./redis-cli,输入info,查看你的状态信息;

三、哨兵(Sentinel)总结

1、Sentinel的作用:

A、Master 状态监测

B、如果Master 异常,则会进行Master-slave 转换,将其中一个Slave作为Master,将之前的Master作为Slave

C、Master-Slave切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换

2、Sentinel的工作方式:

1):每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他Sentinel 实例发送一个PING 命令。

2):如果一个实例(instance)距离最后一次有效回复PING 命令的时间超过down-after-milliseconds 选项所指定的值,则这个实例会被Sentinel 标记为主观下线。

3):如果一个Master被标记为主观下线,则正在监视这个Master的所有Sentinel 要以每秒一次的频率确认Master的确进入了主观下线状态。

4):当有足够数量的Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入了主观下线状态,则Master会被标记为客观下线。

5):在一般情况下,每个Sentinel 会以每10 秒一次的频率向它已知的所有Master,Slave发送INFO 命令。

6):当Master被Sentinel 标记为客观下线时,Sentinel 向下线的Master 的所有Slave 发送INFO 命令的频率会从10 秒一次改为每秒一次。

7):若没有足够数量的Sentinel 同意Master 已经下线,Master 的客观下线状态就会被移除。

若Master 重新向Sentinel 的PING 命令返回有效回复,Master 的主观下线状态就会被移除。

redis 一般启动几个 哨兵_redis哨兵机制讲解相关推荐

  1. redis 哨兵_Redis哨兵的配置和原理

    哨兵 在一个典型的一主多从的Redis系统中,当主数据库遇到异常中断服务后,需要手动选择一个从数据库升级为主数据库,整个过程需要人工介入,难以自动化. Redis2.8提供了哨兵2.0(2.6提供了1 ...

  2. redis 哨兵_Redis哨兵配置

    更多精彩推荐,请关注我们 # Example sentinel.conf # 哨兵sentinel实例运行的端口 默认26379port 26379 # 哨兵sentinel的工作目录dir /tmp ...

  3. redis 哨兵_Redis哨兵机制的原理介绍

    php中文网最新课程 每日17点准时技术干货分享 本篇文章给大家带来的内容是介绍Redis的哨兵机制,让大家了解哨兵机制的原理和如何实现.有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. ...

  4. python redis 哨兵_Redis哨兵机制

    概述 上篇文章主要说了Redis 复制的内容,但 Redis 复制有一个缺点,当主机 Master 宕机以后,我们需要人工解决切换,比如使用slaveof no one .实际上主从复制并没有实现,高 ...

  5. 为什么至少三个哨兵_Redis哨兵的详解

    1 哨兵的作用 哨兵是redis集群架构中非常重要的一个组件,主要功能如下: 集群监控:负责监控redis master和slave进程是否正常工作 消息通知:如果某个redis实例有故障,那么哨兵负 ...

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

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

  7. redis 一般启动几个 哨兵_Redis6.0主从、哨兵、集群搭建和原理

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 大数据技术与架构点击右侧关注,大数据开发领域最强公众号! 暴走大数据点击右侧关注,暴走大数据! 由 ...

  8. redis 哨兵模式 cluster模式区别_Redis哨兵(Sentinel)模式快速入门

    当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用. 所以更多时候,我们优先考虑哨兵(sentinel) 模式. Redis sentin ...

  9. redis 从节点如何选举从节点升级为主节点_Redis哨兵的配置和原理

    原文作者:XuePeng77 哨兵 在一个典型的一主多从的Redis系统中,当主数据库遇到异常中断服务后,需要手动选择一个从数据库升级为主数据库,整个过程需要人工介入,难以自动化. Redis2.8提 ...

最新文章

  1. python编程语言是什么-Python编程语言的特点是什么?老男孩Python学习
  2. 在SpringMVC中使用Jackson并格式化时间
  3. [第16天]IIS UNICODE 编码漏洞
  4. 3-Qt6命令行输出显示
  5. JavaScript实现dijkstra迪杰斯特拉算法(附完整源码)
  6. mysql索引与约束有什么关系_MySQL 约束与索引
  7. 10分钟学会理解和解决MySQL乱码问题
  8. 浏览器打开出现证书错误_PADI 电子潜水证书更新啦!
  9. lisp 设计盘形齿轮铣刀_机械设计基础——周转轮系传动比的计算
  10. mysql数据类型详解系列
  11. js html实体编码转换,字符串js编码转换成实体html编码的方法(防范XSS攻击)
  12. Ability、capability 和 capacity
  13. MindManager22直装版思维导图新功能
  14. Design Patterns of SourceMaking
  15. 什么是SAP PCo
  16. 计算机右键管理提示没有关联应用,win10系统计算机右键管理提示没有与之关联的程序的解决方法...
  17. python给全局变量赋值_Python 进程之间共享数据(全局变量)的方法 python 全局变量赋值的问题...
  18. 群晖 重启 mysql_群晖nas修改MariaDB配置文件
  19. Element UI学习记录之布局
  20. 如何写出公众号爆文?分享你一份爆文写作秘籍

热门文章

  1. day9——函数初识
  2. JS 点击复制Copy
  3. 使用DevExpress的WebChartControl控件绘制图表(柱状图、折线图、饼图)
  4. python之decorator理解
  5. Failed to create the part‘s controls解决方法
  6. 解决H5在微信浏览器或QQ浏览器修改title的问题
  7. Java---读取.properties配置文件空指针异常
  8. 【省时查报告】2021四大行业品牌蓝V社媒内容运营观察报告:美妆护肤、食品饮料、汽车、家电.pdf(附下载链接)...
  9. 【干货】2021顾客体验十二大趋势:从“千人一面”到“千人千面”.pdf(附下载链接)...
  10. 第十五章 面向对象程序设计