千家信息网

Redis哨兵机制讲解

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要讲解了"Redis哨兵机制讲解",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Redis哨兵机制讲解"吧!哨兵作用哨兵是Redis集群架构中
千家信息网最后更新 2026年11月03日Redis哨兵机制讲解

这篇文章主要讲解了"Redis哨兵机制讲解",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Redis哨兵机制讲解"吧!

哨兵作用

哨兵是Redis集群架构中非常重要的一个组件,主要功能如下:

  • 集群监控:负责监控redis master和slave进程是否正常

  • 消息通知:如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员

  • 故障转移:如果master节点挂掉了,会自动转移到slave节点上

  • 配置中心:如果故障转移发生了,通知client客户端新的master地址

哨兵的核心知识

  • 故障转移时,判断一个master节点是否宕机了,需要大部分的哨兵都同意才行,涉及到了分布式选举的问题

  • 哨兵至少需要3个实例,来保证自己的健壮性

  • 哨兵+redis主从的部署架构,是不会保证数据零丢失的,只能保证redis集群的高可用性

sdown和odown

  • sdown和odown两种失败的状态

  • sdown是主观宕机,就一个哨兵如果自己觉得一个master宕机了,那么就是主观宕机

  • odown是客观宕机,如果quorum数量的哨兵都觉得一个master宕机了,那么就是客观宕机

  • sdown达成的条件:如果一个哨兵ping一个master,超过了is-master-down-after-milliseconds指定的毫秒数之后,就认为master宕机

  • odown达成条件:如果一个哨兵在指定的时间内,收到了quorum指定数量的其他哨兵也认为那个master是宕机了,那么就认为是odown了,客观认为master宕机了

quorum和majority

  1. quorum:确认odown的最少哨兵数量

  2. majority:授权进行主从切换的最少哨兵数量

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

  4. 如果quorummajority,那么必须quorum数量的哨兵都授权,比如5个哨兵,quorum是5,那么必须5个哨兵都同意授权才能执行。(谁多听谁的)

为什么哨兵至少3个节点?

哨兵集群必须部署两个以上节点。如果哨兵集群仅仅部署了2个哨兵实例,那么它的majority就是2(2的majority=2,3的majority=2,5的majority=3,4的majority=2),如果其中一个哨兵宕机了,就无法满足majority>=2这个条件,那么master发生故障时也就无法进行主从切换了。

工作原理

  1. 每个Sentienl以每秒钟一次的频率向他所知的Master,Slave以及其他的Sentinel实例发送一个ping命令

  2. 如果一个实例距离最后一次有效回复ping命令的时间超过了down-after-milliseconds选项所指的值,则这个实例会被Sentinel标记为主观宕机

  3. 如果一个master被标记为主观宕机,则正在监视这个master的所有sentinel要以每一秒一次的频率确认Master的确进入了主观宕机状态

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

  5. 在一般情况下,每个Sentinel会以1次/10秒的频率向他一致的所有master,slave发送INFO命令

  6. 当master被Sentinel标记为客观宕机是,Sentinel向下线的master的所有slave发送INFO命令的频率会从1次/10秒改为1次/秒

  7. 若没有足够数量的Sentinel同意master已经下线,master的客观宕机状态就会被移除;若master重新想Sentinel的ping命令返回有效回复,master的主观宕机状态就会被移除。

哨兵模式的配置

首先配置redis的主从服务器,修改redis.conf文件如下

# 使得Redis服务器可以跨网络访问
bind 0.0.0.0
# 设置密码
requirepass "123456"
# 指定主服务器,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
slaveof 192.168.11.128 6379
# 主服务器密码,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
masterauth 123456

上述内容主要是配置Redis服务器,从服务器比主服务器多了一个slaveof的配置和密码

配置3个哨兵,每个哨兵都是一样的。在Redis安装目录下有一个sentinel.conf文件,copy一份进行修改

# 禁止保护模式
protected-mode no
# 配置监听的主服务器,这里sentinel monitor代表监控,mymaster代表服务器的名称,可以自定义,192.168.11.128代表监控的主服务器,6379代表端口,2代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作。
sentinel monitor mymaster 192.168.11.128 6379 2
# sentinel author-pass定义服务的密码,mymaster是服务名称,123456是Redis服务器密码
# sentinel auth-pass
sentinel auth-pass mymaster 123456

启动服务器和哨兵,进入Redis安装目录的src目录

# 启动Redis服务器进程
./redis-server ../redis.conf
# 启动哨兵进程
./redis-sentinel ../sentinel.conf
注意启动顺序: 首先是主机(192.168.11.128)的Redis服务进程,然后启动丛机的服务进程,最后启动3个哨兵的服务进程

Java中使用哨兵模式

/**
* 测试Redis哨兵模式
* @author liu
*/
public class TestSentinels {
@SuppressWarnings("resource")
@Test
public void testSentinel() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(10);
jedisPoolConfig.setMaxIdle(5);
jedisPoolConfig.setMinIdle(5);
// 哨兵信息
Set sentinels = new HashSet<>(Arrays.asList("192.168.11.128:26379",
"192.168.11.129:26379","192.168.11.130:26379"));
// 创建连接池
JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels,jedisPoolConfig,"123456");
// 获取客户端
Jedis jedis = pool.getResource();
// 执行两个命令
jedis.set("mykey", "myvalue");
String value = jedis.get("mykey");
System.out.println(value);
}
}

感谢各位的阅读,以上就是"Redis哨兵机制讲解"的内容了,经过本文的学习后,相信大家对Redis哨兵机制讲解这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

哨兵 服务 服务器 配置 数量 主观 命令 实例 客观 状态 进程 代表 密码 故障 节点 集群 切换 机制 两个 主从 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东万易互联网科技有限公司惠州分公司 新华互联网科技 互联网科技卖菜 奇酷互联网科技公司 迪茉互联网科技 奇酷互联网络科技公司 老年人脱离互联网科技的作文 全球顶尖互联网科技公司 宁夏科技产业互联网案例 湖北码尼互联网科技有限公司电话 深圳育鹏互联网科技有限公司招聘 互联网在线教育科技创业 深圳互联网科技的发展 深圳无忧互联网科技 黑云互联网科技有限公司 互联网科技快讯热点 工业互联网科技创业 容联科技互联网电商 保山浩联互联网科技有限公司 科技互联网企业在行动 广州紫鲸互联网科技有限公司 朗涯互联网科技 兼蜜互联网科技 团飞科技与伯堂互联网服务平台 亳州好赞互联网科技有限公司 无锡工业互联网科技有限公司 领航科技大厦互联网公司 版纳互联网科技选哪家 伍佰万互联网科技是干嘛的 高科技和互联网的现代国家
0