首页 > 解决方案 > 连接到 Redis Sentinel 集群时使用 redis-py 的 MasterNotFoundError

问题描述

当我尝试按照此处的部署指南连接到主节点时遇到 MasterNotFoundError:https ://docs.bitnami.com/tutorials/deploy-redis-sentinel-production-cluster/

我连接到主 Redis Sentinel 节点的代码是:

from redis.sentinel import Sentinel

redis_host = 'redis.default.svc.cluster.local'
redis_port = 26379
sentinel = Sentinel([(redis_host, redis_port)], socket_timeout=0.1, password='abc')
redis_client = sentinel.master_for('mymaster', password='abc')

在他们的GitHub存储库中,我看到 sentinel.masterSet 的配置默认设置为 mymaster。但是当我尝试使用下面的代码递增时:

redis_client.incr('counter', 1)

我面临 redis.sentinel.MasterNotFoundError: No master found for 'mymaster' 错误。

我该如何解决这个问题?谢谢。

标签: pythonredisbitnamiredis-sentinelredis-py

解决方案


正如这里所报告的https://github.com/andymccurdy/redis-py/issues/1125设置低 socket_timeout 可能会导致 MasterNotFound 错误,因为每个实例都被轮询但没有及时响应。您可以增加超时或将其删除以查看是否可以修复它。


推荐阅读