Redis active - активная репликация через центры обработки данных / кластеры Kubernetes - PullRequest
0 голосов
/ 28 июня 2018

Я развернул высокодоступную службу Redis в Kubernetes (используется версия redis 4.0.9) с постоянством. Три сторожевых узла контролируют один главный узел и два подчиненных узла. Теперь у меня есть следующий вариант использования: Разверните два экземпляра описанного выше типа на отдельных кластерах Kubernetes и синхронизируйте их. Установка должна обеспечивать активную активную репликацию.

Возможные решения, которые я нашел до сих пор:

  1. с использованием Twitter twemproxy для прокси-запросов к отдельным службам Redis в Kubernetes и от них. Проблема в этом случае заключается в том, что (afaik) twemproxy автоматически разделяет данные между доступными узлами / кластерами Redis, поэтому главные узлы Redis в конфигурации, описанной выше, не будут иметь одинаковые наборы данных в любой заданной точке. во время.
  2. Использование XDCRWithKafka . Мне не удалось найти какую-либо документацию по использованию XDCRWithKafka ...
  3. Использование HAProxy почти так же, как и при использовании twemproxy (опять же, аааа, HAProxy не поддерживает многоадресную передачу запросов)
  4. Некоторые пользовательские sln, описанные в: http://grokbase.com/t/gg/redis-db/123nyg4rfp/multiple-master-going-to-one-slave (хотя синхронизация кластеров redis с таким решением в активном - активном состоянии, похоже, не так проста ...)

Есть идеи / предложения?

Заранее спасибо, Джордж

1 Ответ

0 голосов
/ 28 января 2019

Насколько я видел, только 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]

...