Кворум

Тема дорожной карты · Redis

Кворум Redis Sentinel — это минимальное количество процессов Sentinel, которые должны согласиться о недоступности первичного Redis, прежде чем будет инициировано автоматическое переключение при сбое, предотвращая сценарии разделения мозга (split-brain) в развёртываниях распределённых кэшей. Значение кворума задаётся для каждого отслеживаемого первичного через sentinel monitor <name> <ip> <port> <quorum> в файле конфигурации Sentinel; типичное продакшн-развёртывание использует три экземпляра Sentinel с кворумом два. Более высокий кворум снижает риск ложноположительных переключений при сбое из-за разделения сети, но также означает, что для проведения продвижения должно быть доступно больше узлов Sentinel. Кворум управляет только переходом от субъективной недоступности к объективной; фактическое лидерское избрание для выполнения переключения требует простого большинства всех экземпляров Sentinel, поэтому в кластере Redis Sentinel всегда нужно нечётное количество Sentinel. Правильная настройка кворума необходима для баланса между доступностью и согласованностью в настройке высокой доступности Redis.

Как это работает

Кворум даёт автоматический failover для не-cluster Redis-деплоев. Sentinel-процесс мониторит master + реплики; если master лёг (quorum-согласие), Sentinel промоутит реплику + переконфигурирует клиентов. Клиенты подключаются к Sentinel чтобы узнать текущего master ("спросите Sentinel, кто primary сейчас"). Типичный setup: 3 Sentinel (нечётное число для quorum) + 1 master + 1-2 реплики на разных хостах/зонах.

Когда применять

Sentinel — когда хотите HA без операционной сложности Cluster: один датасет, влезает в одну ноду, нужен только failover. Для данных > одного хоста — Cluster. Для managed Redis cloud-провайдер сам обрабатывает failover через свою инфру — Sentinel сами не настраиваете. Sentinel всегда на разных failure domain (хосты, стойки, зоны).

Типичные ошибки

Ловушки Кворум: 2 Sentinel (нет quorum при split-brain — нужно 3+); Sentinel на одном хосте с Redis (потеря одного хоста уносит обоих); не тестируют failover-путь (Sentinel, никогда не failover-ивший — просто работающий процесс); клиенты, навсегда закешировавшие master endpoint (после failover говорят с репликой, которая отвечает READONLY).

Связанные понятия

Полезные ресурсы