Solr Healthcheck для> 0 документов - PullRequest
       16

Solr Healthcheck для> 0 документов

3 голосов
/ 30 августа 2011

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

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

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

Также не существует совпадения или не совпадения с ожидаемым текстом вответ с настройкой проверки работоспособности эльба.

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

Ответы [ 2 ]

6 голосов
/ 31 августа 2011

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

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

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

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

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

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

<admin>
  <defaultQuery>solr</defaultQuery>
  <pingQuery>q=*:*</pingQuery>
  <healthcheck type="file">/path/to/solr-enabled</healthcheck>
</admin>

Дайте мне знать, как это работает!Я испытываю желание реализовать нечто подобное для чтения ведомых на Websolr .

0 голосов
/ 03 января 2019

Я столкнулся с интересным решением здесь: https://jobs.zalando.com/tech/blog/zookeeper-less-solr-architecture-aws/?gh_src=4n3gxh1

По сути, это сервлет, который можно добавить в Solr webapp, а затем проверить все ядра, чтобы убедиться, что у них есть документы.

Я играю с более сложным решением, но еще не проверил его / пока не достиг большого прогресса: https://gist.github.com/er1c/e261939629d2a279a6d74231ce2969cf

Что мне нравится в этом подходе (теоретически), так это возможность проверитьСостояние репликации / успех для нескольких ядер.Если кто-нибудь найдет реальную реализацию этого подхода, пожалуйста, дайте мне знать!

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