Python 在将Redis与Sentinel和Redis py一起使用时,如何故障切换到新的主节点?

Python 在将Redis与Sentinel和Redis py一起使用时,如何故障切换到新的主节点?,python,redis,high-availability,failover,redis-py,Python,Redis,High Availability,Failover,Redis Py,要订阅Sentinel故障切换,通道的名称是什么,如何检测到需要在订阅的函数中刷新主机 我有一个多节点Redis设置,使用Redis Sentinel实现高可用性和故障切换 我需要为Redis设置一个Pub/Sub,以检测Redis主机何时出现故障以及系统何时选择了新主机 _sentinel = redis.sentinel.Sentinel([(app.config["REDIS_HOSTNAME"],app.config["REDIS_SENTINEL_PORT"])]) _master =

要订阅Sentinel故障切换,通道的名称是什么,如何检测到需要在订阅的函数中刷新主机

我有一个多节点Redis设置,使用Redis Sentinel实现高可用性和故障切换

我需要为Redis设置一个Pub/Sub,以检测Redis主机何时出现故障以及系统何时选择了新主机

_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})

要实现这一点,您需要订阅sentinel,而不是主节点。您要查找的频道是
“+开关主控”
。Sentinel文档将信道表示为“开关主控”“不带+”,但从3.2.4开始,包括+

您应该能够参考redis py文档了解其余内容。


更新

您也可以考虑使用<代码>客户端重新配置脚本< /COD>设置。 当主服务器由于故障转移而发生更改时,可以调用脚本 命令执行特定于应用程序的任务,以通知客户端 配置已更改,主机位于不同的地址


希望这有助于实现这一点,您需要订阅sentinel,而不是master节点。您要查找的频道是
“+开关主控”
。Sentinel文档将信道表示为“开关主控”“不带+”,但从3.2.4开始,包括+

您应该能够参考redis py文档了解其余内容。


更新

您也可以考虑使用<代码>客户端重新配置脚本< /COD>设置。 当主服务器由于故障转移而发生更改时,可以调用脚本 命令执行特定于应用程序的任务,以通知客户端 配置已更改,主机位于不同的地址


希望这有帮助

在这里可以找到一个频道列表:我发现这里的一个问题是REDIS_主机名应该运行在一个哨兵主机名列表中,依次尝试每个哨兵主机名,直到实现连接。这可以防止仅仅因为一个sentinel节点关闭而在启动时崩溃。可以在此处找到通道列表:我看到一个问题是REDIS_主机名应该在sentinel主机名列表中运行,然后依次尝试每个主机名,直到实现连接。这可以防止仅仅因为一个sentinel节点关闭而在启动时崩溃。sentinel对象没有pubsub方法。只有主人。我同意这似乎有些奇怪,因为我希望即使主设备已拔出,故障切换也能正常工作。我是否需要找到每个从节点和主节点的所有从节点和pubsub?主要问题是故障转移事件不会发布到Redis节点,而只发布到Sentinel节点。在Redis pub/sub中,您将看到的唯一内容是“sentinel:hello”事件。我猜您希望监听故障切换,以便快速重新配置您的客户端?如果哨兵酒吧/酒吧是不可能的,一个想法是使用:作为你的真相来源。但并不理想。我想我要做的是:1)使用Sentinel查找主节点2)使用主节点查找所有从节点3)订阅主节点和从节点的发布/订阅。然后,当一个新的主机被分配时,希望消息处理程序会被调用。也许这对你有用搜索:“客户端重新配置脚本”sentinel对象没有pubsub方法。只有主人。我同意这似乎有些奇怪,因为我希望即使主设备已拔出,故障切换也能正常工作。我是否需要找到每个从节点和主节点的所有从节点和pubsub?主要问题是故障转移事件不会发布到Redis节点,而只发布到Sentinel节点。在Redis pub/sub中,您将看到的唯一内容是“sentinel:hello”事件。我猜您希望监听故障切换,以便快速重新配置您的客户端?如果哨兵酒吧/酒吧是不可能的,一个想法是使用:作为你的真相来源。但并不理想。我想我要做的是:1)使用Sentinel查找主节点2)使用主节点查找所有从节点3)订阅主节点和从节点的发布/订阅。然后,当一个新的主机被分配时,希望消息处理程序会被调用。也许这对你有用搜索:“客户端重新配置脚本”