MasterNotFoundError использует redis-py при подключении к Redis Sentinel Cluster - PullRequest
1 голос
/ 01 апреля 2020

Я сталкиваюсь с 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: Мастер не найден для ошибки 'mymaster'.

Как я могу решить эту проблему? Спасибо.

1 Ответ

0 голосов
/ 03 апреля 2020

Где вы выполняете этот код? Если вы пытаетесь подключиться извне кластера, вам нужно установить службу как LoadBalancerIP. Вы проверяли, есть ли у вас прямое соединение с этим хостом перед выполнением кода? используя, например, ping. Здесь вы можете увидеть, как развернуть дозорный сервис в качестве LoadBalancer: https://github.com/bitnami/charts/tree/master/bitnami/redis. Вам нужно будет установить sentinel.service.type на LoadBalancerIP. Я надеюсь, что это поможет вам.

...