Вернуть старого мастера после восстановления Redis Sentinel - PullRequest
0 голосов
/ 05 июля 2018

У меня есть 3 настройки коробки Redis Sentinel:

 CLIENT (connects to S1)
          |
          ↓
       +----+
       | M1 | us-east-1
       | S1 |
       +----+
          |
+----+    |    +----+
| R2 |----+----| R3 |
| S2 |         | S3 |
+----+         +----+
us-east-2      us-west-2

M1 - Master
S1 - Sentinel 1
S2 - Sentinel 2
S3 - Sentinel 3
R2 - First slave (R=replica)
R3 - Second slave

После того, как мой мастер умер, страж сделал переход на R2. Я вернул M1 в оперативный режим (очистил место на диске), и теперь M1 жив и здоров, но является рабом R2. Существует ли автоматический (или полуавтоматический) способ снова сделать M1 мастером, а R2 - ведомым устройством M1, и мой трафик снова, используя M1 в качестве главного экземпляра redis?

По сути, я хочу вернуться к тому, что было до аварийного переключения.

В настоящее время происходит то, что он выбирает R2 в качестве мастера и перенастраивает его на:

CLIENT (connects to S1)
          |
          ↓
       +----+
       |[R2]| us-east-2
       | S2 |
       +----+
          |
+----+    |    +----+
|[M1]|----+----| R3 |
| S1 |         | S3 |
+----+         +----+
us-east-1      us-west-2

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

Но потом, когда я снова переключаюсь вручную, это продвигает R2, но я ожидаю, что это продвинет M1.

Все последующие аварийные переключения вращаются между R2 и R2 (при этом всегда сохраняя M1 в качестве подчиненного).

Мой приоритет ведомого M1 не указан, так что это означает, что по умолчанию установлено значение 100. Мой приоритет подчиненного R2 равен 200, а R2 - 300. Это наводит меня на мысль, что он должен вращать все 3 блока, но он поворачивает только R2 и R3 после первоначального переключения при сбое.

Для меня это похоже на дозорную ошибку

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Я думаю, что ответ детдорлейсов верен, но, скорее всего, у вас есть проблема, похожая на ту, что была у меня, когда по какой-то причине ваш первоначальный мастер не копирует правильно. После того, как я исправил проблему с репликацией, я мог перебирать своих мастеров, выпуская SENTINEL FAILOVER mymaster. Первоначально он просто подпрыгивал между двумя исходными рабами, но теперь, когда мой оригинальный мастер правильно копирует, он циклически перебирает все 3. Поэтому я бы порекомендовал проверить репликацию вашего оригинального мастера после отработки отказа. если вы уверены, что он работает, вы также можете остановить другого ведомого и затем использовать команду SENTINEL FAILOVER mymaster для принудительного переключения на исходный мастер. Если это не удается, вы знаете, что должна быть проблема с репликацией.

0 голосов
/ 05 июля 2018

Я не уверен, почему вы хотите сделать это в первую очередь. Redis переключается на R2 и использует at как master теперь должно отлично работать как обычный экземпляр M1. Если это не так, вы фактически не используете Sentinel правильно для обеспечения высокой доступности.

Вы можете просто запустить ручное переключение с помощью SENTINEL failover R2. Он должен переключиться на M1 или R3.

...