Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Как Redis Cluster Grange Laking Node


Как Redis Cluster Grange Laking Node


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

Cluster Communication и обнаружение сбоев

Узлы Cluster Redis общаются через посвященный бинарного протокола на основе TCP под названием Redis Cluster Bus. Каждый узел поддерживает соединения с любым другим узлом в кластере, используя эту шину, обеспечивая непрерывные проверки здоровья и распространение состояний. Узлы периодически отправляют пакеты Ping, чтобы подтвердить статус эксплуатации своих коллег и обмениваться информацией о состоянии кластера. В этом сообщении используется протокол сплетен для эффективного распространения информации о кластере, помогая в обнаружении сбоев узлов.

Узлы контролируют сверстников с использованием активного механизма пинга. Если узел не отвечает на пинг в течение настроенного периода времени ожидания (node_timeout), он помечается как, возможно, сбой со статусом PFAIL. Это предварительный показатель неудачи, а это означает, что узел может быть недоступным или вниз, но он еще не подтвержден. Если условие PFAIL сохраняется и подтверждается большинством главных узлов, узел помечается как сбой, указывая на то, что он считается недоступным или опускается кластером. Этот механизм обнаружения сбоев на основе консенсуса помогает предотвратить ложные срабатывания при выявлении неудачных узлов.

Обработка сбоев мастера -узла

Когда главный узел помечается как неудачный, Redis Cluster инициирует процесс отказа, чтобы продвигать одну из его реплик, чтобы стать новым мастером. Этот процесс автоматически запускается детектором сбоя кластера без административного вмешательства. Продвинувшаяся копия берет на себя ответственность за обслуживание хэш -слотов, ранее управляемых неудачным мастером, гарантируя, что кластер может продолжать обслуживать запросы без ручной реконфигурации.

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

Механика и безопасность аварийного переключения

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

После синхронизации реплика запрашивает новую эпоху конфигурации у большинства мастеров. Эпоха - это логическая метка времени, используемая для отслеживания изменений конфигурации в кластере. После получения консенсуса реплика транслирует обновленную конфигурацию для всех узлов, объявляя о своей продвижении в Master и понижение старого мастера для копирования или удаления.

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

Обработка сетевых разделов и сценарии разделения мозга

Redis Cluster использует консенсус на основе большинства, чтобы избежать проблем с разделенным мозгом во время сетевых разделов. Мастер будет провалиться только в том случае, если он недоступен более чем половиной мастеров в кластере. Мастера, которые не могут общаться с большинством, перестанут принимать записи, предотвращая различные состояния данных между разделениями.

Однако, если раздел меньшинства содержит клиентов, которые продолжают писать мастеру до переключения, существует потенциал для потери записи. Реджис снижает этот риск, отказываясь, записывает на стороне меньшинства после тайм -аута и на стороне большинства, быстро провалившись из -за недоступного мастера.

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

Параметры конфигурации, влияющие на обработку сбоев

Redis Cluster включает в себя параметры конфигурации, которые влияют на доступность и поведение во время сбоев узлов:

-`cluster-require-full-coverage` (по умолчанию да): кластер прекращает принятие записи, если какая-либо часть ключевого пространства обнаружена из-за неудач узлов, обеспечивая прочную согласованность данных.
-`cluster-allow-chuds-when-down` (по умолчанию №): управляет, разрешаются ли чтения, когда кластер находится в состоянии отказа. Включение этого позволяет чтениям из узлов даже во время частичных сбоев, но может рисковать предоставленными несвежими данными.

Эти настройки позволяют администраторам сбалансировать доступность и согласованность на основе требований применения.

Ручная поддержка отказа

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

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

Краткое содержание

Redis Cluster обрабатывает сбои узлов в основном через систему обнаружения неисправностей и отказоустойчивости на основе непрерывного мониторинга через шину Cluster Redis и протокол сплетен. Узлы обнаруживают недоступные мастера и автоматически продвигают реплики после консенсусного процесса, требующего от большинства мастеров договориться о сбое. Неудачное переключение предназначено для минимизации потери данных путем обеспечения полного синхронизации реплики перед продвижением. Сетевые разделы управляются с помощью решений, основанных на большинстве, для предотвращения условий разделенного мозга, хотя из-за асинхронной репликации может произойти узкое окно потери записи. Параметры конфигурации разрешают настройку доступности в зависимости от согласованности во время сбоев, а вручную команды отказоустойчивости дают операторам управление для обслуживания.

Эта архитектура позволяет Redis Cluster обеспечить высокую доступность и допуск на разделы с автоматическим восстановлением от сбоев основного узла, обеспечивая работу кластера в сценариях отказа.