2015-03-27 2 views
0

У нас есть настройка с несколькими серверами redis (2.8) (скажем, 4) и столько же redis часовых. При запуске каждой машины мы устанавливаем машину предварительного выбора как master через командную строку, а все остальные - в качестве подчиненных. и часовые все контролируют эти машины. Сначала клиенты подключаются к локальному дозорному устройству и извлекают IP-адрес ведущего, а затем подключаются к нему.redis sentinel не синхронизирован с серверами в кластере

Эта настройка работает без проблем большую часть времени, но иногда часовые отключаются от синхронизации с серверами. если я назову машины A, B, C и D - часовые будут считать, что B является мастером, а серверы redis все подключены к A в качестве ведущего. сведение сервера redis на B не помогает. Я должен был снести его и вручную «Sentinel failover» на A, чтобы исправить проблему. Вопрос: 1. Что заставляет это случиться и как проще всего это исправить? 2. Какая оптимальная конфигурация - есть ли что-то лучше этого?

ответ

1

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

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

Кроме того, если у вас есть 4 сервера (будьте конкретными, а не «скажем»), вы должны запустить кворум из трех в своем заявлении монитора в дозорном состоянии. С кворумом из двух вы можете завершить работу с двумя мастерами

+0

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

+0

Я бы порекомендовал, давая часовому сделать его тонкий, и удалите биты, рассказывающие серверам, кто хозяин. Перезапуск не является проблемой, и переключение мастеров может привести к потере данных (если подчиненный позади и вы делаете его мастером, например) и вышеупомянутые проблемы. Независимо от того, какой узел был мастером, прежде чем перезагрузка будет иметь самые последние данные, вы все равно захотите ее выбрать. С этим дозорным вам не нужно беспокоиться об этом. Кроме того, конфигурации в локальных экземплярах redis все равно будут иметь информацию в любом случае. –