Sentinel(哨兵)是Redis 的高可用性解决方案( 三 )


# Replicationrole:masterconnected_slaves:1slave0:ip=127.0.0.1,port=6381,state=online,offset=13751,lag=0master_repl_offset:13751repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:2repl_backlog_histlen:13750我们可以看到 6382 , 重slave 荣升为master
127.0.0.1:6382> set name jaycekonOK原本的没有权限写 , 也得到了相应的权限
5、重连Master大家可能会好奇 , 如果master 重连之后 , 会不会抢回属于他的位置 , 答案是否定的 , 就比如你被一个小弟抢了你老大的位置 , 他肯给回你这个位置吗 。 因此当master 回来之后 , 他也只能当个小弟
Sentinel(哨兵)是Redis 的高可用性解决方案文章插图
4、Sentinel 总结一、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的监控目标会随之调换
二、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 的主观下线状态就会被移除 。