Как работает сервер Lucene.

Введение.

 Тема блога — взаимодействие индексного сервера Lucene и Micro Focus Vibe для увеличения масштабируемости и надежности Портала при эксплуатации.

 Введение

 Вопрос настройки масштабирования сервера Lucene, возникает по мере наполнения Портала информацией, объём и количество публикаций становится заметно по тому, как происходит поиск информации, которое увеличивается с каждым разом по мере эксплуатации Vibe. Индексный сервер Lucene отвечает за индексацию всех данных на Портале, пользователи и гости имеют возможность использовать удобную систему поиска публикуемого контента на страницах Портала. Работа сервера Lucene основана на преобразовании, для индексации, любых текстовых сообщений отправленных на Портал, можно конечно обойтись и без Lucene, если сообщения в папках носят простой текстовый формат, который можно проиндексировать механизмом SQL сервера. Но, когда на Портале публикуются прикрепленные файлы, имеющие сложный формат, требующий дополнительного преобразования перед индексацией, то здесь на помощь приходит сервер Lucene, выполняющий роль буфера преобразования для любых форматов при индексации, существенно снижая этим процессорные расходы и экономя ОЗУ.

Конфигурация

 Расмотрим некоторые параметры конфига Lucene, которые могут быть изменены администратором, для улучшения производительности:

  • Max booleans: — по умолчанию 10000 означает, что в запросе разрешено 10 000 логических выражений, можно увеличить если имеется > 10 000 пользователей, групп или команд.
  • RAM in MB that may be used for buffering:- объем ОЗУ, для буферизации документов и удаления перед их сбросом в каталог, по умолчанию — 256 МБ для Lucene high availability и 32 МБ для остальных
  • Merge factor: — количество сегментов индекса создаваемые на диске для объединения и сохранения постоянного коэффициента слияния при объединении индексных таблиц, по умолчанию 10
  • Network interface for RMI service: IP-адрес или имя хоста для сетевого интерфейса службы RMI, обеспечивает связь по TCP между JVM экземплярами, порт 1199
  • Важно: Индексный сервер Lucene должен всегда работать, иначе пользователи не смогут получить доступ к Vibe если не работает Lucene Index Server.

 Сервер Lucene, при установке, может принимать один из следующих базовых конфигурационных вариантов, доступных администратору при принятии решения подготовке и анализа стратегии увеличения производительности Портала.

  1. Размещение Lucene на том же сервере где и программное обеспечение Vibe, экземпляр JVM общий (базовая коробочная установка Vibe)
  2. Раздельное использование экземпляров JVM, на одном сервере, для Vibe и Lucene (необходимо выделить часть ОЗУ для Lucene)
  3. Выделить отдельный индексный сервер Lucene
  4. Использовать кластер серверов Lucene — обеспечивает высокую доступность и отказоустойчивость.

 Если у Вас уже работает Портал под управлением Vibe, следовательно он соответствует конфигурации №1 см.выше, все каталоги Vibe и Lucene собраны в папках: /var/opt/novell/teaming и /var/opt/novell/teaming/lucene — соответствует «коробочному» варианту установки Vibe.

 В процессе эксплуатации у нас возрастают объёмы публикаций, Портал начинает «тормозить» нам приходится искать новые решения. Для начала, что бы как то реагировать на проблемный вопрос рассмотрим конфигурацию разделения экземпляров JVM на одном сервере. Каталоги с Vibe остаются в /var/opt/novell/teaming, а для Lucene будет создан отдельная структура папок: /var/opt/novell/teaming/luceneserver, экземпляр java для Lucene будет располагаться в /var/opt/novell/teaming/luceneserver/jre, таким образом две JVM будут отвечать за разные задачи, связь между ними будет осуществляться с помощью RMI по TCP протоколу

Механизм RMI позволяет вызывать удалённые программы Java приложений, запущенные на другой JVM по TCP протоколу, порт RMI 1199

 Все рассмотренные конфигурации, кроме базовой, используют RMI соединение, это условие следует учитывать в дальнейшем при выборе стратегии увеличения масштабировонасти Портала. Выбрав один из способов работы Lucene, при взаимодействии с RMI, убедитесь, что сетевые экраны в корпоративной сети предприятия пропускают «переговоры» между RMI соединениями. Рекомендуется отключить firewall на сервере Vibe и Lucene или, если политикой предприятия это запрещено, открыть порт 1199. Далие приводится характерная ошибка, возникающая при нарушение соединения по RMI протоколу, которую необходимо учитывать при поиске неисправности работы Lucene.

Вариант Lucene, один сервер два JVM.

 Подготовка папки для Lucene, в каталоге vibe-Lucene должен находиться файл simple-installer.xml см.базовая установка Vibe и установочный сценарий lucene-installer.linux для инсталяции Lucene, находится в дереве каталогов архива Vibe.

# cd /home/vibe-lucene
#./lucene-installer.linux

листинг установки, фрагментарно

Checking license key... ... Have you read and agree with the license? : yes Where is the Lucene server installed? (top-level directory) Install directory: [/opt/novell/teaming/luceneserver]: Directory /opt/novell/teaming/luceneserver does not exist. Creating... JavaHome set to bundled /opt/novell/teaming/luceneserver/jre Logfile time zone ... Selection? [323]: Novell Vibe runs in the bundled JRE JVM heap size to use [1g]: JavaHome set to /opt/novell/teaming/luceneserver/jre Max booleans [100000]: RAM in MB that may be used for buffering [256]: Merge factor [10]: Network interface for RMI service [localhost]: Login name [secret]: Password: RMI port [1199]: Server port [1188]: Starting installation... ... /home/vibe-lucene/temp-lucene/jre ... /home/vibe-lucene/temp-lucene/luceneserver ... /home/vibe-lucene/temp-lucene/novell-teaming-x.x.x-indexserver.zip JRE_HOME is set to: /opt/novell/teaming/luceneserver/jre installation directory is /opt/novell/teaming/luceneserver Installation mode is 1 Remove Lucene lib jar files --> Saving file owner and permissions for vibe.jmxremote.access, vibe.jmxremote.password and vibe.management.properties Installing bundled JRE Installing Lucene Server /usr/bin/unzip -oq /home/vibe-lucene/temp-lucene/novell-teaming-x.x.x-indexserver.zip Setting the Lucene Server Properties Setting file permissions to 600 on vibe.jmxremote.password file (only the owner can read and write this file) Removing non platform specific file from /opt/novell/teaming/luceneserver/indexserver/bin/indexserver-startup.bat Removing non platform specific file from /opt/novell/teaming/luceneserver/indexserver/bin/indexserver-shutdown.bat Removing non platform specific file from /opt/novell/teaming/luceneserver/indexserver/bin/rmiregistry-startup.bat Copied startup file /opt/novell/teaming/luceneserver/indexserver/bin/indexserver to /etc/init.d Would you like to startup the indexserver now? (Y/N) [N]: N

Проверьте правильность поля Login name, при семантической неточности возникнет ошибка.

 Вносим изменения в файл настроек Lucene, indexserver, находится в этом каталоге. Файл-инструкция indexserver, корректировался для SUSE, система init которого отличается от ALT Linux, необходимо внести изменения в строки приведённые ниже с помощью редактора vim.

Checking license key... ... Have you read and agree with the license? : yes Where is the Lucene server installed? (top-level directory) Install directory: [/opt/novell/teaming/luceneserver]: Directory /opt/novell/teaming/luceneserver does not exist. Creating... JavaHome set to bundled /opt/novell/teaming/luceneserver/jre Logfile time zone ... Selection? [323]: Novell Vibe runs in the bundled JRE JVM heap size to use [1g]: JavaHome set to /opt/novell/teaming/luceneserver/jre Max booleans [100000]: RAM in MB that may be used for buffering [256]: Merge factor [10]: Network interface for RMI service [localhost]: Login name [secret]: Password: RMI port [1199]: Server port [1188]: Starting installation... ... /home/vibe-lucene/temp-lucene/jre ... /home/vibe-lucene/temp-lucene/luceneserver ... /home/vibe-lucene/temp-lucene/novell-teaming-x.x.x-indexserver.zip JRE_HOME is set to: /opt/novell/teaming/luceneserver/jre installation directory is /opt/novell/teaming/luceneserver Installation mode is 1 Remove Lucene lib jar files --> Saving file owner and permissions for vibe.jmxremote.access, vibe.jmxremote.password and vibe.management.properties Installing bundled JRE Installing Lucene Server /usr/bin/unzip -oq /home/vibe-lucene/temp-lucene/novell-teaming-x.x.x-indexserver.zip Setting the Lucene Server Properties Setting file permissions to 600 on vibe.jmxremote.password file (only the owner can read and write this file) Removing non platform specific file from /opt/novell/teaming/luceneserver/indexserver/bin/indexserver-startup.bat Removing non platform specific file from /opt/novell/teaming/luceneserver/indexserver/bin/indexserver-shutdown.bat Removing non platform specific file from /opt/novell/teaming/luceneserver/indexserver/bin/rmiregistry-startup.bat Copied startup file /opt/novell/teaming/luceneserver/indexserver/bin/indexserver to /etc/init.d Would you like to startup the indexserver now? (Y/N) [N]: N

 Теперь необходимо файл indexserver, скопировать в каталог /etc/init.d/ и в каталог установщика Lucene, это позволит в дальнейшем, при внесение изменений в настройки Lucene не копировать indexserver в каталог /etc/init.d/.

 Важно: если удалить файл installer.xml из каталога vibe-lucene, файл indexserver будет заменён оригинальным при следующем запуска программы установки Lucene

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

# /etc/init.d/indexserver start|stop|restart|status
//или
# systemctl start indexserver
# systemctl enable indexserver
# systemctl is-enabled indexserver
enable

смотрим список портов

# netstat -tulp|grep java 
tcp 0 0 :1199 *: LISTEN 3181/java
tcp 0 0 :1188 *: LISTEN 3181/java

 Теперь нам осталось перестроить сценарий запуска программы Vibe, для этого выполняем последовательно шаги  показанные ниже:

# systemctl stop vibe
# cd /home/vibe-linux
./installer-teaming.linux

 Листинг установки, фрагментарно.

.. Have you read and agree with the license? : yes ... Select the action you want to perform 1. New installation 2. Update software and settings 3. Reconfigure settings Selection? [3]: ... Select the type of installation you want to perform 1. Basic installation (select this if you do not have to configure any of the optional features) 2. Advanced installation (select this if you need to configure any of the optional features) Selection? [2]: ... Enter Y to continue, enter N to cancel installation [Y]: ... Max Threads (Default: 200) [200]: Max Active (Default: 50) [50]: Max Idle (Default: 20) [20]: Scheduler Threads (Default: 10) [20]: Novell Vibe runs in the bundled JRE.JVM heap size to use [1g]: JavaHome set to /opt/novell/teaming/jreLucene index settingsMax booleans [10000]: Merge factor [10]: Lucene configuration 1. local 2. server 3. high availability Selection? [2]: Login name [Lucene service]: Password: Remote host [localhost]: RMI port [1199]: ... Configuration saved in installer.xml. Apply new settings now? [Yes]:
# systemctl start vibe

 Последнее, что необходимо сделать — выполнить синхронизацию Lucene с Vibe, операцию можно запустить используя консоль администратора или, если публикаций много, с помощью простого копирования соответствующих каталогов, но операцию синхронизации необходимо всё равно включить, чтобы индексы правильно «улеглись».

Часто встречающие ошибки.

  • Ошибка соединения RMI, проверить работу RMI
  • Ошибка авторизации, проверить правильность написания учётных записей см.ниже
  • Ошибка ввода Login name в файле настроек Lucene исправить синтаксис строки

Вариант Lucene, выделенный сервер для JVM.

 Теперь рассмотрим вариант использования отдельного сервера Lucene. Особых требований к параметрам предъявлять не будем, главное чтобы выделенный сервер Lucene взял на себя всю нагрузку по индексации и освободил ресурсы для работы программного кода Vibe.

 Установка сервера для Lucene с минимальными требованиями.

  • ОЗУ~ 3Gb,
  • CPU~2 GHz,
  • HDD~250GB
  • LAN~1000 Мбит/с

 После того как сервер для Lucene будет установлен, обновлён и правильно настроен, можно приступить к развёртыванию программного пакета Lucene. Здесь необходимо повторить все действия, которые были описаны выше, один сервер два jvm, с небольшим уточнением в шаге где указываем значение, Network interface for RMI service, теперь наш листинг выглядит так.

 Листинг установки, фрагментарно

.. Have you read and agree with the license? : yes ... Select the action you want to perform 1. New installation 2. Update software and settings 3. Reconfigure settings Selection? [3]: ... Select the type of installation you want to perform 1. Basic installation (select this if you do not have to configure any of the optional features) 2. Advanced installation (select this if you need to configure any of the optional features) Selection? [2]: ... Enter Y to continue, enter N to cancel installation [Y]: ... Max Threads (Default: 200) [200]: Max Active (Default: 50) [50]: Max Idle (Default: 20) [20]: Scheduler Threads (Default: 10) [20]: Novell Vibe runs in the bundled JRE.JVM heap size to use [1g]: JavaHome set to /opt/novell/teaming/jreLucene index settingsMax booleans [10000]: Merge factor [10]: Lucene configuration 1. local 2. server 3. high availability Selection? [2]: Login name [Lucene service]: Password: Remote host [server lucene]: RMI port [1199]: ... Configuration saved in installer.xml. Apply new settings now? [Yes]:

Вариант — High availability Lucene.

 Вариант с отдельным сервером Lucene хороший, но он не даёт полной гарантии надёжности работы Портала, необходимо создавать кластерную структуру позволяющая обеспечить режим высокой доступности Lucene — High availability Lucene, эта конфигурация будет удобна и полезна в больших организациях, где требования к скорости доступа к информации и надёжности хранения контента высоки.

Заключение.

 После того, как Портал начнёт работать и пользователи, пройдя обучение включаться в рабочий ритм публикуя контент, охватывающий широкий диапазон бизнес задач, администратор, при очередном обслуживании и анализе журналов, может обнаружить высокую нагрузку ЦПУ и ОЗУ. Детальный разбор возможных вариантов перегрузки сервера может привлечь его внимание, как один из вариантов, к потребляемым серверным мощностям при запросах пользователей на поиск информации. Дальнейшие действия заставят администратора вплотную рассмотреть вопросы индексации и их возрастающий уровень потребления, когда система как бы ‘подвисает’, при обслуживании синхронизации индексного пространства БД Портала. Правильный анализ ситуации и своевременно принятые меры, для расширения масштабируемости, позволит увеличить производительность экземпляра Apache-Tomcat Портала, где в качестве поисковой системы служит java библиотеки lucene или просто сервер Lucene. Описываемая ситуация не требует от администратора немедленного реагирования, необходимо готовится, анализировать, смотреть время пиковых нагрузок и потихоньку готовить сервер Lucene, лучше в облаке предприятия. После тестирования сервера Lucene смоделировать переключение службы индексирования Vibe на отдельный сервер Lucene, оглядеться, привыкнуть и ждать результатов загруженности ЦПУ и ОЗУ Портала, если нагрузка уменьшилась и освободились мощности, значит принятые меры оказались результативными и  эффективными.

Полезные ссылки.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Copyright © 2011-2024
Все права защищены.
При перепечатке указать источник: kabtim.ru
Контакты