Redis два кластерных центра данных развертывания - PullRequest
3 голосов
/ 08 августа 2011

Я оцениваю Redis как альтернативу кэширования. Кэш должен быть развернут в кластерной конфигурации с двумя центрами обработки данных с n компьютерами в каждом из центров обработки данных. Из имеющейся документации я смог относительно легко настроить конфигурацию master / slave. Приложение является приложением Rails и в настоящее время планирует использовать его только для хранилища кеша и не будет выполнять более сложные операции с наборами, поэтому данные из одного и того же набора, находящиеся в разных физических коробках, не являются проблемой. Несколько вопросов и разъяснений у меня были:

  1. В конфигурациях «ведущий / ведомый», что произойдет, если главный узел выйдет из строя? Как выбрать или выбрать новый главный узел? Нужно ли изменить конфигурацию или можно выбрать новый мастер на работающем кластере? Как приложения, использующие магазин, узнают, какой новый мастер без проблем? Есть ли доступный гем, который абстрагирует эту логику от конечного приложения?

  2. Как правило, не рекомендуется иметь зависимости между центрами обработки данных, так как следует планировать отключение одного центра обработки данных и масштабирование приложения. Однако это означает, что каждый элемент данных кэшируется дважды по одному на каждой стороне. Хотя я считаю, что первый пункт важнее дублирования данных. Является ли разделение данных между двумя кластерами лучшим из обоих миров? Какую поддержку шардинга предоставляет Redis? Возможно ли в двух разных центрах обработки данных иметь двух основных авторов? И указав, что серверы приложений сначала пробуют подчиненные узлы на одной и той же стороне и переходят на другую сторону, только если все ведомые в одном и том же центре обработки данных не работают.

  3. Я ясно о том, как настроить конфигурацию master / slave в отношении серверов redis. Как настроить клиенты, чтобы указать, какой из них является главным, а какие - подчиненными. Как распределяется нагрузка между узлами чтения? Есть ли способ настроить схему циклического перебора или каждый сервер приложений настроен на переход к одному ведомому устройству для всех операций чтения?

Извините за большое количество вопросов, но любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 17 августа 2011
  1. Необходимые команды есть, но вам необходимо реализовать управление узлами на клиенте.Основная идея состоит в том, чтобы отправить «SLAVEOF NONE» доступному узлу, когда вы обнаружите, что мастер-узел недоступен, но вы можете сделать это настолько сложным, насколько это необходимо.Я использую отдельный экземпляр Redis, который хранит сведения обо всех узлах и считывается, если клиент не может подключиться к узлу, который он использовал ранее.

  2. Если Redis - это кэш, а не вашПервичное хранилище данных, кэш для каждого центра обработки данных, вероятно, лучше - попадание в кэш в другом центре данных, вероятно, столь же дорого, как и пропуск локального кэша.Единственный код кеширования между центрами данных, который вам понадобится в этом сценарии, - это способ аннулировать удаленный кеш при записи.

  3. Это зависит от реализации вашего клиента - вы можете настроить код приложения науправляйте узлами так, как вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...