«Эта статья участвовала в мероприятии Haowen Convocation Order, щелкните, чтобы просмотреть:Двойные заявки на внутреннюю и внешнюю стороны, призовой фонд в 20 000 юаней ждет вас, чтобы бросить вызов!"
предисловие
Привет, я Ураган
Индекс прошлых статей выглядит следующим образом:
00-Redis, ты действительно понимаешь?
01-Типы данных Redis, о которых вы знаете больше, чем это
02-Проем хеш-таблицы Redis
03-Почему Redis такой быстрый
04-Вы действительно понимаете постоянный AOF Redis?
05-Тайна RDB для Redis Persistence
06-Redis высокочастотные вопросы интервью Неизвестный секрет кэширования [проникновение лавинного пробоя]
07-Redis [Репликация master-slave Redis, кто-то наконец объяснил это]
Предыдущий07, мы рассказали о принципе master-slave репликации redis, но не рассказали про failover redis, то есть зависание redis master, как передать запрос на slave, если несколько slave, как избранный раб?
Тогда мы должны посмотреть на нашего главного героя сегодня, redis sentinel, redis sentinel может помочь нам автоматически завершить основные операции выбора и аварийного переключения.На этот раз мы нарисуем больше картинок, чтобы углубить всеобщую память и понимание этого процесса.
Что сделали стражи Редиса?
Redis Sentinel — это специальный процесс Redis, который работает и выполняет три основные задачи:
- монитор
- выбрать главное
- уведомлять
Что отслеживается
Sentinel в основном следит за тем, живы ли основная и подчиненная библиотеки. Sentinel будет периодически отправлять команды PING в ведомую библиотеку.Если ведомая библиотека не отвечает часовому в течение установленного времени, считается, что ведомая библиотека находится в автономном режиме. Sentinel также будет периодически отправлять PING-команды в основную библиотеку для связи.Если основная библиотека не отвечает на Sentinel в течение установленного времени, это будет считаться, что основная библиотека также находится «вне сети». [Обратите внимание, что я здесь только для того, чтобы объяснить метод мониторинга, основная библиотека в автономном режиме на самом деле не оценивается таким образом].
Посмотрите на картинку и скажите:
Видно, что ведомое устройство redis-2 на рисунке окрашено в серый цвет, что указывает на то, что оно было отключено.В настоящее время он не вернулся к ответу часового в обычном режиме, поэтому он помечен как офлайн.
Мониторинг основной библиотеки
Почему здесь нужно отдельно говорить о мониторинге основной библиотеки? Из-за мониторинга основной библиотеки нельзя сказать, что дозорный не получает ответа от PING, тогда основная библиотека считается оффлайн, т.к. выбор основной библиотеки очень сложный процесс, и будет время -Потребление и накладные расходы на связь, поэтому мы не можем просто Считается, что дозорный не получил ответа от PING, затем напрямую судит, что основная библиотека находится в автономном режиме, а затем проводит выборы.Если это подчиненная библиотека, потому что подчиненная библиотека находится в автономном режиме, это не окажет большого влияния на кластер master-slave.
Когда нагрузка на основную библиотеку относительно велика или сеть заблокирована и возникает дрожание, это происходит из-за того, что она не ответила на дозорный ответ в течение установленного времени, тогда можно произвольно думать, что основная библиотека находится «в автономном режиме» в это время, и оно появляется в это время. Неверное суждение, очевидно, не нужно выбирать, и не требуется уведомление. В это время ресурсы тратятся впустую, и это также приносит накладные расходы.
Посмотрите на картинку и скажите:
В случае интернета часовой отправляет пинг в основную библиотеку
В это время сеть заблокирована, она становится красной, PONG и не возвращается в течение установленного времени.
Сеть восстанавливается плавно, дозорный повторяет попытку и возвращает ответ в течение установленного времени.
Из приведенных выше трех рисунков видно, что в случае перегрузки сети будет иметь место неправильное суждение.
Так как же reids определяет, что основная библиотека отключена? На самом деле, Redis принимает метод дозорного кластера, так что каждый дозорный в дозорном кластере связывается с основной библиотекой, Если большинство из них не отвечает дозорному в течение установленного времени, потому что вероятность нестабильности сети в нескольких дозорных высока значительно сокращено, то основная библиотека в это время считается отключенной. Подробнее об этом процессе поговорим ниже, а введение дозорных кластеров также решает проблему одиночных дозорных.
Автономное мнение основной библиотеки
Этот процесс делится на субъективный офлайн и объективный офлайн.
Субъективный офлайн: Это означает, что дозорный не получает ответа от основной библиотеки в течение установленного времени, тогда дозорный субъективно считает, что основная библиотека в это время отключена и не может считаться действительно отключенной.
объективно офлайн: Это означает, что когда большинство дозорных не получили ответа от основной библиотеки в установленное время, то можно считать, что основная библиотека в это время действительно отключена, что называется объективным фактом.
Продолжайте смотреть на картинку и говорить:
На рисунке ниже только Sentinel B получил ответ в течение установленного времени, и он оценивается как субъективно отключенный, но другие Sentinels A и C могут получить ответы в течение установленного времени, поэтому они все еще находятся в сети. большинство, а вывод еще онлайн.
На рисунке ниже ни Sentinel B, ни Sentinel C не получили ответа в течение установленного времени. время уходит в автономный режим.
выбрать главное
Я полагаю, что всем вышеперечисленным очень ясно, как Redis оценивает, что основная библиотека находится в автономном режиме, тогда Redis необходимо выбрать новую основную библиотеку из всех оставшихся подчиненных библиотек для получения последующих запросов на запись.
Reids Sentinel будет оценивать подчиненные библиотеки.Тот, кто наберет наибольшее количество очков, станет новым мастером.Процесс выбора мастера будет подробно описан ниже.
Перед тем, как стражи забьют, они сначала отсеивают из библиотеки, отсеивают неквалифицированных и оставляют отличных посевных игроков для соревнований и подсчета очков.
Так что же лежит в основе фильтрации?
Sentinel отфильтрует ведомую библиотеку, помеченную как offline, и ведомую библиотеку с неравномерной сетью между ведущей и ведомой, вы можете понять это, посмотрев на рисунок ниже:
В режиме ведущий-ведомый, если количество раз между отключением сети и временем ожидания превышаетdown-after-milliseconds
настройки, то будет считаться, что ведомая сеть неработоспособна и нестабильна.
Затем будут подсчитаны оставшиеся выдающиеся ведомые, и тот, кто наберет наибольшее количество очков, станет новым Мастером.
Оценка будет начисляться по трем уровням, помните, что сравниваться будет только один уровень, если текущий уровень имеет наивысший балл, если оценка одинакова, сравните ее со следующим уровнем и так далее.
Раунд 1: Сравните приоритет подчиненных библиотек
Вы можете вручную установить приоритет подчиненной библиотеки,slave-priority
Выполните настройки, чем меньше цифра, тем выше уровень. Если этот уровень имеет наивысший уровень приоритета, то данная ведомая библиотека выбирается в качестве Мастера, и выборы завершаются, если приоритет такой же, то вступает в следующий раунд подсчета очков.
Посмотрите на картинку:
Второй раунд: чем ближе прогресс синхронизации с основной библиотекой
Должно быть, чем новее данные в ведомой библиотеке, тем более осмысленно выбрать ее в качестве нового Мастера. Так как же узнать, какая подчиненная библиотека является последней?
Наша предыдущая статьяПринцип Redis master-slave, ведомая библиотека будет записывать ход своей синхронизации с ведущей библиотекой.Этот параметрslave_repl_offset
, является кумулятивной, то есть чем больше значение, тем данные, синхронизируемые ими, являются самыми последними, оценка является самой высокой, и выборы завершены.Если ход репликации одинаков, то необходимо ввести следующий раунд и сравнить идентификаторы.
Посмотрите на картинку:
Раунд 3: чем меньше идентификационный номер, тем выше оценка
Сравните свой собственный идентификатор [когда Redis запустится, он присвоит себе идентификатор], чем меньше идентификатор, тем выше оценка.
После не более чем трех раундов оценки основная библиотека будет выбрана повторно, затем дозорный уведомит другие подчиненные библиотеки о необходимости выполнить replicaof, чтобы указать на новую главную библиотеку, и выполнить переключение ведущий-ведомый. переключение?
Лидер выборов Стражей
На самом деле, какой часовой будет отдавать команды и выполнять переключение ведущий-ведомый, этот часовой нужно избрать Фактически, какой часовой будет отдавать команды и выполнять переключение ведущий-ведомый, этот часовой нужно избрать.
Как упоминалось ранее в этой статье, для определения того, находится ли основная библиотека в автономном режиме, требуется два процесса: субъективный автономный режим и объективный автономный режим. Сначала отметьте себя как субъективный автономный режим. Когда большинство из них отмечены как субъективный автономный режим, это считается объективным автономным режимом. у нас есть три дозорных и конфигурация кворума равна 2, то помимо того, что мы сами оцениваем субъективный оффлайн, нам также нужен дозорный, который также должен оцениваться как субъективный офлайн. process на самом деле является процессом голосования, включая голосование за себя и отправку в другие экземпляры.is-master-down-by-addr
Командуйте, спрашивайте у других инстанций, загружена ли основная библиотека или нет, если вы получите ответ от другой стороны, то ваши собственные голоса будут суммироваться.После того, как часовой проголосовал, он больше не будет голосовать за других часовых.
Вот конкретная картинка:
Это изображение просто для иллюстрации того, что и Sentinel B, и Sentinel C обнаружили, что Redis Master субъективно находится в автономном режиме, но Sentinel B отдал приоритет другим часовым.is-master-down-by-addr
порядок и получил ответ от часового C, затем добавьте свои собственные голоса, затем количество голосов равно 2, что больше или равно значению конфигурации кворума, равному 2, в это время основная библиотека помечена как цель в автономном режиме .
Если дозорный B хочет стать лидером, то он может стать лидером только в том случае, если количество полученных голосов больше или равно количеству дозорных (n/2 + 1) В этот момент дозорный B может стать лидером.
Таким образом, условия, которым должен удовлетворять лидер, таковы:
- Количество полученных голосов должно достичь настроенного порога кворума.
- Получите более половины голосов Стража.
уведомлять
Лидер Sentinel B может размещать коммутатор master-slave и уведомлять другие подчиненные библиотеки о выполнении реплики на новый Master.После завершения переключения master-slave он также уведомит клиентов, подключенных к Redis, сообщив им адрес и порт новый Мастер.
Вот как уведомить мастера клиента Redis об изменении нового IP-адреса и порта?
На самом деле, клиент redis может быть запланирован для события переключения master-slave часового, когда переключение master-slave будет завершено, sentinel отправит результат этого события, затем клиент redis, который подпишется на это событие, получит уведомление, и клиент Redis может обновиться до адреса нового Мастера.
Если есть сетевое отключение или дрожание, и не получено уведомление о событиях подписки, вы можете фактически вызвать интерфейс, предоставленный Sentinel, для повторной загрузки.
Модель уведомления:
Суммировать
Сегодня я в основном знаком с принципом работы и процессом Sentinel. Вот краткое изложение:
Что сделал часовой?
Контролировать, выбирать, уведомлять.
монитор:
Следите за тем, находятся ли главный и подчиненный узлы в автономном режиме.Подчиненный узел может просто отключиться, не получив ответа, поскольку отключение подчиненного узла обычно не влияет на использование кластера.
Автономный режим главного узла делится на субъективный офлайн и объективный офлайн, и только тогда, когда большинство из них думают, что это субъективный офлайн, он считается объективным офлайн.
Избиратель:
Во-первых, просмотрите подчиненные устройства, помеченные как отключенные, и те, у которых нестабильная сеть, из библиотеки.
Далее оценка будет в основном разделена на три этапа: оценка по приоритету подчиненной библиотеки, прогресс репликации и размер идентификатора.
уведомлять:
Уведомите другие подчиненные библиотеки о выполнении replicaof для нового мастера.После завершения переключения ведущий-ведомый он также уведомит клиентов, подключенных к Redis, сообщив им адрес и порт нового мастера.
Процесс выбора стража:
Механизм голосования Sentinel:
a: Дозорный экземпляр будет голосовать за себя только тогда, когда определит, что основная база данных находится в автономном режиме, а другие дозорные экземпляры будут голосовать за первый запрос на голосование, а все последующие будут отклонены.
b: Если несколько дозорных обнаружат, что основная библиотека одновременно отключена, и проголосуют за себя, что приведет к провалу голосования, будет инициирован новый раунд голосования, пока он не увенчается успехом.
Необходимые условия для Стража, чтобы стать Лидером:
a: Получил более половины голосов.
b: количество полученных голосов должно достичь настроенного порога кворума.
Примечания
После выключения ведущего до завершения переключения ведущий-ведомый клиент уведомляется.В течение этого периода все запросы на запись не могут быть обработаны, так как ведущий повесил трубку.Если используется разделение чтения-записи, все запросы на чтение могут обрабатывается нормально Да, запрос на чтение будет передан в подчиненную библиотеку. Если вы хотите, чтобы бизнес не воспринимал аномалии в это время, вы можете принять соответствующую стратегию перехода на более раннюю версию, вы можете сделать запрос на запись сначала на запись в mq, дождаться восстановления, а затем записать на новый мастер.
Здесь мы подчеркиваем предварительные условия для Sentinel для выполнения переключения ведущий-ведомый.Лидер Sentinel должен быть выбран, и лидер уведомит подчиненное устройство для выполнения переключения ведущий-ведомый и уведомит клиента о замене адреса и порта нового мастера. .
Например, если имеется 5 часовых и конфигурация кворума равна 2, то для того, чтобы стать лидером, количество голосов должно достичь 2, чтобы основная библиотека была признана автономной, а количество голосов должно быть больше или равно (n/2) + 1 голос, то есть можно получить больше 3-х голосов. Если в это время 3 Стража терпят неудачу, даже если вы получаете 2 голоса и объективно можете быть признаны не в сети, то, поскольку существует не более половины Стражей, Лидер не может быть избран, и следующий процесс не может быть выполнен. на этот раз кластер только что закончился.
вопрос
Вот вопрос к вам, мы знаем, что дозорный кластер можно построить с помощью следующей команды:
sentinel monitor <master-name> <ip> <redis-port> <quorum>
Тут просто задать ip и порт, и значение кворума, потом как установить связь между всем кластером, а потом подготовиться к последующему выбору лидера, и как он получает список ip и портов подчиненной библиотеки, и затем выполните последующий мониторинг из библиотеки.
Два вопроса:
- Как кластер устанавливает связь?
- Как кластер получает список подчиненных библиотек?
Вы можете оставить сообщение и обсудить вместе, и вы также можете добавить WECHAT.
Вот и все, чем мы сегодня поделимся, кодировать слова и рисовать картинки непросто, я с нетерпением жду вашихНравится, подписывайтесь, делайте репост,Спасибо.
Ваши лайки и внимание — самая большая движущая сила для создания Hurricane.
Добро пожаловать, чтобы оставить сообщение, обсудить и исправить вместе.
Добро пожаловать, чтобы следоватьgithub
WeChat добавить: zookeeper0