Автоматическое переключение на продвинутый Redis Slave с использованием Redis Cluster

Конфигурация: три раздела кластера Redis в трех наборах: один ведущий и один ведомый. Когда мастер выходит из строя, салат сразу обнаруживает сбой и начинает повторную попытку. Тем не менее, салат не обнаруживает, что связанный ведомый повысил себя до уровня "мастер", и продолжает повторять попытку, используя старый мастер, который недоступен и в конечном итоге истекает. Пробовал устанавливать различные варианты обновления топологии безрезультатно.

Предлагаемое решение: после того, как первая повторная попытка завершится неудачно (что является второй повторяющейся неудачей в строке), повторно запустите обновление топологии (которое использовалось для получения топологии во время инициализации), используя топологию из любого из предоставленных узлов (поскольку все они имеют одинаковую топологию Информация). Это восстановит соединения с текущими мастерами. Затем повторите неудачную операцию на том разделе, который ранее был неудачным.

1 ответ

Redis Cluster ограничен с точки зрения распространения обновлений конфигурации по сравнению с Redis Sentinel. Redis Sentinel передает обновления через Pub/Sub, в то время как Redis Cluster оставляет опрос единственным вариантом.

Салат поддерживает периодические и адаптивные триггеры обновления топологии кластера. Периодическое обновление топологии через равные промежутки времени, адаптивное обновление прослушивает разъединения и перенаправления кластеров.

Вы можете настроить как через ClusterClientOptions,

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

Другие вопросы по тегам