Предисловие:связанныйRedisиз Для получения базовых знаний вы можете обратиться к тому, что я писал ранее.изстатьяЧто вы должны знать о Redis
В предыдущем режиме репликации Redis «главный-подчиненный» в случае выхода из строя ведущего устройства необходимо выбрать нового ведущего устройства из ведомого устройства, изменить адрес главной ссылки приложения и скопировать данные нового ведущего устройства из оставшихся. подчиненных узлах, этот процесс требует ручного вмешательства, которое отнимает много времени и энергии. Поэтому Redis официально предложил новое решение — механизм Sentinel, который позволяет добиться автоматического переключения при отказе без ручного вмешательства.
Sentinel — это рабочий режим, который не обеспечивает никаких процессов чтения и записи. Он отвечает только за запуск специальных команд Redis для автоматического переключения при сбое. По умолчанию он работает на порту 26379 и для работы использует Redis. Вы можете запустить Redis от имени Sentinel с помощью следующей команды.
redis-sentinel /путь/к/sentinel.conf или redis-server /путь/к/sentinel.conf --sentinel
Redisизв исходном кодеsentinel.conf Используется для настройки Sentinel
//Указываем мастера для мониторинга // 127.0.0.1 6379 — главный адрес // 2 означает, что когда два стража считают мастер недействительным, мастер действительно недействителен. дозорный монитор mymaster 127.0.0.1 6379 2 //Сколько времени пройдет, прежде чем главный узел выйдет из строя, прежде чем стражник сочтет его недействительным? сбой часового через миллисекунды mymaster 60000 Тайм-аут аварийного переключения Sentinel mymaster 180000 параллельная синхронизация Sentinel с mymaster 1 дозорный монитор, восстановление 192.168.1.3 6380 4 дозорный сбой после восстановления в миллисекундах 10000 Sentinel Failover-Timeout Resque 180000 // При переключении ведущего/резервного до 5 ведомых могут одновременно синхронизировать нового ведущего. Sentinel с параллельной синхронизацией, восстановление 5
Согласно официальной документации Redis, дозорный узел в основном выполняет следующие функции:
Sentinel будет контролировать каждый узел (главный, подчиненный) Redis, даже контролируя себя.
В случае сбоя главного узла Sentinel автоматически поможет нам реализовать аварийное переключение и автоматически выберет определенный подчиненный узел в качестве нового главного узла.
Уведомите линию подключения подчиненного устройства о новом главном узле и позвольте ему выполнить команду репликации, чтобы стать подчиненным устройством нового главного узла.
Клиент подключается к Sentinel, чтобы запросить адрес главного устройства. В случае аварийного переключения Sentinel уведомит клиента о новой информации о главном канале.
Так называемый субъективный офлайн означает, что определенный узел Sentinel считает, что главный узел находится в автономном режиме, но еще не уверен, и другие Sentinels должны проголосовать.
Объективный автономный режим означает, что дозорный узел, прошедший законное голосование, считает, что определенный главный узел был отключен от сети, тогда главный узел действительно отключен.
Фактически, когда сам дозорный думает, что мастер оффлайн, это субъективный оффлайн, а дозорный в целом согласен, что мастер оффлайн, то это объективный оффлайн.
Конкретные шаги заключаются в следующем:
Каждый дозорный узел отправляет команду PING главному, подчиненному и другим дозорным узлам во всем кластере один раз в секунду.
Субъективный оффлайн:
Если соответствующий узел не сможет эффективно ответить в течение указанного времени (после миллисекунды), он будет считаться субъективно отключенным (SDOWN). Уведомление! Правильный ответ здесь не обязательно PONG, это может быть -LOADING или -MASTERDOWN.
Цель оффлайн:
Все дозорные узлы должны подтверждать, что мастер действительно находится в автономном режиме один раз в секунду. Когда кворум (обычно более половины) дозорных узлов определяет, что мастер отключился, мастер считается объективно отключенным (ODOWN). Целью этого является предотвращение ошибочных оценок. В конце концов, стоимость аварийного переключения по-прежнему относительно велика, поэтому Redis официально рекомендует развертывать несколько дозорных узлов (дозорный кластер).
В Sentinel будет роль лидера, которая будет отвечать за аварийное переключение, то есть автоматически выбирать нового ведущего устройства из ведомого устройства и выполнять некоторую связанную работу (например, уведомлять ведомое устройство о информации о соединении нового ведущего устройства и позволять ему выполнять репликацию, чтобы стать новый), раб хозяина). Если дозорных узлов недостаточно, чтобы определить, что мастер находится в автономном режиме, когда мастер может эффективно ответить на команду PING дозорного, мастер больше не будет считаться субъективно отключенным и вернется в нормальное состояние.
Подчиненное устройство должно быть онлайн, чтобы участвовать в выборах нового мастера. Sentinel основывается на следующих трех аспектах при выборе нового мастера.
Вы можете вручную установить приоритет ведомого устройства через параметр «slave-priority». Чем выше приоритет, тем выше вероятность стать ведущим. Sentinel будет использовать ход репликации для дальнейшего принятия решения.
Sentinel выберет подчиненный узел с наиболее полными данными и самым быстрым ходом репликации для обновления до главного.
Обычно новый мастер выбирается после первых двух раундов проверки. Если существует несколько подчиненных узлов с одинаковым приоритетом и ходом репликации, то меньший runid станет новым мастером при запуске. случайная строка байтов в качестве идентификатора запуска.
Это требует использования распределенных полей. Алгоритм консенсуса . Проще говоря, Алгоритм консенсуса да Пусть распределенная система изузел достигнет консенсуса по отдельной проблеме. существовать sentinel выборы leader В этом сценарии эти sentinel Консенсус, которого необходимо достичь, заключается в том, кто является leader 。 большинство Алгоритм консенсуса Вседана основе Paxos Алгоритм усовершенствован в sentinel выборы leader В этом сценарии Raft Рассчитать Закон. Это сравнение Paxos Метод Рассчитать легче понять и реализовать благодаря Алгоритму. консенсуса—Raft Метод рассчета. Точнее Рафт да MultiPaxos Вариант, который упрощает Multi-Paxos идеи становятся легче понять и реализовать связанный Raft Рассчитать Закон Вы можете обратиться к следующимстатья:Подробное объяснение Рафта Raft Соглашение в действии Redis Sentinel извыборы Leader Анализ исходного кода