目录
Use a Sentinel-aware client library
Sentinels monitor and announce the new master
Handle DNS or proxy layers carefully
首页 数据库 Redis 客户如何在哨兵故障转移后发现新主人?

客户如何在哨兵故障转移后发现新主人?

Aug 05, 2025 am 11:07 AM
sentinel failover

To find the new master after a Redis Sentinel failover, clients must use a Sentinel-aware library, provide Sentinel addresses and the master group name, detect connection breaks to re-query Sentinels, optionally listen to pub/sub events like +switch-master, and carefully manage DNS or proxy layers that may affect discovery. Modern client libraries such as redis-py or ioredis support these features by querying Sentinels for the current master address, reconnecting automatically after failover, and staying updated through internal mechanisms or event notifications. Additionally, when using proxies or DNS layers, ensure they dynamically update based on Sentinel announcements to avoid connection delays to the new master.

How does a client discover the new master after a Sentinel failover?

When a Redis Sentinel failover happens, the client needs to find out who the new master is so it can keep reading and writing data. The good news is that Redis Sentinel handles most of this automatically — but only if your client is set up correctly.

Here’s how it typically works from a client's perspective:

Use a Sentinel-aware client library

Most modern Redis client libraries (like redis-py for Python or ioredis for Node.js) have built-in support for Redis Sentinel. These clients are designed to talk to Sentinel instances to discover the current master.

What you do as a developer is simply tell the client:

  • The list of Sentinel addresses
  • The name of the master group (e.g., mymaster)

Once configured, the client will ask any available Sentinel:
"Hey, who is the current master for 'mymaster'?"

The Sentinel responds with the current master address, and the client connects to it.

If a failover occurs and the master changes, the client usually detects that its connection is broken and re-queries Sentinel for the new master.

Tip: Make sure the client supports auto-discovery and reconnects after detecting failures. Otherwise, it might keep trying to connect to the old master indefinitely.

Sentinels monitor and announce the new master

Redis Sentinel doesn’t just detect failures — it also promotes a new slave to be the master and tells everyone about it.

After a failover:

  1. One of the Sentinels gets elected to coordinate the failover.
  2. It picks a healthy slave and turns it into the new master.
  3. Other Sentinels learn about this change and update their internal state.
  4. Any client that asks them for the master will get the updated IP and port.

So from the client’s point of view, nothing really changes — it just asks Sentinel the same question again and gets the new answer.

Some clients can also listen for Sentinel pub/sub messages like +switch-master, which notify subscribers immediately when a new master is promoted. This helps reduce downtime compared to waiting for a timeout or failed connection attempt.

Handle DNS or proxy layers carefully

Some setups use a proxy (like HAProxy) or DNS layer in front of Redis to hide the complexity of master discovery from clients.

In these cases:

  • The client connects to a fixed hostname or IP
  • The proxy/DNS layer is responsible for routing traffic to the current master
  • You need to make sure the proxy listens to Sentinel or regularly polls for master changes

This approach simplifies client logic, but adds another moving part to maintain.

Also, note that DNS-based solutions can suffer from caching delays — if the client caches the old IP for too long, it won't know the new master exists right away.


That’s basically how clients find the new master after a Sentinel failover. As long as your client library supports Sentinel and you've given it the right configuration, it should handle the rest on its own.

以上是客户如何在哨兵故障转移后发现新主人?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

PHP教程
1511
276
Psync(部分重新同步)如何工作? Psync(部分重新同步)如何工作? Jul 29, 2025 am 12:27 AM

PSYNC是Redis主从复制中的部分重同步机制,用于在从服务器断线重连后仅同步断开期间丢失的数据,以提升同步效率。其核心依赖于复制积压缓冲区(ReplicationBacklog),即主服务器维护的一个队列,默认大小为1MB,保存最近执行的写命令。当从服务器重连时,会发送PSYNC命令,主服务器据此判断是否可进行部分同步:1.runid必须一致;2.offset必须位于积压缓冲区内。若条件满足,则从该偏移量继续发送数据,否则触发全量同步。提高PSYNC成功率的方法包括:1.适当增大repl-b

如何使用zrangebyscore通过其得分来检索一系列成员? 如何使用zrangebyscore通过其得分来检索一系列成员? Jul 21, 2025 am 12:19 AM

要从Redis的有序集合中根据分数获取成员列表,应使用ZRANGEBYSCORE命令。1)基本语法为ZRANGEBYSCOREkeyminmax,用于获取指定分数范围内的成员;2)可通过添加LIMIToffsetcount实现分页查询;3)通过在min或max前加(符号可排除边界值;4)添加WITHSCORES标志可同时返回成员及其分数。

SET,SETNX和SETEX有什么区别? SET,SETNX和SETEX有什么区别? Jul 25, 2025 am 12:40 AM

setSetseSteSeSeSeSEseSakeyWithOptientionsAndExpiration,setnxSetSeSteSeTeSeSeSeyOnlyIfitDo,andSetExSetSekessekeSseKyWithAneXpiration.1.SetOffersFlexibilitieWithoPtionsLikeExex(秒),px(px(milliseconds),nx(setOnlyifnlyifnyifnyfnyotexists)和setSeStirs和setsnonemakexister 2. andsexister 2.

如何使用lrange从列表中检索一系列元素? 如何使用lrange从列表中检索一系列元素? Jul 23, 2025 am 12:01 AM

LRANGE用于从Redis列表中取出指定范围的元素,支持正负索引;1.取整个列表用0到-1;2.取前N个用0到N-1;3.取最后N个用-N到-1;4.分页通过start和stop控制;注意start大于长度或stop超出末尾会返回空或有效部分,且start>stop也返回空,适用于缓存、日志、队列等场景。

如何在Redis中存储和查询地理空间数据? 如何在Redis中存储和查询地理空间数据? Jul 29, 2025 am 12:20 AM

RedissupportsgeospatialdatastorageandqueriesviaitsGeodatatype.1.UseGEOADDtostorecoordinatesasmembersunderakey,withsyntaxGEOADDkeylongitudelatitudemember.2.QuerynearbylocationsusingGEORADIUS,whichreturnsmemberswithinaspecifiedradiusfromagivenpoint,opt

版本7中的redis功能是什么? 版本7中的redis功能是什么? Jul 28, 2025 am 12:05 AM

RedisfunctionsInversion7SolveSissuesWithTraDitionAlluAscriptingByEnablingModular,Reusableserver-SideLogic.1.TheyAllowScrupturedFunctructUnctionDefinitionDefinitionDefinitionDefinitionDefinitionDefinityForBetterorGanization andmaintainabilition.2.theyimproverperformperformperformpperformanceThroughperformanceThroughLageLazyLazylazyLoadingAndCaching.3.theySupport

REDIS流如何与RabbitMQ或Kafka之类的消息队列进行比较? REDIS流如何与RabbitMQ或Kafka之类的消息队列进行比较? Jul 30, 2025 am 12:49 AM

RedisStreamsissuitableforlightweightin-memorystreamprocessingwithinRedis,whileKafkaexcelsinhigh-throughput,durablelogstorageandRabbitMQincomplexroutingandguaranteeddelivery.RedisStreamsworkswellforreal-timeanalyticsorsmalljobqueueswherespeedmatters,K

阻止列表命令中超时的目的是什么? 阻止列表命令中超时的目的是什么? Jul 24, 2025 am 12:48 AM

TimeoutsinRedisblockinglistcommandslikeBLPOP,BRPOP,orBRPOPLPUSHareessentialforcontrolledwaiting.1.TheyspecifyhowlongRedisshouldwaitfordatabeforereturningnil,preventingindefiniteblocking.2.Thisavoidsinfinitehangs,allowingclientstoproceedifnodataarrive

See all articles