首页 > 数据库 >14_redis哨兵机制

14_redis哨兵机制

时间:2024-03-17 18:33:08浏览次数:19  
标签:14 主机 redis 哨兵 master sentinel 节点

redis哨兵(sential)

哨兵人巡查监控后后台master主机是否故障,如果故障了根据投票数自动将某一个从机转换为主机,继续对外提供服务。

哨兵的作用

  1. 监控redis主机的运行状态,包括主机master和slave。
  2. 当主机宕机后,能自动将从机切slave换成新的主机master

注意哨兵不使用集群,仅仅是和主从复制相互配合。

配置redis哨兵

我们知道,网络是不可靠的,有时候一个sentinel会因为网络堵塞而误认为一个redis主机挂掉了,在sentinel集群环境下需要多个sentinel互相沟通来确认某个redis主机真的挂掉。投票数这个参数是进行客观下线的依据,意思是至少有quorum个sentinel认为redis主机是有故障的,才会对这个redis主机进行下线以及故障转移,因为有的时候某个sentinel节点可能是因为网络问题无法连接到redis主机,但此时redis主机并没有出现故障。所以,此时就需要多个sentinel都认为该redis主机出现故障,才进行下一步的操作。这保证了公平性和高可用性。

  1. 在myredis目录下新建或拷贝sentinel.conf文件(名字不能错,默认在redis安装目录下)
  2. 添加如下配置:

设置要监控的master服务器,其中quorum是法定投票数:表示最少有几个哨兵认可客观下线,同意故障迁移的法定投票数。

sentinel monitor

redis主机设置了密码,连接redis主机的密码

sentinel auth-pass

  1. 启动sentinel命令:

    redis-sentinel sentinel26379.conf --sentinel

    redis-sentinel sentinel26380.conf --sentinel

    redis-sentinel sentinel26381.conf --sentinel

相关问题

  1. 当redi主机挂了,从机仍然是好的。
  2. sentinel通过投票确认主机确实挂掉后,从剩下的从机中选择一个充当redis主机。
  3. 如果之前挂掉的redis主机重启回来后,会成为redis从机,因为新的redis主机已经选举出来了
  4. 注意:在master-slave切换后,master_redis.conf、slave_redis.conf、sentinel.conf的内容会发生变化,即master_redis.conf中会多一行slaveof配置,sentinel.conf的监控目标会发生变化。

哨兵运行流程

  1. 三个哨兵一主二从,正常运行中...
  2. SDown主观下线(Subjectively Down)
    1. 主观不可用指的是单个哨兵检测到master状态在发送ping心跳包后在一定时间内没有收到合法的回复,就达到了主观下线的条件。
    2. sentinel配置文件中的down-after-milliseconds设置了判断主观下线的时间长度(默认30s)。
  3. ODown客观下线(ObjectTively Down)
    1. 客观下线是需要多个哨兵一致认为该redis master确实宕机了。
  4. 选举出哨兵群中的领导者哨兵(用来指定谁是新的redis master)
    1. 当redis master被判定客观下线后,各个哨兵会进行协商,先选举出一个领导者哨兵并由该哨兵节点进行故障迁移。
    2. 领导者哨兵是如何选举出来的?----> Raft算法:先到先得,在一轮选举中,哨兵A向哨兵B发送想成为领导者的申请,如果B没有同意其它哨兵,则会同意A成为领导者。
  5. 由领导者哨兵开始推动故障切换流程并选举出一个新的redis master:
    1. 某个Slave被选举成为新的redis master。
    2. 选择新的master规则:
      1. 在redis配置文件中,权限优先级最高(数字越小)最优先
      2. 复制偏移量最大的节点其次优先(相对于宕机掉的master,数据的完整性最高)
      3. 最小Run ID的从节点优先(根据ASCII码)
    3. 让选举出来的节点执行slaveof no one命令成为新的master节点,并通过slaveof命令让其他slave节点成为新的master节点的slave
    4. 当原来宕机的master节点重启后会成为新的master节点的slave并恢复工作。
  6. 上述的工作均由sentinel自己独立完成,完全不需要人工的干预。

哨兵选举原理

当一个主从配置中的master失效后,sentinel可以选举出一个新的master用于自动接替master工作,主从配置中的其它redis服务器自动指向新的master服务器并同步数据。一般建议sentinel是奇数台,防指某一sentinel无法连接到master导致切换失败。

哨兵使用建议

  • 哨兵的数量应该为多个,哨兵本身就应该集群,保证高可用性。
  • 哨兵节点数量应该是奇数。
  • 哨兵节点配置最好都是一致的(硬件配置)
  • 哨兵集群+主从复制并不能保证数据零丢失 --> 引出redis集群

标签:14,主机,redis,哨兵,master,sentinel,节点
From: https://www.cnblogs.com/lilyflower/p/18078944

相关文章

  • Redis 线程模型
      Redis是一个高性能的键值存储系统,它的线程模型和传统的多线程服务器模型有所不同。Redis主要使用单线程来处理命令请求,但在某些操作和场景中会使用多线程。1.单线程架构架构说明:Redis的主要操作,包括读取、写入、保存数据等,都是在一个单线程中执行的。这意味着在任......
  • mysql与redis数据测试
    题目要求1.新建一张user表,在表内插入10000条数据。2.①通过jdbc查询这10000条数据,记录查询时间。②通过redis查询这10000条数据,记录查询时间。3.再次查询这一万条数据,要求根据年龄进行排序,mysql和redis各实现一次。4.上面排序后的前5人可进行抽奖,每人有一次抽奖机会,抽......
  • 13_redis复制机制
    Redis复制机制(replication)概述Redis复制机制就是主从复制,master数据库以写为主,slave数据库以读为主,当master数据发生变化时,自动的将新的数据异步同步到其他slave数据库。作用读写分离容灾恢复数据备份水平扩容支持高并发怎么用一般只配置(从)读库,不配置(主)写库(一主多从)。m......
  • 【NC14399】素数判断
    题目素数判断分解质因数思路题目很直接,给你一个数,判断其是不是素数,如果是,输出一句话和它本身,如果不是,输出一句话和它的质因数,需要注意的是质因数要从小到大输出。我们知道,一个素数的质因数就是它本身,所以抛开素数判断,直接对一个数分解质因数就行了。怎么对一个数......
  • [redis] 基于Docker安装Redis
    0序环境信息OS:CENTOS7.9Docker:25.0.4Redis:7.2.47.2.4版本比较新,也可尝试6.0.8等版本1安装步骤Step0安装docker略。可参见:[Docker]基于CENTOS7安装Docker环境-博客园/千千寰宇基于Docker安装MYSQL/Step1安装docker环境-博客园/千千......
  • 在WF14视图中调用扩展字段
    @*输出引用*@@injectSiteExtendFieldServiceSiteExtendFieldService@Power.VisualizationView(new{Area="FulltextSearch",Action="AdvancedSearch"})@{varsiteList=SiteService.GetSiteList();varextendField=SiteExtendField......
  • 【时事篇-05-03】20240316 一笔145元拆分成3笔存款存入(排除有相似性的十位数字)
    背景需求前文提到,每笔都存一样的数目,容易被银行识别违法,【时事篇-05-01】20240112150元存46只货币基金-CSDN博客文章浏览阅读580次,点赞15次,收藏11次。【时事篇-05-01】20240112150元存46只货币基金https://blog.csdn.net/reasonsummer/article/details/136106686前几天我......
  • LeetCode2024年3月14日每日一题(2789. 合并后数组中的最大元素)
    这里写目录标题单调栈代码的核心逻辑如下:单调栈单调栈是一种特殊的数据结构,它在算法设计中被广泛使用,尤其是在处理与栈相关的问题时,如括号匹配、最长有效括号子串、最小窗口子串等。单调栈的核心思想是栈内的元素保持某种单调性(递增或递减),这使得它在处理特定问题时比......
  • PTA L2-014 列车调度
    火车站的列车调度铁轨的结构如下图所示。两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺......
  • 【转载】Redis -- IO多路复用及redis6的多线程
    都知道redis是通过单线程+io多路复用来避免并发问题的,然后在redis6的时候redis引入了多线程,这里就来详细说说IO多路复用模型以及redis的多线程。Redis的I/O多路复用模型有效的解决单线程的服务端,使用不阻塞方式处理多个client端请求问题。在看I/O多路复用知识之前,我们先来......