Контекст:
У меня есть 3 узла Redis и 3 часовых. Аварийное переключение работает правильно. Когда я снимаю мастера, выбирается другой мастер.
Необходимость:
Мне нужен способ проверить поведение, чтобы убедиться, что все работает должным образом. Хотел бы я заставить часовых выбрать конкретный узел redis в качестве главного.
Думаю, я мог бы сделать это, отключив два узла, которые не должны быть главными, но мне хотелось бы просто дать команду одному из часовых для решения моей проблемы.
tl; dr:
Могу ли я дать указание своим стражам выбрать конкретный узел Redis в качестве главного?
Вы можете вызвать зависание на двух Redis-серверах, которые вам не нужны в качестве главного, и я думаю (не проверено) Sentinel выберет оставшийся. Может потребоваться два выбора ...
Имитация зависания серверов Redis:
redis-cli DEBUG sleep 30
или
redis-cli DEBUG segfault
Затем принудительно переключитесь:
SENTINEL failover
Возможно, лучший подход - использовать опцию приоритета.
Из https://redis.io/topics/sentinel
Экземпляры Redis имеют параметр конфигурации, называемый приоритетом подчиненного. Эта информация предоставляется экземплярами подчиненного устройства Redis в их выводе INFO, и Sentinel использует ее, чтобы выбрать подчиненное устройство среди тех, которые могут использоваться для переключения главного устройства при отказе:
Если приоритет ведомого установлен на 0, ведомое устройство никогда не становится ведущим. Sentinel предпочитает подчиненных устройств с более низким приоритетом.
Например, если есть ведомое устройство S1 в том же центре обработки данных текущего ведущего устройства, а другое ведомое устройство S2 в другом центре обработки данных, можно установить S1 с приоритетом 10 и S2 с приоритетом 100, так что если Мастер не работает, и S1 и S2 доступны, S1 будет предпочтительнее.
Для получения дополнительной информации о способе выбора подчиненных устройств, пожалуйста, проверьте раздел выбора подчиненных устройств и приоритета в этой документации.