Может ли клиент ioredis продолжить работу, если отказал узел кластера из первоначального подключения?

При подключении к кластеру Redis с помощью ioredis (https://github.com/luin/ioredis) вы нужно только указать один узел, например с трехузловым кластером

127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002

Вы можете подключиться, просто используя:

new Redis.Cluster([{
  port: 7000,
  host: '127.0.0.1'
}])

Если узел: 7000 умирает, и вы заменяете его другим узлом, выполняя что-то вроде:

redis-trib.rb call 127.0.0.1:7001 cluster forget [node_id of :7000]
redis-trib.rb add-node 127.0.0.1:7003 127.0.0.1:7001
redis-trib.rb fix 127.0.0.1:7001

Сможет ли ioredis продолжить работу (учитывая, что данные из: 7000 потеряны), потребуется ли ему когда-нибудь снова связываться с 127.0.0.1:7000 или это только для первоначального подключения?

Из моих экспериментов кажется, что этот сценарий работает, и ответ на мой вопрос - да, но я хочу проверить, что это ожидаемая и поддерживаемая ситуация.


person Max Holland    schedule 05.10.2017    source источник


Ответы (1)


При подключении к кластеру ioredis запросит: 7000 для списка узлов кластера, и после этого ioredis сможет обнаружить новый узел и обработать отработку отказа. Итак, ответ положительный, если: 7000 умирает после выборки списка узлов.

person luin    schedule 05.10.2017