2015-12-14 3 views
1

Я пытаюсь реализовать кластер Redis с 6 машинами. У меня есть бродячий кластер из шести машин:Redis Cluster: Нет автоматического переключения при сбое для главного отказа

192.168.56.101 
192.168.56.102 
192.168.56.103 
192.168.56.104 
192.168.56.105 
192.168.56.106 

все работает Redis-сервер

Я редактировал /etc/redis/redis.conf файл всех вышеперечисленных серверов, добавив этот

cluster-enabled yes 
cluster-config-file nodes.conf 
cluster-node-timeout 5000 
cluster-slave-validity-factor 0 
appendonly yes 

Затем я запустил это на одной из шести машин;

./redis-trib.rb create --replicas 1 192.168.56.101:6379 192.168.56.102:6379 192.168.56.103:6379 192.168.56.104:6379 192.168.56.105:6379 192.168.56.106:6379 

В продаже работает кластер Redis. Я проверил вручную, установив значение на одном компьютере, которое отображается на другой машине.

$ redis-cli -p 6379 cluster nodes 
3c6ffdddfec4e726f29d06a6da550f94d976f859 192.168.56.105:6379 master - 0 1450088598212 5 connected 
47d04bc98ab42fc793f9f382855e5c54ab8f2e20 192.168.56.102:6379 slave caf2cec45114dc8f4cbc6d96c6dbb20b62a39f90 0 1450088598716 7 connected 
040d4bb6a00569fc44eec05440a5fe0796952ccf 192.168.56.101:6379 myself,slave 5318e48e9ef0fc68d2dc723a336b791fc43e23c8 0 0 4 connected 
caf2cec45114dc8f4cbc6d96c6dbb20b62a39f90 192.168.56.104:6379 master - 0 1450088599720 7 connected 0-10922 
d78293d0821de3ab3d2bca82b24525e976e7ab63 192.168.56.106:6379 slave 5318e48e9ef0fc68d2dc723a336b791fc43e23c8 0 1450088599316 8 connected 
5318e48e9ef0fc68d2dc723a336b791fc43e23c8 192.168.56.103:6379 master - 0 1450088599218 8 connected 10923-16383 

Моя проблема заключается в том, что, когда я выключения или остановки Redis-сервер, на любой машине, которая master весь кластер идет вниз, но если все три рабы умирают кластер все еще работает должным образом.

Что я должен делать, чтобы ведомое устройство включало мастер, если мастер вышел из строя (Отказоустойчивость)?

Я нахожусь в предположении, что redis обрабатывает все эти вещи, и мне не нужно беспокоиться об этом после развертывания кластера. Правильно ли я, или я должен сам что-то делать?

Другой вопрос: скажем, у меня шесть машин с 16 ГБ оперативной памяти. Сколько полных данных я мог бы обработать в этом Redis-кластере с тремя мастерами и тремя подчиненными?

спасибо.

+1

Закрыть, почему? Что не так с вопросом?Некоторые комментарии были бы приятными. – Nagri

+0

//, Кто закрыл это? –

ответ

1

может быть виновником здесь cluster-slave-validity-factor 0.

from redis.conf

# A slave of a failing master will avoid to start a failover if its data 
# looks too old. 

В вашей установке рабыней прекращенного мастер считает себя непригодным быть избранным мастером со времени его последний контакт мастер больше вычисленного значения:

(node-timeout * slave-validity-factor) + repl-ping-slave-period

Таким образом, даже при избыточном подчиненном устройстве состояние кластера изменяется на DOWN и становится недоступным.

Вы можете попробовать с другим значением, например, предлагаемые по умолчанию

cluster-slave-validity-factor 10

Это обеспечит, что кластер способен переносить один случайный REDIS сбоя экземпляра. (это может быть ведомый или мастер-экземпляр)

Для вашего второго вопроса: Шесть машин с 16-гигабайтной ОЗУ, каждая из которых сможет работать как Redis Cluster из 3 основных экземпляров и 3 экземпляра Slave. Таким образом, теоретический максимум составляет 16 ГБ x 3. Такой кластер может выдержать максимум отказа одного узла, если включен cluster-require-full-coverage. иначе он сможет по-прежнему обслуживать данные в осколках, которые все еще доступны в исполняемых экземплярах.

+0

Этот ответ неверен, 0 отключил функцию и гарантирует, что ведомое устройство всегда будет пытаться выполнить переход на другой ресурс в качестве ведущего. –