Отказ Redis с часовым не работает

Я пытаюсь настроить конфигурацию redis-sentinel для поддержки аварийного переключения. Вот моя конфигурация,

machine1 : IP : 10.0.0.1 6379 with redis-sentinel port 26379         
machine2 : IP : 10.0.0.2 6379 with redis-sentinel port 26379     
machine3 : IP : 10.0.0.3 6379 with redis-sentinel port 26379     

Конфигурация Redis Sentinel

машина 1 :

sentinel monitor mymaster 10.0.0.1 6379 2    
sentinel down-after-milliseconds mymaster 60000    
sentinel failover-timeout mymaster 180000    
sentinel parallel-syncs mymaster 1 

машина 2:

sentinel monitor mymaster 10.0.0.1 6379 2    
sentinel down-after-milliseconds mymaster 60000    
sentinel failover-timeout mymaster 180000    
sentinel parallel-syncs mymaster 1

машина 3:

sentinel monitor mymaster 10.0.0.1 6379 2    
sentinel down-after-milliseconds mymaster 60000    
sentinel failover-timeout mymaster 180000    
sentinel parallel-syncs mymaster 1

Добавлены машина 2 и машина 3 в качестве ведомой машины 1 . Репликация работает нормально. Но когда машина 1 не работает, главного переключения на других машинах не происходит. Они до сих пор действуют как рабы. Есть ли какие-либо проблемы с конфигурацией моей установки?


person mbdvg    schedule 14.08.2015    source источник


Ответы (1)


Несколько вопросов, прежде чем я смогу дать лучший ответ:

  1. Выполняется ли аутентификация на экземплярах Redis?
  2. Действительно ли стражи определили топологию модуля?

Если приведенные выше настройки сигнальных устройств выполнены, значит, сигнальные устройства фактически не подключены к главному устройству. Sentinel переписывает файл конфигурации для хранения обнаруженной топологии, поэтому то, что вы изначально настроили, будет сопровождаться тем, что оно обнаружило. В частности, мы также увидим подчиненные записи.

Другая возможность состоит в том, что достаточное количество сигнальных устройств для достижения кворума не может успешно подключиться к главному устройству. Если в Redis настроена требуемая аутентификация, вам также необходимо сообщить дозорным токен аутентификации с помощью команды sentinel set.

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

В связи с этим в производстве я бы рекомендовал против такой установки. С тем, что у вас есть, вы можете столкнуться с так называемым разделенным мозгом. Если машина, на которой находится мастер, изолирована от других, но все еще работает, два других выберут нового мастера, и в этот момент у вас будет два мастера. Если клиенты по-прежнему могут подключаться к главному устройству, существующие соединения останутся на исходных, но новые соединения, использующие Sentinel для получения главного устройства, будут подключаться ко второму главному устройству.

Запуская дозорные на разных машинах, вы снижаете этот риск. Если у вас ограниченное количество клиентских машин и вы можете запустить на них sentinel, вы можете почти или полностью исключить эту возможность.

person The Real Bill    schedule 14.08.2015
comment
Спасибо . Аутентификация не была должным образом добавлена ​​в файл конфигурации Sentinel. Спасибо за предложение предотвратить проблему с разделенным мозгом. - person mbdvg; 17.08.2015