Как настроить Solr Cloud с двумя поисковыми серверами?

Привет, я разрабатываю проект rails с помощью sunspot solr и настраиваю Solr Cloud. Мое окружение: rails 3.2.1, ruby ​​2.1.2, sunspot 2.1.0, Solr 4.1.6.

Почему SolrCloud: Мне нужна более стабильная система — часто поисковый сервер уходит на техническое обслуживание, а веб-приложение перестает работать в продакшене. Вот и думаю, как сделать 2 одинаковых поисковых сервера вместо одного, чтобы система была более стабильной: если один сервер выйдет из строя, другой продолжит работать.

Я не могу найти ни одного хорошего туториала с простым, понятным и подробно описанным туториалом... Пытаюсь настроить SolrCloud на двух серверах, но не до конца понимаю, как он работает внутри:

  • синхронизировать данные между двумя серверами (это автоматическое действие?)
  • балансирует поисковые запросы между двумя серверами
  • когда один сервер внезапно перестает работать, другой должен стать мастером (это автоматическое действие?)
  • есть ли функции SolrCloud, кроме перечисленных?

person bmalets    schedule 01.08.2015    source источник


Ответы (1)


Подробнее о SolrCloud читайте здесь..! https://wiki.apache.org/solr/SolrCloud

Пара выводов из моего опыта.

Если ваше приложение просто читает данные из SOLR и не записывает в SOLR (в режиме реального времени, но вы индексируете с помощью ETL или около того), вы можете просто перейти к иерархии Master Slave.

Определите одного Мастера: - Укажите сюда все записи. Если этот мастер не работает, вы больше не сможете индексировать данные

Создайте 2 (или более) подчиненных устройства: это функция от SOLR, и она позаботится о синхронизации данных от мастера на основе указанного нами интервала (скажем, каждые 20 секунд).

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

Плюсы: с приведенной выше настройкой у вас нет высокой доступности для главного (запись данных), но у вас будет высокая доступность для данных до тех пор, пока не выйдет из строя последнее подчиненное устройство.

Минусы: Предположим, что один раб упал, и вы выкупили его через час, этот раб будет отставать от других рабов на один час. Таким образом, его ручная задача - проверить согласованность данных среди других ведомых устройств перед добавлением обратно в ELB.

Как насчет SolrCloud?

  1. Мастера здесь нет, поэтому вы можете добиться высокой доступности и для операций записи.
  2. Не нужно беспокоиться о несогласованности данных, как я описал выше, архитектура SolrCloud позаботится об этом.

Что подходит лучше всего для вас.

  1. Определите внешний Zookeeper с 3 узлами Quorom
  2. Определите как минимум 2 сервера SOLR.
  3. Разделите текущий индекс на 2 сегмента (по умолчанию каждый сегмент будет находиться по одному в 2 узлах solr, определенных на шаге № 2).
  4. Определите реплику как 2 (это создаст реплику для осколков в каждом узле)
  5. Определите LB, чтобы он указывал на вышеуказанные узлы solr.
  6. Укажите свой ввод Solr, а также приложение, чтобы указать на этот LB.

С помощью приведенной выше настройки вы можете поддерживать отработку отказа для любого узла.

Дайте мне знать, если вам нужна дополнительная информация об этом.

С уважением,

Аниш Н

-Давайте учиться вместе.

person Aneesh Mon N    schedule 02.08.2015
comment
какова роль Zookeeper и tomcat в архитектуре SolrCloud? потому что, как я знаю, Solr на самом деле является http-сервером и работает как http-сервер... - person bmalets; 02.08.2015
comment
И можно ли сделать SolrCloud только с 2-мя одинаковыми поисковыми серверами с одинаковыми синхронизированными индексами? Я имею в виду, что мне не нужен шардинг, мне нужна система с двумя одинаковыми клонами поискового сервера - person bmalets; 02.08.2015
comment
zookeeper — это тот, кто хранит файлы конфигурации по сравнению с solr в SolrCloud. Кроме того, он знает состояние каждого узла и статус, если он совпадает с тем, кто является лидером, кто находится в состоянии восстановления и т. д. ZooKeeper выбирает одну реплику из n реплик, когда лидер выходит из строя. - person Aneesh Mon N; 02.08.2015
comment
так Zookeepr, если менеджер узлов. спасибо за столь быстрые ответы :) - person bmalets; 02.08.2015
comment
Автономный solr — это один осколок. Да, вы можете настроить облако на один сегмент с множеством реплик, чтобы обеспечить высокую доступность. - person Aneesh Mon N; 02.08.2015
comment
И последний вопрос - почему также tomcat используется с solr? а что значит Quorom? - person bmalets; 02.08.2015
comment
Да, ZooKeeper — это тот, кто управляет Кластером. Без ZooKeeper вы не можете запустить solr в облачном режиме, и если вы запустите его, он будет использовать встроенный zookeeper. Кластер может поддерживать чтение, даже если зоопарк не работает после запуска кластера. Но не может принимать записи без зоопарка - person Aneesh Mon N; 02.08.2015
comment
Jetty по умолчанию использует SOLR. Томкэт - альтернатива. Оба они предназначены для стандартных веб-сервисов. Quorom — это термин, используемый для кластеризации ZooKeeper. Поскольку Solr Cluser зависит от ZooKeeper, это стало единственной точкой отказа. Так что у нас тоже есть Cluser ZooKeeper. Идеальное количество ZooKeeper для производства — 5. - person Aneesh Mon N; 02.08.2015
comment
нужны ли SolrCloud зоопарки на внешнем узле? я так понимаю, мне нужно искать сервера с solr и один сервер с настроенными зоокиперами, да? - person bmalets; 03.08.2015
comment
Вы можете оставить ZooKeeper на том же узле, что и узел solr, но это не обеспечит высокой доступности, так как и solr, и ZooKeeper перестанут работать, когда узел выйдет из строя. но если у вас есть более одного ZooKeeper, вы можете хранить каждый из них на разных узлах среди узлов SOLR. Согласно облаку, это позволяет нам кластеризовать ZooKeeper и все экземпляры SOLR даже в одном узле, изменив порты экземпляров SOLR экземпляров ZooKeeper. - person Aneesh Mon N; 03.08.2015
comment
Привет, Аниш, у меня 2 узла solr, могу ли я запустить 3 экземпляра ZK на узле 1 и 2ZK на узле 2, чтобы поддерживать квором, единственная проблема будет заключаться в том, что когда узел 2, содержащий solr, выйдет из строя, он остановит экземпляры 2ZK и отключить запись в кластере solr .. правильно ли я понимаю? - person huzefam; 13.08.2017