Перейти к основному контенту

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 в кластерном режиме и подключается к ZooKeeper coordinator(!)-узла и авткоматически порисоединяется к атому же клрастеру 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:

      1. Регистрирует себя в реестре инстансов (config.solr_instances): сохраняет идентификатор узла, адрес Solr, роль (coordinator(!)/joiner(!)),и адрес ZooKeeper.
      2. УзПровел определяет свналичие коюординатора. роль: еЕсли coordinator(!)координатора уже есть — узел становится joiner(!) и использует его ZooKeeper; если coordinator(!) отсутствует и узелэто первый —узел, назначает координатором себя; иначе регистановрируется coordinator(!)как присоединённый узел.
      3. ПЗарписываметры (роль, адрес ZooKeeper,ZooKeeper и адрес Solr) записываютсяSolr в общий файл /shared/solr-cluster.env.
      4. Entrypoint(!)-с
      5. Скрипты запуска контейнеров Solr и ZooKeeper читают этот файл:. На координа coordinator(!)торе запускается ZooKeeper,ZooKeeper. нНа joiner(!)присоединённом —узле ZooKeeper не запускается;, а Solr нподключа joiner(!) стартует с привязкой к ZooKeeper coordinator(!)-узлкоординатора.

    Общий том klvd_shared создобавляеётся в compose одприн раз (на этапе развёртывания),и аи не требует отдельного изменения при добавлении каждого нового экземпляра Solr.

    Адреса и 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}}.

    Навигация по книге