Чтобы подписаться на Sentinel failover, каково имя канала и как определить, что мне нужно обновить мастер в подписанной функции?Как переустановить новый мастер-узел при использовании Redis с Sentinel и redis-py?
У меня есть настройка нескольких узлов Redis с использованием Redis Sentinel для высокой доступности и восстановления после сбоя.
Мне нужно настроить Pub/Sub на Redis, чтобы обнаружить, когда мастер Redis потерпел неудачу, и система выбрала нового 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})
Список каналов можно найти здесь: https://redis.io/topics/sentinel#pubsub-messages – davissp14
я вижу один вопрос здесь в том, что REDIS_HOSTNAME должен запускаться через список имен узлов Sentinel, каждый из которых будет последовательно запускаться до тех пор, пока не будет достигнуто соединение. Это предотвращает сбой при запуске только потому, что один дозорный узел выключен. – 0111001101110000