проверка работоспособности solr для > 0 документов


Конфигурация по умолчанию для solr /admin/ping, предоставляемая для проверки работоспособности балансировщика нагрузки, хорошо интегрируется с проверками работоспособности балансировщика нагрузки Amazon elb.

Однако, поскольку мы используем репликацию master-slave при подготовке нового узла, solr запускается и репликация происходит, но в то же время /admin/ping возвращает успех до того, как индекс реплицируется через master и есть документы.

Мы хотели бы, чтобы узлы были приведены в действие только после того, как они выполнили сначала тиражируют и имеют документы. Я не вижу никакого способа сделать это с /admin/ping PingRequestHandler - он всегда возвращает успех, если поиск завершается успешно, даже с нулевыми результатами.

Также нет никакого совпадения / несоответствия ожидаемого текста в ответе с конфигурацией проверки работоспособности elb.

Есть идеи, как этого добиться?

1 3

1 ответ:

Чтобы расширить природу проблемы здесь, PingRequestHandler всегда будет возвращать успех, если только....

  1. его запрос приводит к созданию исключения.
  2. он настроен на использование файла проверки работоспособности, и этот файл не найден.

Таким образом, мое предложение заключается в том, что вы настроить обработчик PingRequestHandler использовать файл диагностики. Затем вы можете использовать задание cron в своей системе Solr, задачей которого является проверка наличия документов и создание (или удалить) файл проверки работоспособности соответственно. Если файл проверки работоспособности отсутствует, то PingRequestHandler выдаст HTTP 503, которого должно быть достаточно для ELB.

Грубый алгоритм, который я бы использовал...

  • каждую минуту, запрос http://localhost:8983/solr/select?q=*:*
  • если numDocs > 0 то touch /path/to/solr-enabled
  • Else rm /path/to/solr-enabled (необязательно, в зависимости от вашей строгости)

Файл проверки работоспособности может быть настроен в блоке <admin> , и вы можете использовать абсолютный путь или имя файла относительно каталог, из которого вы запустили Solr.

<admin>
  <defaultQuery>solr</defaultQuery>
  <pingQuery>q=*:*</pingQuery>
  <healthcheck type="file">/path/to/solr-enabled</healthcheck>
</admin>
Дайте мне знать, как это работает! Я испытываю искушение реализовать нечто подобное для рабов чтения в Websolr.