Redis哨兵怎么用啊,简单说说它的基本功能和配置方法
- 问答
- 2026-01-05 22:49:10
- 9
Redis哨兵说白了就是给Redis主从架构请来的一个“保安队”,你想象一下,你有一个Redis主服务器(老大)和几个Redis从服务器(小弟),平时都是老大负责写数据,小弟们负责读数据和备份,但如果有一天,老大突然宕机了,没人处理写请求了,整个系统不就乱套了吗?这时候,谁来发现老大不行了?谁来从小弟中选一个新老大?又怎么通知所有客户端(比如你的网站程序)现在换老大了?这些麻烦事,就是Redis哨兵要干的活。
基本功能
哨兵系统其实不是一个单独的程序,它本身就是一种特殊模式的Redis服务器,你通常会启动奇数个(比如3个或5个)哨兵进程,让它们形成一个“哨兵集群”,它们的主要工作可以总结为三件事:
-
监控:这是最基本的功能,每个哨兵会定期地去检查它看守的主服务器和其下属的所有从服务器,看它们是不是还“活着”(心跳检测),它会向这些Redis实例发送命令,如果对方在指定时间内没回应,哨兵就认为它可能“主观下线”了。
-
自动故障转移:这是哨兵的核心价值,当一个哨兵发现主服务器可能挂了,它不会立刻行动,而是会去问其他哨兵:“嘿,你们也觉得老大挂了吗?”如果达到一定数量(比如三个哨兵中有两个都认为老大挂了),哨兵们就会达成共识,判定主服务器“客观下线”,确认老大真的不行了之后,哨兵们就会开始选举一个领头哨兵,由这个领头哨兵负责从剩下的从服务器里,挑一个最合适的(比如数据最新的那个)出来,让它升级成为新的主服务器,哨兵会让其他从服务器都去复制这个新老大,这样,整个系统就在几乎不用人工干预的情况下,恢复了正常服务。
-
配置提供与通知:故障转移完成后,客户端的连接信息需要更新啊,原来连的是旧的主服务器IP,现在得连新的,哨兵就充当了一个“服务发现”的角色,客户端不需要直接记录主服务器的地址,而是去连接哨兵,问哨兵:“现在谁是老大?”哨兵就会把当前有效的主服务器地址告诉客户端,这样,无论主服务器怎么变,客户端只需要配置好哨兵的地址就行了,非常省心。
配置方法
配置哨兵其实不复杂,主要是改一个配置文件,通常叫 sentinel.conf,你不需要在每个Redis服务器上配置,只需要在你要运行哨兵进程的机器上准备这个文件就行,关键配置就那么几项:
-
配置哨兵监控的主节点:这是最重要的配置,格式是:
sentinel monitor <主服务器名字> <主服务器IP> <主服务器端口> <法定票数>举个例子:sentinel monitor mymaster 127.0.0.1 6379 2这里,mymaster是你给主服务器起的一个名字,随便起,但后面要一致。0.0.1和6379是主服务器的地址和端口,最后的2是法定票数,意思是至少需要2个哨兵同意,才能判定主服务器客观下线,对于3个哨兵的集群,通常设为2。 -
配置主观下线时间:格式是:
sentinel down-after-milliseconds <主服务器名字> <毫秒数>sentinel down-after-milliseconds mymaster 30000这表示如果一个哨兵在30000毫秒(30秒)内都没收到主服务器的响应,就先把它标记为“主观下线”,这个值可以根据你的网络状况调整。 -
配置故障转移超时时间:格式是:
sentinel failover-timeout <主服务器名字> <毫秒数>sentinel failover-timeout mymaster 180000这个配置项有很多含义,它规定了整个故障转移过程的超时时间,如果领头哨兵在180秒内还没完成故障转移,就会认为这次转移失败,它也会影响一些其他状态的重置。 -
配置并行同步数:格式是:
sentinel parallel-syncs <主服务器名字> <数量>sentinel parallel-syncs mymaster 1这表示在故障转移后,同时有多少个从服务器可以向新的主服务器发起数据同步,设为1的话,就是一个一个来,这样对新主服务器的压力小,但同步完所有从服务器的时间会长一些,如果网络和服务器性能好,可以调大这个值。
配置好文件后,启动哨兵的方式和启动普通Redis服务器很像,但命令不同,你需要用 redis-sentinel 命令来启动,并指定配置文件:
redis-sentinel /path/to/your/sentinel.conf
把你配置好的哨兵配置文件,复制到其他几台机器上,用同样的方式启动,这样,一个哨兵集群就跑起来了,哨兵之间会自动发现对方,并开始它们的工作。
最后提醒一点,为了让哨兵系统本身高可用,你一定要部署至少三个哨兵实例,并且把它们尽量分布在不同机器上,避免一台机器宕机导致整个哨兵集群瘫痪,客户端连接时,也最好配置所有哨兵的地址,这样即使某个哨兵连不上,也能从其他哨兵那里问到信息。
(参考来源:Redis官方文档中关于Sentinel的章节,以及《Redis设计与实现》一书中对Sentinel机制的讲解)

本文由盘雅霜于2026-01-05发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/75209.html
