Как поддерживать индексы Sitecore Lucene в огромном веб-ферме по доставке контента?
Я знаю, что нельзя использовать индексы Lucene:
Sitecore хранит локальную копию индекса Lucene в файловой системе каждого экземпляра и не поддерживает совместное использование индексов между экземплярами.
Это возможно xcopy
Lucene индексы между CM и CD?
Есть ли какой-то другой подход или рекомендация поддерживать индексы на 30+ серверах доставки контента?
Обновление: я полностью осознаю, что компакт-диски должны начать свое собственное обновление индекса. С более чем 30 CD-серверами я думаю, что, возможно, будет период, когда не все CD-серверы будут иметь одинаковый набор индексов. Я боюсь, что по некоторым причинам индексы не будут работать на некоторых серверах компакт-дисков и отслеживания, почему / где будет ад. Вот почему мы пытаемся выяснить, существует ли какой-то альтернативный подход, когда индексы хранятся в одном месте (какой-то общий) и в основном мгновенно копируются на все CD
4 ответа
Вам необходимо включить History Engine для веб-базы данных серверов CM и CD.
Смотрите этот отрывок из Руководства по масштабированию Sitecore.
Чтобы включить History Engine для базы данных Sitecore: В файле web.config добавьте следующий раздел в элемент /configuration/sitecore/database / database, где id соответствует имени базы данных:
<Engines.HistoryEngine.Storage>
<obj type="Sitecore.Data.$(database).$(database)HistoryStorage, Sitecore.Kernel">
<param connectionStringName="$(id)" />
<EntryLifeTime>30.00:00:00</EntryLifeTime>
</obj>
</Engines.HistoryEngine.Storage>
<Engines.HistoryEngine.SaveDotNetCallStack>false</Engines.HistoryEngine.SaveDotNetCallStack>
Когда элемент Sitecore изменяется, индексы Lucene немедленно обновляются в экземпляре Sitecore, где было внесено изменение. На удаленных серверах в многосерверной среде индексы Lucene не обновляются сразу после изменения элемента. Индексы Lucene автоматически обновляются через интервал, определенный в файле web.config, в параметре Indexing.UpdateInterval и с минимальным временем ожидания между двумя последовательными обновлениями, определенными в параметре Indexing.UpdateJobThrottle.
Смотрите здесь
Вы также можете рассмотреть возможность использования https://github.com/Velir/Sitecore-Lucene-Refresher с открытым исходным кодом, который запустит операцию обхода индекса в памяти и передаст индекс обратно в файловую систему, чтобы вы не потеряли содержимое индекса в процессе перестроения. Это может по крайней мере помочь. Затем, возможно, установите какой-нибудь агент для запуска этой операции сканирования / восстановления в определенное время дня, чтобы все CD-серверы выполняли это одновременно.
Уэсли Ломакс ответ правильный. Тем не менее, я хочу отметить, что я также был вовлечен в ту же ситуацию, когда у меня были элементы в моей папке данных в 1000-х годах. Я обновил настройки web.config следующим образом:
<!-- INDEX FOLDER
The path to the folder where the Lucene.Net search indexes are stored.
Default value: $(dataFolder)/indexes
-->
<setting name="IndexFolder" value="$(dataFolder)/indexes" />
<!-- INDEX UPDATE INTERVAL
Gets the interval between the IndexingManager checking its queue for pending actions.
Default value: "00:01:00" (1 minute)
-->
<setting name="Indexing.UpdateInterval" value="00:00:30" />
<!-- INDEX UPDATE JOB THROTTLE
Gets the minimum time to wait between individual index update jobs.
Default value: "00:00:01" (1 second)
-->
<setting name="Indexing.UpdateJobThrottle" value="00:00:01" />
Вероятно, следует указать, что sitecore теперь рекомендует использовать Solr в этом сценарии, а не пытаться синхронизировать несколько индексов Lucene:
Основными причинами использования Solr вместо Lucene являются...
Если вы используете несколько серверов доставки контента (или планируете сделать это позже), используйте Solr. Solr работает автоматически в такой среде. Вы можете использовать Lucene, но вы должны убедиться, что индексы синхронизируются между серверами самостоятельно.
Поэтому вам следует использовать Solr, если вы планируете масштабировать свой сайт (иметь распределенную настройку с несколькими серверами).