Redis active - активная репликация через центры обработки данных / кластеры Kubernetes
Я развернул высокодоступную службу Redis в Kubernetes (используемая версия red is 4.0.9) с постоянством. Три сторожевых узла контролируют один главный узел и два подчиненных узла. Теперь у меня есть следующий вариант использования: Развернуть два экземпляра описанного выше типа на отдельных кластерах Kubernetes и синхронизировать их. Установка должна обеспечивать активную активную репликацию.
Возможные решения, которые я нашел до сих пор:
- используя твитпрокси Twitter для прокси-запросов к и от отдельных сервисов Redis в Kubernetes. Проблема в этом случае заключается в том, что (afaik) twemproxy автоматически разделяет данные между доступными узлами / кластерами Redis, поэтому главные узлы Redis в конфигурации, описанной выше, не будут иметь одинаковые наборы данных в любой данный момент времени.
- Использование XDCRWithKafka. Мне не удалось найти какую-либо документацию по использованию XDCRWithKafka...
- Использование HAProxy почти таким же образом, как и twemproxy (опять же, afaik,HAProxy не поддерживает многоадресную рассылку запросов)
- Некоторые пользовательские sln, описанные в: http://grokbase.com/t/gg/redis-db/123nyg4rfp/multiple-master-going-to-one-slave (хотя синхронизация кластеров redis с таким решением выполняется синхронно в то время как в активном - активное состояние, кажется, не так просто...)
Есть идеи / предложения?
Заранее спасибо Джордж
0 ответов
Насколько я видел, только Dynomite, кажется, решает эту проблему. https://github.com/Netflix/dynomite/wiki/Topology
Еще одно предложение состоит в том, чтобы реализовать нашу собственную настройку примерно так:
DataCenter1:
[несколько клиентов Redis]===>[localProxy-DC1]====> TWEMPROXY-DC1 ===> [Несколько экземпляров Redis с Sentinel]
DataCenter-2:
[localProxy-DC1] ==== реплицирует команды async===> TWEMPROXY-DC2 ====> [Несколько экземпляров Redis Single с Sentinel]