Назад | Перейти на главную страницу

Статический мастер в репликации Redis

Я запускаю реплицированный Redis, который включает в себя мастер и только одно подчиненное устройство. Моя цель - реализовать репликацию (с использованием часовых Redis), в которой ведомое устройство становится ведущим, когда ведущее устройство выходит из строя, но, кроме того, старый ведущий возвращается обратно, когда он восстанавливается.

Первоначальная настройка проста. Я использую одного дозорного на том же сервере, что и главный, и двух дозорных на сервере с подчиненным. При кворуме два два часовых на подчиненном сервере продвигают подчиненное устройство в статус главного, когда главный недоступен. Когда старый ведущий возвращается, он повторно подключается к старому ведомому (который был назначен ведущим) и становится его ведомым.

После этого все как обычно. За исключением того, что я хотел бы продвинуть подчиненное устройство (старый мастер), чтобы оно стало мастером, как это было в исходном макете. Это можно сделать вручную с помощью redis-cli (и, как мне кажется, с помощью cron), но есть ли какие-либо способы сделать это с помощью конфигурации дозорного или какого-либо другого метода, кроме brute cronjob? В основном мое намерение состоит в том, чтобы иметь статический мастер, поддерживаемый подчиненным, который возвращает статус мастера, как только исходный мастер снова доступен.

В настоящее время нет никакого механизма для возврата к предполагаемому мастеру. В slave-priority может повлиять на то, какое ведомое устройство выбирает, когда ведущее устройство не работает, но не заставит часовых инициировать восстановление после сбоя, когда текущий ведущий исправен. Чтобы это было сделано автоматически, вам нужно реализовать это вне дозорного.

Для автоматической обработки основных выборов вы можете попробовать следующие решения: