Автоматический failover

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

Автоматическое переключение при сбое Redis Sentinel — это механизм, посредством которого кластер Sentinel обнаруживает отказ первичного узла и продвигает одну из реплик до нового первичного Redis, восстанавливая доступность in-memory хранилища без ручного вмешательства. Когда количество Sentinel, не способных достичь первичного, превышает настроенный кворум, Sentinel выбирают среди себя лидера, который выполняет SLAVEOF NO ONE на лучшей реплике, делая её новым первичным. Процесс переключения также перенастраивает оставшиеся реплики для репликации с нового первичного и обновляет топологию Sentinel, чтобы клиенты могли узнать новый адрес первичного через SENTINEL get-master-addr-by-name. Переключение при сбое Redis Sentinel обычно занимает секунды и настраивается параметрами sentinel down-after-milliseconds и sentinel failover-timeout в файле конфигурации Sentinel. Автоматическое переключение через Redis Sentinel — стандартная стратегия высокой доступности для Redis-развёртываний, не требующих горизонтального масштабирования Redis Cluster, но нуждающихся в устойчивости к отказу одного первичного узла.

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

Автоматический failover даёт автоматический 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 (хосты, стойки, зоны).

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

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

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

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