Статьи

SolrCloud HOWTO

Что является наиболее важным изменением в версии 4.x Apache Solr? Я думаю, что их много, но Solr Cloud определенно сильно изменился в архитектуре Solr. До сих пор крупные установки страдали от единой точки отказа (SPOF) — был только один главный сервер, и когда этот сервер выходил из строя, весь кластер терял возможность получать новые данные. Конечно, вы можете использовать несколько мастеров, где один индекс отвечал за индексацию некоторой части данных, но в вашем развертывании присутствовал SPOF. Даже если бы все работало из-за интервала фиксации и того факта, что ведомые экземпляры периодически проверяли наличие новых данных, решение было далеко от идеального — новые данные в кластере появлялись через несколько минут после фиксации.

Solr Cloud изменил это поведение. В этой статье мы создадим новый кластер SolrCloud с нуля и увидим, как он работает.

Наш пример кластера

В нашем примере мы будем использовать три сервера Solr. Каждый сервер в кластере способен обрабатывать как индекс, так и запросы запросов. В этом основное отличие от старомодной архитектуры Solr с одним главным и несколькими подчиненными серверами. В новой архитектуре присутствует еще один дополнительный элемент: Zookeeper, который отвечает за хранение конфигурации кластера и синхронизацию его работы. Очень важно понимать, что Solr полагается на  информацию,  хранящуюся в Zookeeper — если Zookeeper потерпит неудачу, весь кластер бесполезен. Из-за этого очень важно иметь отказоустойчивый ансамбль Zookeeper, и поэтому мы используем три независимых экземпляра Zookeeper, которые будут формировать ансамбль.

Установка Zookeeper

Как мы уже говорили ранее, Zookeeper является важной частью кластера SolrCloud. Хотя мы можем использовать встроенный Zookeeper, это удобно только для тестирования. Для производства вы определенно хотите, чтобы ваш Zookeeper был установлен независимо от Solr и запущен в другом процессе виртуальной машины Java, чтобы эти два не мешали друг другу и не влияли на работу друг друга.

Установка Apache Zookeeper проста и может быть описана следующими шагами:

  1. Загрузите архив Zookeeper с:  http://www.apache.org/dyn/closer.cgi/zookeeper/
  2. Распакуйте загруженный архив и скопируйте  conf / zoo_sample.cfg  в  conf / zoo.cfg
  3. Изменить  zoo.cfg :

    1. Измените  dataDir  на каталог, где вы хотите хранить все данные конфигурации кластера
    2. Добавить информацию обо всех серверах Zookeeper (см. Ниже)

После упомянутых изменений мой  zoo.cfg  выглядит следующим образом:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper/data
clientPort=2181
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888
  1. Скопируйте этот архив на все серверы, где должен быть запущен сервис Zookeeper.
  2. Создайте файл  / var / zookeeper / data / myid  с идентификатором сервера. Этот идентификатор отличается для каждого экземпляра (например, на  zk2  этот файл должен содержать  2  числа)
  3. Запустите все экземпляры с помощью «bin / zkServer.sh start-foreground» и проверьте правильность установки
  4. Добавьте «bin / zkServer.sh start» в стартовые сценарии и убедитесь, что операционная система следит за тем, чтобы служба Zookeeper была доступна.

Solr установка

Установка Solr заключается в следующем:

  1. Загрузите архив Solr с:  http://www.apache.org/dyn/closer.cgi/lucene/solr/4.1.0
  2. Распаковать скаченный архив
  3. В этом уроке мы будем использовать готовую установку Solr из  примера  каталога, и все изменения будут сделаны в этом примере установки
  4. Скопировать архив на все серверы, входящие в кластер
  5. Установите в Zookeeper данные конфигурации, которые будут использоваться кластером Solr. Для этого запустите первый экземпляр с:
    java -Dbootstrap_confdir=./solr/collection1/conf -Dcollection.configName=solr1 -DzkHost=zk1:2181 -DnumShards=2 -jar start.jar

Это должно быть запущено только один раз. При следующем запуске будет использоваться конфигурация из кластера Zookeeper, и локальные файлы конфигурации не нужны.

  1. Запустите все экземпляры, используя

java –DzkHost=zk1:2181 –jar start.jar

Проверьте установку

Зайдите в панель администрирования любого экземпляра Solr. Для нашего развертывания URL должен быть таким : http: // solr1: 8983 / solr . Когда вы нажимаете на вкладку облака и график, вы должны увидеть нечто похожее на следующий снимок экрана:

облако

Коллекция

Наша первая коллекция —  collection1  делится на две части ( shard1  и  shard2 ). Каждый из этих осколков размещен в двух экземплярах Solr (хорошо, на рисунке вы видите, что каждый Solr размещен на одном и том же хосте — в настоящее время у меня есть только один физический сервер, доступный для тестов — каких-либо добровольцев для пожертвования?  ;) ). Вы можете видеть, что этот тип точки говорит нам, является ли это основным осколком или копией.

Резюме

Я надеюсь, что это первая заметка о solrCloud. Я знаю, что он очень короткий и пропускает детали и информацию об осколках, репликах и архитектуре этого решения. Рассматривайте это как простой контрольный список для базовой (но реальной) конфигурации вашего облака.