Балансировщик нагрузки и Solrcloud

Мне интересно, как можно настроить балансировщик нагрузки поверх SolrCloud, или балансировщик нагрузки не нужен?

Если первое, лидеров осколков нужно добавить в балансировщик нагрузки? А что, если по какой-то причине поменяется лидер осколка? Или все машины в кластере (включая реплики) лучше добавить в балансировщик нагрузки?

Если последнее, я думаю, cname должно указывать на кластер SolrCloud, и это должен быть циклический DNS?

Любые советы из реального опыта работы с Solrcloud будут действительно приняты.


person kee    schedule 20.03.2014    source источник


Ответы (4)


Обычно SolrCloud используется с комбинацией ZooKeeper, клиент использует CloudSolrServer для доступа к SolrCloud.

Запрос будет выполнен в следующем потоке.

Обратите внимание, что я только частично читаю исходный код Solr и есть много догадок. Также я прочитал исходный код Solr 4.1, так что он может быть устаревшим.

  1. ZooKeeper содержит список IPAddress:Port всех серверов SolrCloud.
  2. (Клиентская сторона) Экземпляр CloudSolrServer извлекает список серверов из ZooKeeper.
  3. (Клиентская сторона) Экземпляр CloudSolrServer случайным образом выбирает один из серверов SolrCloud и отправляет ему запрос. (Также LBHttpSolrServer выбирает сервер в циклическом режиме?)
  4. (Сторона сервера) Сервер SolrCloud, получивший запрос, выбирает случайным образом из реплик шардов (один сервер на шард) из списка серверов и перенаправляет на него запрос. (Обратите внимание, что весь сервер SolrCloud содержит список серверов, который можно получить от ZooKeeper)

Обновление будет выполнено таким же образом, как указано выше, но также будет распространено на все серверы.

Обратите внимание, что что касается SolrCloud, лидер и реплика имеют небольшую разницу, и мы можем отправить запрос / обновление на любой сервер. Он автоматически перенаправляется на другие серверы.

Короче говоря, балансировка нагрузки выполняется как на стороне клиента, так и на стороне сервера. Так что вам не нужно об этом беспокоиться.

person ymonad    schedule 20.03.2014

Необходим балансировщик нагрузки, который будет реализован Zookeeper, используемым вместе с SolrCloud.

Когда вы используете SolrCloud, вы должны настроить сегментирование и репликацию с помощью Zookeeper, используя либо встроенный сервер Zookeeper, который поставляется вместе с SolrCloud, либо вы используете автономный ансамбль Zookeeper (который рекомендуется для избыточности).

Затем вы должны использовать SolrCloudClient для отправки ваших запросов в Zookeeper, который затем перенаправит ваш запрос на правильный сегмент в вашем кластере. SolrCloudClient потребует имя и адрес всех ваших экземпляров Zookeeper при создании экземпляра, и ваша балансировка нагрузки будет обрабатываться соответствующим образом оттуда.

См. Следующий отличный учебник: http://www.francelabs.com/blog/tutorial-solrcloud-amazon-ec2/

Документы Solr: https://cwiki.apache.org/confluence/display/solr/Setting+Up+an+External+ZooKeeper+Ensemble

person jpalmer4444    schedule 04.04.2016

Эта цитата относится к последней версии Solr, на момент написания которой была ver. 7.1

Solrcloud - Распределенные запросы

Когда узел Solr получает запрос поиска, этот запрос незаметно перенаправляется на реплику осколка, которая является частью поисковой коллекции.

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

Solrcloud - отказоустойчивость чтения сбоку а>

В кластере SolrCloud каждый отдельный узел распределяет нагрузку на запросы чтения по всем репликам в коллекции. Вам по-прежнему нужен балансировщик нагрузки «снаружи», который общается с кластером, или вам нужен умный клиент, который понимает, как читать и взаимодействовать с метаданными Solr в ZooKeeper и запрашивает только адрес ансамбля ZooKeeper, чтобы начать обнаруживать, на каких узлах он должен отправлять запросы. (Solr предоставляет умный клиент Java SolrJ под названием CloudSolrClient.)

person freedev    schedule 12.11.2017

Я нахожусь в аналогичной ситуации, когда я не могу полагаться на CloudSolrServer для балансировки нагрузки, возможное решение, которое я оцениваю, - использовать синапс Airbnb (http://nerds.airbnb.com/smartstack-service-discovery-cloud/), чтобы динамически перенастроить существующий балансировщик нагрузки haproxy на основе состояния кластера SolrCloud, который мы получить от Zookeeper.

person Luca    schedule 10.09.2014