连接到 Redis Sentinel 集群时使用 redis-py 出现 MasterNotFoundError

pha*_*der 5 python bitnami redis redis-sentinel redis-py

当我尝试按照此处的部署指南连接到主节点时,我遇到了 MasterNotFoundError: https: //docs.bitnami.com/tutorials/deploy-redis-sentinel-product-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')
Run Code Online (Sandbox Code Playgroud)

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

redis_client.incr('counter', 1)
Run Code Online (Sandbox Code Playgroud)

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

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

小智 1

你在哪里执行该代码?如果您尝试从集群外部连接,则需要将服务设置为 LoadBalancerIP。在执行代码之前,您是否测试过是否直接连接到该主机?例如,使用ping. 在这里您可以看到如何将哨兵服务部署为LoadBalancer:https://github.com/bitnami/charts/tree/master/bitnami/redis。您需要设置sentinel.service.typeLoadBalancerIP. 我希望这能帮到您。