SolrCloud: архитектура
Клавдий использует сApache Solr длужбуя полнотекстового поиска Apache Solr для поиска по архиву писеьмам и споддерживаемоыму вложенийям. НВ небольшой уста малых нобъёмахвке достаточно одного инстансэкземпляра Solr,Solr развёрнутядого вместе с indexer(!)-узлом с ролью индексирования (indexer (!)). При росте архива, для резервирования индекса и параллельного поиска кластер расширяется до несколькихо инстансэкземпляров Solr —можно объездинить в SolrCloud, чтобы распределить индекс и хравнить его реплики фнайлов развёртнывания при добавлении каждого новогох узлах.
Этот раздел описывает серверную архитектуру поиска и операции, которые администратор выполняет при масштабировании и обслуживании кластера. Настройка подключения, просмотр состояния и управление месячными бакетами по месяцам через веб-интерфейс —описаны вна странице {{ССЫЛКА:maintenance.search-health|Проверка состояния поиска (раздел [Поиск (Solr)])}}.
Роли SolrCloud и кZooKeeper
SolrCloud оорбъединатор-ZK
Кластер поиска работаяет в режиме SolrCloud: несколько инстансэкземпляров Solr объединяются в единый поисковый кластер,. Solr сам шардирует и реплицирует индекс, распределяет индекс по шардам, создаёт реплики и направляет поисковые запросы пона нужные узламы. Координацию квыполастера обеспечиваняет Apache ZooKeeper.
МодельВ Клавдии используется —один ZooKeeper на узле-координаторе, а не ансамбль ZooKeeper:
-
координатор
-ZK(неcoordinatorансамбль ZK):Coordinator((!)-узел) — первыйindexer(!)-узелкс роластераью(назначаетсяindexer, автоматически,выбранный по наименьшему идентификатору).;Нна нёмрзаботает лопускальныйются ZooKeeper в одиночном режиме (standalone(standalone(!), порт 2181) илокальныйSolr в кластерном режимеcloud((cloud(!).);-
Joiner(присоединённый узел (joiner(!)-) — остальные узлы—спрочиельюindexer(!)-узлы.indexer;Нна нихработает только Solr (cloud(!)); ZooKeeper незапускается.Ихтолько Solr в кластерном режиме и подключается к ZooKeepercoordinator(!)-узла и авткоматически порисоединяется катому же клрастеру SolrCloud..
ZooKeeper
в этой модели — одиночный (на coordinator(!)). Онхраниттолькометаданные поискового кластера:(состав коллекций,и размещение реплик);.сСами данные поискового индекса можно восстанаовливаютсяь из базы Клавдия полной переиндексацией.ПаЕсли коорд
ение coordinator(!) означатор нет прдостойупен, поиск не работает доегворесстартновления узла или переноса роли координатора на другой узел.РеОтказероустойчивированиесть индексадобеспечиваютигаетсярепликами SolrCloud (replicationFactor(!)replicationFactor), а неансамблекворум ZooKeeper. Вописаннэтойконфигурации ZooKeeper нсхемеимотдеет собственльного кворума;учиZooKeeper нетывайте это при планировании доступности поиска.Размещение Solr
Solr
всегдаразмещаетсясна товм же хосте, что и узел с рольюindexer, нос indexer(!)-узлрабом(co-located) —тает в отдельном контейнере на том же хосте. Узел Клавдия обращается к локальному Solr по адресуhttps://127.0.0.1:8983/solr.(Локальный Solr использует HTTPS
наиWUI-сертификат веб-интерфейса изsecrets/ssl_cert,.self-signed(!),Проверкаverify(!)локального самоподписанного сертификата отключёенвнутри узла).КластерSolrCloudвсамостоятельнутри себяо роутиаспределяет запросыпо всем инстансам — Клавдий говорит с одним URL, а fan-out(!)по шардам и репликам,выпоэтому Клняавдий работаетSolr.с одним локальным URL.ДЗначефние по умолт вчанастройкахию —https://127.0.0.1:8983/solr.ЛокаДльный Solr всегда поднимаетсяна HTTPS (jetty keystore из WUI-серта, см.Замена TLS-сертификата). Привнешнемго Solr укажите его адрес,(напримерhttp://host:8983илиhttps://...), в настройках поиска. Замена сертификата описана на странице {{ССЫЛКА:maintenance.tls-rotate|Замена TLS-сертификата}}.
нияЕдиный кластер при нНескольк
ихоindexer(!)-узлов индексировахЕсли в кластере Клавдия несколько узлов с ролью
indexer, их локальныеинстансэкземпляры Solr вхобъедят в одиняютсявSolrCloud.единый кластер SolrCloud— иИндекс распределяется по шардируетсяам и реплицируется междувсэкземи инстансплярами, а поисковые запросыбмалансршрутизируются автоматически:.Coordinator(!)-узел(первый indexer(!), назначаетВс
я автоматически по наименьшему UID) — на нём работает локальный ZooKeeper (standalone(!), порт 2181) и Solr в режимеcloud(!).Joiner(!)-узлы(остальные indexer(!)) — только Solr (cloud(!)); ZooKeeper не запускается. Их Solr подключается к ZooKeeper coordinator(!)-узлаиавтоматически присоендиняется к тому же кластеру SolrCloud. Реплики коллекцсийроваспределяются по всем joiner(!)-узлам (replicationFactor(!), см.ниже).
Таким образом,все indexer(!)-узлыя видят один логитот жческий индекс—: письмо, проиндексированноеначерез одиномузеле, доступно для поискана любомчерез другомй. Не нужно указывать отдельный Solr-URL на каждом узле:кКлавдий по-преждыйнему обращается ксвоемулокальномуSolrадресу(https://127.0.0.1:8983/solr),; взаSolrCloud гарантирумодет согласованнойсть данныхвие междуинстансами.Доставэка настроек кластераУзел Клавдия самуправляет параметрамиSolrCloudвыполняетбез правки docker-compose при добавлении инстанса:SolrCloud.При старте indexer(!)-узел получает конфигурацию SolrCloudПри запуске узел с ролью
indexer:- Регистрирует себя в
реестре инстансов (config.solr_instances): сохраняет идентификатор узла, адрес Solr, роль(coordinator(!)/joiner(!)),и адрес ZooKeeper. УзПровел определяетсвналичие коюординатора.роль: еЕслиcoordinator(!)координаторауже есть — узел становится joiner(!) и использует его ZooKeeper; если coordinator(!) отсутствует иузелэто первый—узел, назначает координатором себя; иначе регистановрируетсяcoordinator(!)как присоединённый узел.ПЗарписываметры(роль, адресZooKeeper,ZooKeeper и адресSolr) записываютсяSolr вобщий файл/shared/solr-cluster.env.- Скрипты запуска контейнеров Solr и ZooKeeper читают этот файл
:. На координаcoordinator(!)торе запускаетсяZooKeeper,ZooKeeper.нНаjoiner(!)присоединённом—узле ZooKeeper не запускается;, а Solrнподключаjoiner(!) стартуетспривязкойк ZooKeepercoordinator(!)-узлкоординатора.
Entrypoint(!)-с- Регистрирует себя в
Как
Адреса и 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|Добавление и состояние
инстансэкземпляровSolrSolr}}