精华内容
下载资源
问答
  • Redis哨兵机制原理详解

    千次阅读 2021-01-15 23:53:31
    哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次都通过sentinel代理访问redis的主节点,当redis的主节点发生变化,哨兵会第一时间感知到,并且哨兵会早主从模式的从节点....

    一、什么是哨兵模式:

    1、哨兵模式的架构:

    2、什么是哨兵模式:

    在主从模式下(主从模式就是把上图的所有哨兵去掉),master节点负责写请求,然后异步同步给slave节点,从节点负责处理读请求。如果master宕机了,需要手动将从节点晋升为主节点,并且还要切换客户端的连接数据源。这就无法达到高可用,而通过哨兵模式就可以解决这一问题。

    哨兵模式是Redis的高可用方式,哨兵节点是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。 哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次都通过sentinel代理访问redis的主节点,当redis的主节点挂掉时,哨兵会第一时间感知到,并且在slave节点中重新选出来一个新的master,然后将新的master信息通知给client端,从而实现高可用。这里面redis的client端一般都实现了订阅功能,订阅sentinel发布的节点变动消息。

    3、哨兵的主要工作任务:

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

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

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

     

    二、哨兵模式的搭建:

    1、配置sentinel.conf文件,配件需要监听的主从的master节点

    sentinel monitor <master‐name> <ip> <redis‐port> <quorum>

    (1)master‐name:主节点master的名字

    (2)quorum:哨兵集群中多少个sentinel 认为 master 失效才判定为客观下线,一般配节点数/2+1,也就是说大于半数

    2、如果主从master设置了密码,还需要配置:

    sentinel auth-pass <master-name> <password>

    由于master挂了之后,哨兵会进行重新的选举,如果slave也配置了连接密码,那么最好在其他的节点都配置上 masterauth xxx,保证挂了的服务重启之后能正常加入主从中去

    3、修改心跳检测的主观下线时间(后续讲原理的时候会详细讲到):

    sentinel down-after-milliseconds <master-name> <time>

    (1)time:主观下线阈值,单位为毫秒ms

    4、从服务器的个数配置:

    sentinel parallel-syncs mymaster 2

    5、启动指定的哨兵配置文件启动哨兵:

    ./redis-server sentinel.conf --sentinel &

    6、查看状态信息:

    配置完之后,进入./redis-cli,输入info命令,查看哨兵的状态信息

    再使用同样的配置文件,启动另外两个哨兵,在查看信息之后会发现哨兵数量变成3个

    7、Java客户端连接哨兵模式,只需要配置哨兵节点即可

    spring.redis.sentinel.master=mymaster #哨兵配置中集群名字 
    spring.redis.sentinel.nodes=哨兵ip1:哨兵端口1,哨兵ip2:哨兵端口2,哨兵ip3:哨兵端口3

     

    三、哨兵模式的工作原理:

    哨兵是一个分布式系统,可以在一个架构中运行多个哨兵进程,这些进程使用流言协议(gossip protocols)来传播Master是否下线的信息,并使用投票协议(agreement protocols)来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master。哨兵模式的具体工作原理如下:

    1、心跳机制:

    (1)Sentinel 与 Redis Node:Redis Sentinel 是一个特殊的 Redis 节点。在哨兵模式创建时,需要通过配置指定 Sentinel 与 Redis Master Node 之间的关系,然后 Sentinel 会从主节点上获取所有从节点的信息,之后 Sentinel 会定时向主节点和从节点发送 info 命令获取其拓扑结构和状态信息。

    (2)Sentinel与Sentinel:基于 Redis 的订阅发布功能, 每个 Sentinel 节点会向主节点的 sentinel:hello 频道上发送该 Sentinel 节点对于主节点的判断以及当前 Sentinel 节点的信息 ,同时每个 Sentinel 节点也会订阅该频道, 来获取其他 Sentinel 节点的信息以及它们对主节点的判断

    通过以上两步所有的 Sentinel 节点以及它们与所有的 Redis 节点之间都已经彼此感知到,之后每个 Sentinel 节点会向主节点、从节点、以及其余 Sentinel 节点定时发送 ping 命令作为心跳检测, 来确认这些节点是否可达。

    2、判断master节点是否下线:

    (1)每个 sentinel 哨兵节点每隔1s 向所有的master、slave以及其他 sentinel 节点发送一个PING命令,作用是通过心跳检测,检测主从服务器的网络连接状态

    (2)如果 master 节点回复 PING 命令的时间超过 down-after-milliseconds 设定的阈值(默认30s),则这个 master 会被 sentinel 标记为主观下线,修改其 flags 状态为SRI_S_DOWN

    (3)当sentinel 哨兵节点将 master 标记为主观下线后,会向其余所有的 sentinel 发送sentinel is-master-down-by-addr消息,询问其他sentinel是否同意该master下线

    发送命令:sentinel is-master-down-by-addr <ip> <port> <current_epoch> <runid>

    ip:主观下线的服务ip

    port:主观下线的服务端口

    current_epoch:sentinel的纪元

    runid:*表示检测服务下线状态,如果是sentinel的运行id,表示用来选举领头sentinel

    (4)每个sentinel收到命令之后,会根据发送过来的 ip和port 检查自己判断的结果,回复自己是否认为该master节点已经下线了

    回复内容主要包含三个参数(由于上面发送的runid参数是*,这里先忽略后两个参数)

    down_state(1表示已下线,0表示未下线)

    leader_runid(领头sentinal id)

    leader_epoch(领头sentinel纪元)。

    (5)sentinel收到回复之后,如果同意master节点进入主观下线的sentinel数量大于等于quorum,则master会被标记为客观下线,即认为该节点已经不可用。

    (6)在一般情况下,每个 Sentinel 每隔 10s 向所有的Master,Slave发送 INFO 命令。当Master 被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave 发送 INFO 命令的频率会从 10 秒一次改为每秒一次。作用:发现最新的集群拓扑结构

    3、基于Raft算法选举领头sentinel:

    到现在为止,已经知道了master客观下线,那就需要一个sentinel来负责故障转移,那到底是哪个sentinel节点来做这件事呢?需要通过选举实现,具体的选举过程如下:

    (1)判断客观下线的sentinel节点向其他 sentinel 节点发送 SENTINEL is-master-down-by-addr ip port current_epoch runid

    注意:这时的runid是自己的run id,每个sentinel节点都有一个自己运行时id

    (2)目标sentinel回复是否同意master下线并选举领头sentinel,选择领头sentinel的过程符合先到先得的原则。举例:sentinel1判断了客观下线,向sentinel2发送了第一步中的命令,sentinel2回复了sentinel1,说选你为领头,这时候sentinel3也向sentinel2发送第一步的命令,sentinel2会直接拒绝回复

    (3)当sentinel发现选自己的节点个数超过 majority 的个数的时候,自己就是领头节点

    (4)如果没有一个sentinel达到了majority的数量,等一段时间,重新选举

    4、故障转移:

    有了领头sentinel之后,下面就是要做故障转移了,故障转移的一个主要问题和选择领头sentinel问题差不多,到底要选择哪一个slaver节点来作为master呢?按照我们一般的常识,我们会认为哪个slave节点中的数据和master中的数据相识度高哪个slaver就是master了,其实哨兵模式也差不多是这样判断的,不过还有别的判断条件,详细介绍如下:

    (1)在进行选择之前需要先剔除掉一些不满足条件的slaver,这些slaver不会作为变成master的备选

    • 剔除列表中已经下线的从服务
    • 剔除有5s没有回复sentinel的info命令的slave
    • 剔除与已经下线的主服务连接断开时间超过 down-after-milliseconds * 10 + master宕机时长 的slaver

    (2)选主过程:

    ① 选择优先级最高的节点,通过sentinel配置文件中的replica-priority配置项,这个参数越小,表示优先级越高

    ② 如果第一步中的优先级相同,选择offset最大的,offset表示主节点向从节点同步数据的偏移量,越大表示同步的数据越多

    ③ 如果第二步offset也相同,选择run id较小的

    5、修改配置:

    新的master节点选择出来之后,还需要做一些事情配置的修改,如下:

    (1)领头sentinel会对选出来的从节点执行slaveof no one 命令让其成为主节点

    (2)领头sentinel 向别的slave发送slaveof命令,告诉他们新的master是谁谁谁,你们向这个master复制数据

    (3)如果之前的master重新上线时,领头sentinel同样会给起发送slaveof命令,将其变成从节点

    展开全文
  • redis哨兵原理

    2021-11-17 06:15:32
    哨兵redis集群架构中非常重要的一个组件 主要功能如下: 集群监控,负责监控redis master和slave进程是否正常工作 消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员 故障转移,...

    哨兵是redis集群架构中非常重要的一个组件

    主要功能如下:

    • 集群监控,负责监控redis master和slave进程是否正常工作
    • 消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员
    • 故障转移,如果master node挂掉了,会自动转移到slave node上
    • 配置中心,如果故障转移发生了,通知client客户端新的master地址

    哨兵本身也是分布式的,作为一个哨兵集群运行,故障转移时,判断一个master node宕机了,需要大部分的哨兵同意才行,再由一个哨兵去进行主备切换

    哨兵的核心原理

    • 哨兵至少需要3个实例,来保证自己的健壮性
    • 哨兵 + redis主从的部署架构,是不会保证数据零丢失的,只能保证redis集群的高可用性
    • 对于哨兵 + redis主从这种复杂的部署架构,尽量在测试环境和生产,都进行充足的测试和演练

    quorum 和 majority

    1. 每次一个哨兵要做主备切换,首先需要 quorum 数量的哨兵认为 odown,然后选举出一个哨兵来做切换,这个哨兵还需要得到 majority 哨兵的授权,才能正式执行切换。

    2. 如果 quorum < majority,比如 5 个哨兵,majority 就是 3,quorum 设置为 2,那么就 3 个哨兵授权就可以执行切换。

    3. 但是如果 quorum >= majority,那么必须 quorum 数量的哨兵都授权,比如 5 个哨兵,quorum 是 5,那么必须 5 个哨兵都同意授权,才能执行切换。

    展开全文
  • Redis 哨兵模式原理

    2021-03-21 09:20:58
    Redis 哨兵模式原理

    主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。

    一、哨兵模式概述

    哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令(ping命令),等待Redis服务器响应,如果在指定时间内,主机Redis无响应,从机则判断主机宕机,选举从机上位,从而监控运行的多个Redis实例。
    在这里插入图片描述

    二、哨兵的作用

    在这里插入图片描述

    • 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
      当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。然而一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式。用文字描述一下故障切换(failover)的过程。假设主服务器宕机,哨兵1先检测到这个结果,系统并不会马上进行failover过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为主观下线。当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。这样对于客户端而言,一切都是透明的。

    三、哨兵判断细节

    主机下线
    • 主观下线
      主观下线 适用于所有 主节点从节点。如果在 down-after-milliseconds 毫秒内,Sentinel 没有收到 目标节点 的有效回复,则会判定 该节点为主观下线。只有半数个哨兵节点都主观判定主节点down掉,此时多个哨兵节点交换主观判定结果,才会判定主节点客观下线。
    • 客观下线
      客观下线 只适用于 主节点。如果 主节点 出现故障,Sentinel 节点会通过 sentinel is-master-down-by-addr 命令,向其它 Sentinel 节点询问对该节点的 状态判断。如果超过 个数的节点判定 主节点 不可达,则该 Sentinel 节点会判断 主节点 为 客观下线。基本上哪个哨兵节点最先判断出这个主节点客观下线,就会在各个哨兵节点中发起投票机制,每个哨兵都投自己为领导者。最终被投为领导者的哨兵节点完成主从自动化切换的过程。当判断为主观下线时,不会进行主从切换过程。

    选举

    • 每个发现主服务器进入客观下线的sentinel都可以要求其他sentinel选自己为领头sentinel,选举是先到先得。同时每个sentinel每次选举都会自增配置纪元,每个纪元中只会选择一个领头sentinel。如果所有超过一半的sentinel选举某sentinel领头sentinel。之后该sentinel进行故障转移操作。

    哨兵模式优缺点

    优点
    1. 监控主数据库和从数据库是否正常运行。
    2. 主数据库出现故障时,可以自动将从数据库转换为主数据库,实现自动切换。
    3. 如果redis服务出现问题,会发送通知。
    缺点
    1. 主数据库出现故障时,选举切换的时候容易出现瞬间断线现象。

    Redis哨兵模式配置移至下篇文章:
    Redis 哨兵模式配置


    转载自:
    redis哨兵模式
    Redis哨兵(Sentinel)模式

    展开全文
  • 简介sentinel是redis高可用的解决方案,sentinel系统(N个sentinel实例,N >= 1)可以监视一个或者多个redis master服务,以及这些master服务的所有从服务;当某个master服务下线时,自动将该master下的某个从服务...

    简介

    sentinel是redis高可用的解决方案,sentinel系统(N个sentinel实例,N >= 1)可以监视一个或者多个redis master服务,以及这些master服务的所有从服务;当某个master服务下线时,自动将该master下的某个从服务升级为master服务替代已下线的master服务继续处理请求。

    1. sentinel初始化

    可以使用命令

    redis-sentinel /path/to/sentinel.conf

    或者

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

    来启动sentinel

    sentinel启动时,需要经过一下几个步骤

    a. 初始化服务

    sentinel本质上是一个特殊的redis服务,所以初始化的时候跟redis服务初始化差不多,不过有几点不一样;首先sentinel不会载入RDB或者AOF文件,因为sentinel根本不使用数据库,其次,sentinel不能使用数据库键值对方面的命令,例如set、del、flushdb等等,同时,sentinel也不能使用事务、脚本、RDB或者AOF持久化命令,最后,复制命令,发布与订阅命令,文件事件处理器,时间事件处理器等只能在sentinel内部使用。

    b. 将普通redis代码转成sentinel专用代码

    将redis服务的代码转成sentinel的专用代码,例如sentinel的command与redis的command命令表就不一样(redis很多命令,sentinel不需要)

    c. 初始化sentinel状态

    主要是初始化sentinelState结构,sentinelState里面保存了sentinel的所有功能和状态,sentinelState结构如下

    0dafe89be5490d6907c3fb2764fb8b05.png

    d. 根据指定的配置文件,初始化sentinel监视的主服务器列表

    其实就是初始化sentinelState中的masters属性,masters字典中记录了所有被监视的主服务器信息,其中键是服务器名字,值是服务对应的sentinelRedisInstance结构,主要有实例名字,运行id,实例地址,客观下线票数,主管下线的最大无响应时间等等

    0fadd286b10d263c3874f90c613381bb.png

    d46dd1a6cffae57f3fc0fe0ea85951be.png

    sentinelState中masters字典的大致结构如下:

    ffac569b18dbc99629fd7b93d4de1149.png

    e. sentinel创建与masters(所有master)之间的网络连接

    创建与被监视的master的网络连接后,sentinel成为该master的客户端,它会向master发送命令,并从master的响应中获取master的信息。对于每个被监视的master,sentinel会向其创建两个异步的网络连接

    命令连接,这个连接专门用于向master发送命令,并接收命令回复

    订阅连接,专门订阅master服务的 sentinel:hello频道

    2. 获取master信息

    sentinel以每10秒一次的频率向master发送info命令,通过info的回复来分析master信息,master的回复主要包含了两部分信息,一部分是master自身的信息,一部分是master所有的slave(从)的信息,所以sentinel可以自动发现master的从服务。sentinel从master哪儿获取到的master自身信息以及master所有的从信息,将会更新到sentinel的sentinelState中及masters(sentinelRedisInstance结构)中的slaves字典中

    3a5c4ba2d4e259aec7429a1bbb140e65.png

    3. 获取从服务器信息

    当sentinel发现master有新的从服务时,不但为从服务创建相信的实例结构,而且还会创建连接到该从服务的命令连接和订阅连接,创建命令连接后,sentinel会10秒每次的向从服务发送info命令,并从回复信息中提取从服务ID、从服务角色、从服务所属的主服务的ip及端口、主从服务的连接状态、从服务的优先级、从服务的复制偏移量等信息;创建或者更新到从服务的sentinelRedisInstance结构。

    4. 向被监视服务器发送询问命令

    sentinel会以每两秒一次的频率向所有的被监视服务器(master和从服务)发送询问命令,命令格式如下

    publish ___sentinel___:hello s_ip s_port s_runid s_epoch m_name m_ip m_port m_epoch

    各个参数的解析如下

    s_ip:sentinel的ip

    s_port:sentinel的端口

    s_runid:sentinel云心id

    s_epoch:sentinel当前的配置纪元

    m_name:主服务器名字

    m_ip:主服务器ip

    m_port:主服务器端口

    m_epoch:主服务器纪元

    5. 接收被监视服务器的频道信息

    sentinel与被监视的服务之间,一方面,sentinel通过命令链接发送信息到频道,另一方面,通过订阅连接从频道中接收信息。

    对于同一服务的多个sentinel,一个sentinel发送的信息,会被其他sentinel收到,用于更新对该sentinel以及被监视服务的认知,用于更新sentinelRedisInstance的sentinels字典信息(请看sentinelRedisInstance的数据结构)及master信息。

    c73c8f42f7d2b99aa4cff08525da46cc.png

    519cf1de8d4774fa2fab91b04b1ca4c6.png

    当sentinel通过频道发现新的sentinel时,不但会更新上图的sentinel字典,同时会与新的sentinel建立命令连接(不会建立订阅连接,没啥可订阅的,因为sentinel与master及从建立订阅连接,是用来发现新的sentinel,而sentinel之间是已知的,所以不需要订阅连接),最终,监视同一个服务的多个sentinel会互联形成一个网络。

    6. 主观下线

    首先解析一下什么叫主观下线,所谓主观下线,就是单个sentinel认为某个服务下线(有可能是接收不到订阅,之间的网络不通等等原因)。

    sentinel会以每秒一次的频率向所有与其建立了命令连接的实例(master,从服务,其他sentinel)发ping命令,通过判断ping回复是有效回复,还是无效回复来判断实例时候在线(对该sentinel来说是“主观在线”)。

    sentinel配置文件中的down-after-milliseconds设置了判断主观下线的时间长度,如果实例在down-after-milliseconds毫秒内,返回的都是无效回复,那么sentinel回认为该实例已(主观)下线,修改其flags状态为SRI_S_DOWN。如果多个sentinel监视一个服务,有可能存在多个sentinel的down-after-milliseconds配置不同,这个在实际生产中要注意。

    7. 客观下线

    当sentinel监视的某个服务主观下线后,sentinel会询问其它监视该服务的sentinel,看它们是否也认为该服务主观下线,接收到足够数量(这个值可以配置)的sentinel判断为主观下线,既任务该服务客观下线,并对其做故障转移操作。

    sentinel通过发送 SENTINEL is-master-down-by-addr ip port current_epoch runid,(ip:主观下线的服务id,port:主观下线的服务端口,current_epoch:sentinel的纪元,runid:*表示检测服务下线状态,如果是sentinel 运行id,表示用来选举领头sentinel)来询问其它sentinel是否同意服务下线。

    一个sentinel接收另一个sentinel发来的is-master-down-by-addr后,提取参数,根据ip和端口,检测该服务时候在该sentinel主观下线,并且回复is-master-down-by-addr,回复包含三个参数:down_state(1表示已下线,0表示未下线),leader_runid(领头sentinal id),leader_epoch(领头sentinel纪元)。

    sentinel接收到回复后,根据配置设置的下线最小数量,达到这个值,既认为该服务客观下线

    8. 选举领头sentinel

    一个redis服务被判断为客观下线时,多个监视该服务的sentinel协商,选举一个领头sentinel,对该redis服务进行古战转移操作。选举领头sentinel遵循以下规则:

    所有的sentinel都有公平被选举成领头的资格

    所有的sentinel都有且只有一次将某个sentinel选举成领头的机会(在一轮选举中),一旦选举某个sentinel为领头,不能更改

    sentinel设置领头sentinel是先到先得,一旦当前sentinel设置了领头sentinel,以后要求设置sentinel为领头请求都会被拒绝

    每个发现服务客观下线的sentinel,都会要求其他sentinel将自己设置成领头

    当一个sentinel(源sentinel)向另一个sentinel(目sentinel)发送is-master-down-by-addr ip port current_epoch runid命令的时候,runid参数不是*,而是sentinel运行id,就表示源sentinel要求目标sentinel选举其为领头

    源sentinel会检查目标sentinel对其要求设置成领头的回复,如果回复的leader_runid和leader_epoch为源sentinel,表示目标sentinel同意将源sentinel设置成领头

    如果某个sentinel被半数以上的sentinel设置成领头,那么该sentinel既为领头

    如果在限定时间内,没有选举出领头sentinel,暂定一段时间,再选举

    9. 故障转移

    故障转移分为三个主要步骤

    a. 从下线的主服务的所有从服务里面挑选一个从服务,将其转成主服务

    sentinel状态数据结构中保存了主服务的所有从服务信息,领头sentinel按照如下的规则从从服务列表中挑选出新的主服务

    删除列表中处于下线状态的从服务

    删除最近5秒没有回复过领头sentinel info信息的从服务

    删除与已下线的主服务断开连接时间超过 down-after-milliseconds*10毫秒的从服务,这样就能保留从的数据比较新(没有过早的与主断开连接)

    领头sentinel从剩下的从列表中选择优先级高的,如果优先级一样,选择偏移量最大的(偏移量大说明复制的数据比较新),如果偏移量一样,选择运行id最小的从服务

    b. 已下线主服务的所有从服务改为复制新的主服务

    挑选出新的主服务之后,领头sentinel 向原主服务的从服务发送 slaveof 新主服务 的命令,复制新master

    c. 将已下线的主服务设置成新的主服务的从服务,当其回复正常时,复制新的主服务,变成新的主服务的从服务

    同理,当已下线的服务重新上线时,sentinel会向其发送slaveof命令,让其成为新主的从

    展开全文
  • Redis 哨兵原理浅析

    2020-12-28 22:54:00
    aaasa
  • redis哨兵模式原理及部署 1.redis哨兵模式原理 redis主从复制的不足: 当主库宕机后,slave无法自己变成主库,进行数据的写入,每次都需要人为配置将从库变为主库才能进行数据写入,当主库修复后还需要人为配置导入...
  • 1,启动 redis master 2,启动多个 slave 3,启动 sentinel 获取所有sentinel信息 获取master uid,ip,所有slave信息 获取所有slave的,uid, role(slave),master host/port,等 4,sentinel 持续互相交流。 5,持续...
  • 哨兵是一个分布式系统,用于对主从结构中的每台服务器进行监视,当出现故障时,通过投票机制选择新的master并将所有slave连接到新的master 哨兵的作用: 监控:不断地检查master和slave是否正常运行。maste..
  • redis哨兵机制(转)

    2021-04-27 05:03:46
    哨兵机制任务:有了主从复制的实现以后,如果想对主服务器进行监控,那么在redis2.6以后提供了一个"哨兵"的机制。顾名思义,哨兵的含义就是监控redis系统的运行状态。可以启动多个哨兵,去监控redis数据库的运行状态...
  • 详解Redis哨兵模式

    2021-03-23 14:43:39
    原理哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。哨兵的作用:通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。当哨兵监测到master宕机,会自动将slave切换成...
  • 今天来分享一下Redis基于哨兵的高可用架构。主要会分享哨兵架构的原理以及搭建。 一、哨兵架构的原理? 那什么是哨兵架构?它有什么优点?好,我画了一个哨兵架构图,一会我也会按照图的架构进行搭建。架构图如下:...
  • 哨兵模式 哨兵 哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。 哨兵作用 监控:监控master和slave 不断...
  • redis哨兵配置 总结

    2020-12-22 18:05:55
    本文内容涵盖windows下单机部署redis多实例 、linux下哨兵示例redis主从配置redis哨兵配置以spring boot redis demo下一个存action,一个取action为例进行演示。本文只讲配置,不讲原理(原理随便都是,配置完整完善...
  • Redis哨兵模式搭建

    2021-08-24 21:25:44
    原理哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。 这里的哨兵有两个作用 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。 当哨兵监测到
  • Redis 哨兵模式Java 操作

    千次阅读 2021-02-13 01:34:45
    实际工作时,Sentinel 内部维护了一个主题队列, 用来保存Redis的节点信息,并实时更新, 客户端订阅了这个主题,然后实时的去获取这个队列的Redis节点信息 哨兵模式工作原理 ①、三个定时任务 一.每10秒每个 sentinel 对...
  • Redis哨兵、复制、集群的设计原理,以及区别
  • Redis哨兵模式

    2021-11-24 20:40:03
    一、哨兵模式概述 (自动选主机的方式) ...其原理哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。 这里哨兵模式有两个作用: 通过发送命令,让Redis服务器返回监控.
  • 主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段...其原理哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。Re...
  • 作者 | 阿文责编 | 郭芮在说哨兵之前,我们先说下主从复制,Redis 的主从复制模式,一旦主节点出现故障无法提供服务,需要人工介入手工将从节点调整为主节点,同时应用端还需要修改新的主节点地址,这种故障转移的...
  • Redis 除了具有非常高的性能之外,还需要保证高可用,在故障发生时,尽可能地降低故障带来的影响,Redis提供了哨兵模式,来进行故障恢复。 哨兵主要负责做三件事: ①监控,监控主、从节点是否正常运行 ②选主,...
  • Redis哨兵模式 什么是Redis哨兵模式 Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息,并...
  • php监听redis哨兵模式

    2021-03-23 14:43:40
    哨兵模式已经部署好的情况下,如何让php能监听到redis呢?比如说,在主服务7269端口中断后,7270端口变成主服务,但是在项目代码中,redis的端口号是默认的,是不会变的,所有还是会造成redis连接不上,从而出现...
  • 1.客户端实现基本原理 (1).step1 获取所有Sentinel节点和masterName,遍历Sentinel集合得到一个可用(即可以ping通)的Sentinel节点。 (2).step2 向可用的Sentinel节点发送Sentinel的get-master-addr-by-name的请求...
  • 十五、Redis哨兵

    2020-12-24 09:20:08
    哨兵简介 主机”宕机“后我们要做的事情 将宕机的master下线 找一个slave作为master 通知所有的slave连接新的master 启动新的master与slave 全量复制*N+部分复制 *N 但是这伴随着以下问题 谁来确认master宕机了 ...
  • 目录 主从切换技术 哨兵模式 哨兵的作用 哨兵集群以及选举过程 ...当主服务器宕机后, 需要手动把一台从服务器切换为主服务器,这就需要人工干预, 费事费力, 还...哨兵模式是一种特殊的模式,Redis提供了哨兵的命令...
  • Java连接redis哨兵模式

    2021-07-29 16:36:05
    Java程序员必看《Java开发核心笔记(华山版)》 Redis学习笔记 Java并发编程学习笔记 四部分,详细拆分并发编程——并发编程+模式篇+应用篇+原理篇 Java程序员必看书籍《深入理解 ava虚拟机第3版》(pdf版) 大厂...
  • 为了保证高可用,通常采用一主二从三哨兵,共6个节点;此次为了方便简洁,只实现的一主一从二哨兵进行搭建 哨兵模式(主备模式)是在主从复制基础上实现自动切换,有点类似于zookeeper中的选举 主从模式需要手动实现...
  • 模拟主服务器挂掉后三、哨兵模式原理1.哨兵的主要作用1.现象2.原因2.哨兵部署流程1.模拟主服务器出现问题down下来,查看从服务器状态变化2.查看之前配置的哨兵检测的主服务器地址情况3.查看当原master服务器恢复上线...
  • 原理和细节参考: https://www.jianshu.com/p/06ab9daf921d ================== 一台云主机:106.133.226.36 配置主机和端口: 106.133.226.36:6380 106.133.226.36:6381 106.133.226.36:6382 106.133.226...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,914
精华内容 6,365
关键字:

redis哨兵原理

redis 订阅