В настоящее время мы используем Redis 2.8.4 и StackExchange.Redis(и любим его), но на данный момент не имеем никакой защиты от сбоев оборудования и т.д. Я пытаюсь заставить решение работать, в котором у нас есть мастер/ведомые и контрольный контроль, но не могут получить его, и я не могу найти никаких реальных указателей после поиска.
Итак, в настоящее время мы получили это:
У нас есть 3 сервера redis и дозорный сигнал на каждом node (настройка ребятами Linux): devredis01: 6383 (мастер) devredis02: 6383 (slave) devredis03: 6383 (slave) devredis01: 26379 (дозорный) devredis02: 26379 (дозорный) devredis03: 26379 (дозорный)
Я могу подключить клиента StackExchange к серверам redis и написать/прочитать и убедиться, что данные реплицируются во всех экземплярах redis с помощью Redis Desktop Manager.
Я также могу подключиться к службам часового с помощью другого ConnectionMultiplexer, запросить конфигурацию, запросить мастер redis node, запросить ведомые устройства и т.д.
Мы также можем убить мастер redis node и убедиться, что один из ведомых продвинут на master и репликация на другой подчиненный продолжает работать. Мы можем наблюдать соединение redis, пытающееся восстановить соединение с мастером, а также, если я заново создаю ConnectionMultiplexer, я могу писать/читать снова вновь создаваемому ведущему и читать из подчиненного устройства.
До сих пор так хорошо!
Бит, который мне не хватает, заключается в том, как вы объединяете все это в производственную систему?
Должен ли я получать конечные точки redis от часового и использовать 2 ConnectionMultiplexers? Что именно мне нужно сделать, чтобы обнаружить, что node опустился? Может ли StackExchange сделать это для меня автоматически или передать событие, чтобы я мог повторно подключить свой redis ConnectionMultiplexer? Должен ли я обрабатывать событие ConnectionFailed, а затем снова подключаться, чтобы ConnectionMuliplexer смог узнать, что нового мастера? Предположительно, когда я снова подключусь, любые попытки написать будут потеряны?
Надеюсь, я не пропущу что-то очень очевидное здесь. Я просто изо всех сил пытаюсь собрать все это.
Спасибо заранее!