В недавнем исследовании я пришел к выводу, что Redis не может быть настроен с несколькими мастерами, каждый из которых имеет 2 подчиненных устройства.
https://github.com/uolter/redis_failover/issues/4#issuecomment-24377513
Я был очень удивлен этим комментарием, поэтому решил спросить сообщество, возможно ли это и как люди справляются с отработкой отказа?
Я слышал о проекте redis-cluster, но мне кажется, что на данный момент он нестабилен, поэтому я не осмелился попробовать его в продакшене.
Вы можете развернуть столько мастеров, сколько захотите, с любым количеством ведомых устройств каждый, но они будут вести себя как единый отдельный кластер со своим собственным пространством памяти, и вы будете обязаны на уровне приложения правильно распределить свои ключи, используя каждый из мастеров, как если бы вы это делали в многоузловом развертывании Memcached.
Кроме того, если у вас нет Redis Sentinel, наблюдающего за вашими узлами данных, ваше приложение должно будет позаботиться о процессе переключения при отказе для каждого мастера, чтобы назначить одно из подчиненных устройств в качестве главного и перенаправить другие подчиненные устройства для использования нового главного устройства.
В любом случае одного ведомого устройства достаточно для большинства случаев использования, если только вы не собираетесь использовать все ведомые устройства в качестве реплик чтения для повышения пропускной способности чтения.
А насчет Redis-Cluster, ну ... IMHO, Redis Cluster вводит некоторые штрафы (нет операций с несколькими ключами. Нет конвейерной обработки ...), которые имеют большое влияние в типичном случае использования Redis, поэтому вы должны тщательно оценить его, прежде чем внедрять Это.