如何在将Redis与Sentinel和redis-py一起使用时故障转移到新的主节点?

时间:2016-12-02 22:45:14

标签: python redis high-availability failover redis-py

要订阅Sentinel故障转移,Channel的名称是什么,以及如何检测我需要刷新订阅功能中的master?

我使用Redis Sentinel进行多节点Redis设置以实现高可用性和故障转移。

我需要设置Pub / Sub到Redis以检测Redis Master何时出现故障并且系统选择了新的Master。

_sentinel = redis.sentinel.Sentinel([(app.config["REDIS_HOSTNAME"],app.config["REDIS_SENTINEL_PORT"])])
_master = _sentinel.master_for(app.config["REDIS_SERVICE_NAME"])

def _sentinel_message_handler(message):
    #TODO how do I detect that there is a new Redis Master?

_pubsub = _master.pubsub()
_pubsub.subscribe(**{app.config["TODO"]:_sentinel_message_handler})

1 个答案:

答案 0 :(得分:3)

要实现此目的,您需要订阅sentinel,而不是主节点。您要查找的频道是$ cat ./script2 #!/bin/bash ofile=$1 nfile=${ofile//_/./} echo mv "$ofile" "$nfile" $ ./script2 file_1_2.txt mv "file_1_2.txt" "file.1.2.txt" 。 Sentinel文档将频道指示为echo“没有+”,但从3.2.4开始,包括+。

Redis Sentinel Pub/Sub Message Docs

您应该能够为其余部分引用redis-py文档。 Redis-py Docs

<强>更新

您还可以考虑使用"+switch-master"设置。

  

当主服务器因故障转移而更改时,可以调用脚本   为了执行特定于应用程序的任务,通知客户端   配置已更改且主服务器位于不同的地址。

http://download.redis.io/redis-stable/sentinel.conf

希望有所帮助