SolrCloud: архитектура
Клавдий использует Apache Solr для полнотекстового поиска по письмам и поддерживаемым вложениям. В небольшой установке достаточно одного экземпляра Solr рядом с узлом с ролью индексирования (indexer (!)). При росте архива несколько экземпляров Solr можно объединить в SolrCloud, чтобы распределить индекс и хранить его реплики на разных узлах.
Настройка подключения, просмотр состояния и управление месячными бакетами через веб-интерфейс описаны на странице {{ССЫЛКА:maintenance.search-health|Проверка состояния поиска}}.
Роли SolrCloud и ZooKeeper
SolrCloud объединяет несколько экземпляров Solr в единый поисковый кластер. Solr распределяет индекс по шардам, создаёт реплики и направляет поисковые запросы на нужные узлы. Координацию выполняет Apache ZooKeeper.
В Клавдии используется один ZooKeeper на узле-координаторе, а не ансамбль ZooKeeper:
-
координатор (
coordinator(!)) — первый узел с рольюindexer, автоматически выбранный по наименьшему идентификатору; на нём запускаются ZooKeeper в одиночном режиме (standalone(!), порт 2181) и Solr в кластерном режиме (cloud(!)); -
присоединённый узел (
joiner(!)) — остальные узлы с рольюindexer; на них запускается только Solr в кластерном режиме и подключается к ZooKeeper координатора.
ZooKeeper хранит метаданные поискового кластера: состав коллекций и размещение реплик. Сами данные поискового индекса можно восстановить из базы Клавдия полной переиндексацией.
Если координатор недоступен, поиск не работает до восстановления узла или переноса роли координатора на другой узел. Отказоустойчивость индекса обеспечивают реплики SolrCloud (
replicationFactor), а не кворум ZooKeeper. В этой схеме отдельного кворума ZooKeeper нет.
Размещение Solr
Solr размещается на том же хосте, что и узел с ролью indexer, но работает в отдельном контейнере. Узел Клавдия обращается к локальному Solr по адресу https://127.0.0.1:8983/solr.
Локальный Solr использует HTTPS и сертификат веб-интерфейса из secrets/ssl_cert. Проверка локального самоподписанного сертификата отключена. SolrCloud самостоятельно распределяет запросы по шардам и репликам, поэтому Клавдий работает с одним локальным URL.
Значение по умолчанию —
https://127.0.0.1:8983/solr. Для внешнего Solr укажите его адрес, напримерhttp://host:8983илиhttps://..., в настройках поиска. Замена сертификата описана на странице {{ССЫЛКА:maintenance.tls-rotate|Замена TLS-сертификата}}.
Несколько узлов индексирования
Если в кластере Клавдия несколько узлов с ролью indexer, их локальные экземпляры Solr входят в один SolrCloud. Индекс распределяется по шардам и реплицируется между экземплярами, а поисковые запросы маршрутизируются автоматически.
Все узлы индексирования видят один логический индекс: письмо, проиндексированное через один узел, доступно для поиска через другой. На каждом узле Клавдий по-прежнему обращается к локальному адресу https://127.0.0.1:8983/solr; взаимодействие между экземплярами выполняет SolrCloud.
Как узел получает конфигурацию SolrCloud
При запуске узел с ролью indexer:
- Регистрирует себя в
config.solr_instances: сохраняет идентификатор узла, адрес Solr, роль и адрес ZooKeeper. - Проверяет наличие координатора. Если координатора нет и это первый узел, назначает координатором себя; иначе регистрируется как присоединённый узел.
- Записывает роль, адрес ZooKeeper и адрес Solr в
/shared/solr-cluster.env. - Скрипты запуска контейнеров Solr и ZooKeeper читают этот файл. На координаторе запускается ZooKeeper. На присоединённом узле ZooKeeper не запускается, а Solr подключается к ZooKeeper координатора.
Адреса и TLS
Адрес Solr регистрируется в общей базе. При автоматическом определении адреса проверьте его доступность с других узлов; для переопределения используются KLVD_SOLR_HOST и KLVD_SOLR_EXTERNAL_URL.
Узлы без локального Solr могут находить координатор через реестр. Явный URL в общих настройках поиска используется для выбранного внешнего подключения. Пустое поле URL при наличии реестра не следует считать способом отключить поиск.
Схема, порт и проверка сертификата задаются параметрами KLVD_SOLR_SCHEME, KLVD_SOLR_PORT и KLVD_SOLR_SSL_VERIFY. Значение 1 включает строгую проверку сертификата. Подробнее: {{ССЫЛКА:reference.env|Переменные окружения и Docker Compose}}.
Навигация по книге
- Следующая статья: {{ССЫЛКА:reference.solr-instances|Добавление и состояние экземпляров Solr}}