CLUSTERDOWN кластер вниз в redis - PullRequest
       6

CLUSTERDOWN кластер вниз в redis

0 голосов
/ 03 декабря 2018

Я использую 6 узлов Redis, 3 мастера и 3 подчиненных, у каждого мастера есть 1 подчиненный.

Master[0] -> Slots 0 - 5460

Master[1] -> Slots 5461 - 10922

Master[2] -> Slots 10923 - 16383

Adding replica 172.17.0.5:6382 to 172.17.0.2:6379

Adding replica 172.17.0.6:6383 to 172.17.0.3:6380

Adding replica 172.17.0.7:6384 to 172.17.0.4:6381

Кластеризация запущена, и я могу SET и GET Keys.

I shutdown master1 172.17.0.2:6379, slave1 (172.17.0.5:6382) стал master, кластер -все еще работает.

Я выключаю slave1 (172.17.0.5:6382), я пытался установить клавиши SET У меня появляется эта ошибка

(ошибка) CLUSTERDOWN Кластер не работает

То, что я ожидал, когда я выключаю master1 и slave1, кластер все еще работает и принимает операции redis, но произошло обратное.

В чем причина этого?

это применимо для решения этой проблемы без повторного запуска master1 или slave1?

1 Ответ

0 голосов
/ 03 декабря 2018

Поскольку некоторые слоты хранятся в master1 и slave1, если оба они не работают, эти слоты больше не будут покрываться каким-либо узлом в кластере.Когда это происходит, по умолчанию кластер не работает.Вы можете изменить поведение, изменив параметр cluster-require-full-coverage.

Цитата из redis.conf:

По умолчанию узлы Redis Cluster прекращают принимать запросы, если обнаруживают, что есть хотя быслот хеша раскрыт (ни один доступный узел не обслуживает его).Таким образом, если кластер частично отключен (например, диапазон временных интервалов больше не покрывается), весь кластер становится, в конечном счете, недоступным.Он автоматически возвращается как доступный, как только все слоты покрываются снова.

Однако иногда вы хотите, чтобы работающее подмножество кластера продолжало принимать запросы для части пространства ключей, которая все еще покрыта.Для этого просто установите для параметра cluster-require-full-cover значение no.

cluster-require-full-cover yes *

UPDATE :

Чтобы обеспечить покрытие всех слотов, обычно вы можете настроить кластер с N master и N + 1 slave.Затем назначьте раба для каждого мастера, то есть N -> N.Дополнительное ведомое устройство может реплицировать данные от случайного мастера.Когда один из вас хозяин не работает, соответствующий раб становится новым хозяином.Затем вы можете сделать дополнительного ведомого для репликации данных из нового мастера.

Одним словом, вы должны убедиться, что каждый мастер имеет хотя бы одного подчиненного в любое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...