проверка работоспособности solr для > 0 документов
Конфигурация по умолчанию для solr /admin/ping, предоставляемая для проверки работоспособности балансировщика нагрузки, хорошо интегрируется с проверками работоспособности балансировщика нагрузки Amazon elb.
Однако, поскольку мы используем репликацию master-slave при подготовке нового узла, solr запускается и репликация происходит, но в то же время /admin/ping возвращает успех до того, как индекс реплицируется через master и есть документы.
Мы хотели бы, чтобы узлы были приведены в действие только после того, как они выполнили сначала тиражируют и имеют документы. Я не вижу никакого способа сделать это с /admin/ping PingRequestHandler - он всегда возвращает успех, если поиск завершается успешно, даже с нулевыми результатами.
Также нет никакого совпадения / несоответствия ожидаемого текста в ответе с конфигурацией проверки работоспособности elb.
Есть идеи, как этого добиться?
1 ответ:
Чтобы расширить природу проблемы здесь, PingRequestHandler всегда будет возвращать успех, если только....
- его запрос приводит к созданию исключения.
- он настроен на использование файла проверки работоспособности, и этот файл не найден.
Таким образом, мое предложение заключается в том, что вы настроить обработчик 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.Дайте мне знать, как это работает! Я испытываю искушение реализовать нечто подобное для рабов чтения в Websolr.<admin> <defaultQuery>solr</defaultQuery> <pingQuery>q=*:*</pingQuery> <healthcheck type="file">/path/to/solr-enabled</healthcheck> </admin>