Как отключить Sentinel auto-slaveof, когда ранее мертвый redis-master снова в сети

У меня есть вопрос о redis sentinel, когда есть сетевой раздел

Я запустил сервер redis на server01 в качестве главного и сервер на server02 в качестве подчиненного, на другом сервере был Redis Sentinel, я настроил скрипт, чтобы клиент указывал на новый мастер при отработке отказа。

Затем произошло разделение, изолировавшее главный сервер на сервере 01, поэтому часовой начал отработку отказа на сервере 02, а подчиненный сервер 02 стал новым главным. Теперь все клиенты используют новый мастер, и это нормально.

Однако когда раздел восстановится, Sentinel отправит slaveof старому мастеру. Затем старый мастер удалит все данные и синхронизируется с новым мастером, даже если между новым мастером и старым мастером небольшая разница. Если существует более одной группы master-slave, команда синхронизации займет всю мою пропускную способность в моей производственной среде.

Так как же отключить авто рабоф? Есть ли идея получше?


person Shanicky_C    schedule 21.04.2015    source источник
comment
@djanowski извините 2.8.17   -  person Shanicky_C    schedule 22.04.2015


Ответы (1)


Вы хотите удалить старый мастер все вместе? Если это так, то перед тем, как он вернется, введите sentinel reset <podname>, и он (старый мастер) будет удален из Sentinel. Конечно, тогда у вас не будет рабыни у нового хозяина.

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

Тем не менее, я не уверен, что вы подразумеваете под «Когда существует более одной группы master-slave…». Не могли бы вы уточнить?

person The Real Bill    schedule 22.04.2015