Установка и кластеризация XWiki

Если вы решили кластеризовать вашу XWiki, то вы потенциально столкнетесь с несколькими проблемами. Вам понадобится внешняя база данных Postgresql, распределенное файловое хранилище, например GlusterFS, общий сервер документов и конечно же единая система полнотекстового поиска SOLR.

Установка XWiki

Существует два варианта как вы можете установить вашу XWiki. Первый вариант, это использование Docker-образа и запуск в Docker Composer-е, а второй вариант это запуск локального Tomcat-сервера и запуск приложения как SystemD-сервис.

Для первого варианта вы можете найти Docker Compose файлы на все актуальные версии XWiki и на все поддерживаемые базы данных по адресу https://github.com/xwiki/xwiki-docker/tree/master/15.5/postgres-tomcat (для версии 15.5 и базы данных Postgresql).

Для второго случая можно либо установить Tomcat сервер локально и развернуть war-файл или же пойти другим путем и скопировать уже настроенное окружение из докер-контейнера из первого варианта. 

SystemD-сервис в моем случае выглядит следующим образом:

[Unit]
Description=Xwiki tomcat service

[Service]
Type=simple

User=xwiki
Group=xwiki

Environment="JAVA_HOME=/opt/xwiki/java"
Environment=CATALINA_HOME=/opt/xwiki
Environment=CATALINE_BASE=/opt/xwiki
WorkingDirectory=/opt/xwiki
ExecStart=/opt/xwiki/bin/catalina.sh run

StandardOutput=append:/var/log/xwiki/service.log
StandardError=append:/var/log/xwiki/service_error.log

[Install]
WantedBy=multi-user.target

Активируем и запускаем сервис XWiki:

# systemctl start xwiki
# systemctl enable xwiki
# systemctl status xwiki

Postgresql

Для настройки сервера Postgresql можно использовать заметку: Postgresql – установка и кластеризация

GlusterFS

Для GlusterFS у меня есть отдельная заметка: Пример развертывания GlusterFS в Ubuntu Linux

Office Server

Open Office я просто отключил, так как функцией импорта не пользуюсь.

Для этого просто:

  • Удаляем расширение Office Importer Application
  • Отключаем автозапуск Office Server в конфиге openoffice.autoStart=false

SOLR

Для запуска XWiki в режиме кластеризации вам понадобится развернуть отдельный сервер SOLR и прописать в конфигурации XWiki путь до сервера. Это связано с тем, что каждый контейнер XWiki запускает свой локальный SOLR-сервер и хранит его данные на распределенной файловой системе (а файловая стсема у нас только для хранения файлов и естественно не предполагает запуск нескольких баз полнотекстового поиска на GlusterFS). Причем для размых версий XWiki требуется пределенная версия SOLR-сервера.

XWiki versionSolr version
11.4 to 11.57.7.x (XWiki embeds 7.7.1)
11.6 to 13.28.1.x (XWiki embeds 8.1.1)
12.3 to 13.08.5.x (XWiki embeds 8.5.1)
13.1 to 14.78.8.x (XWiki embeds 8.8.0)
14.8+8.11.x (XWiki embeds 8.11.2)

Приступаем к установке SOLR

Официальный сайт c инструкцией по установке и настройке находится по адресу https://solr.apache.org/guide/8_11/installing-solr.html

  • Фактически нам требуется скачать архив
  • Распаковать в /opt/
  • Создать пользователя для запуска SOLR 
  • Создать сервис и запустить
  • Проверить, что сервис работает

Предварительная подготовка

# cd /tmp/
# wget "https://www.apache.org/dyn/closer.lua/lucene/solr/8.11.2/solr-8.11.2.tgz?action=download"
# tar -xvf ./solr-8.11.2.tgz\?action\=download
# mv ./solr-8.11.2 /opt/solr/
# useradd solr
# chown -R solr:solr /opt/solr/

Тестовый локальный запуск

$ bin/solr start

Сервер SOLR будет доступен на порту 8983 и в моем случае можно получить доступ к web-интерфейсу по URL http://10.240.250.10:8983/solr/#/

Следующим этапом мы останавливаем тестовый SOLR-сервер командой:

$ bin/solr stop

Запуск SOLR-сервера в виде SystemD-сервиса

Первое на что стоит обратить внимение, это на предупреждения при тестовом запуске сервиса:

*** [WARN] *** Your open file limit is currently 1024.
 It should be set to 65000 to avoid operational disruption.
 If you no longer wish to see this warning, set SOLR_ULIMIT_CHECKS to false in your profile or solr.in.sh
*** [WARN] ***  Your Max Processes Limit is currently 15310.
 It should be set to 65000 to avoid operational disruption.
 If you no longer wish to see this warning, set SOLR_ULIMIT_CHECKS to false in your profile or solr.in.sh
Warning: Available entropy is low. As a result, use of the UUIDField, SSL, or any other features that require
RNG might not work properly. To check for the amount of available entropy, use 'cat /proc/sys/kernel/random/entropy_avail'.

Как вы видите мы можем просто отключить эту проверку или все-же последовать рекомендациям и установить сообветствующие лимиты. В моем случае получился сервис вот такого вида (/etc/systemd/system/solr.service).

[Unit]
Description=Apache SOLR
ConditionPathExists=/opt/solr
After=syslog.target network.target remote-fs.target nss-lookup.target systemd-journald-dev-log.socket
Before=multi-user.target
Conflicts=shutdown.target
StartLimitIntervalSec=60

[Service]
Type=forking

User=solr
Group=solr

LimitNOFILE=1048576
LimitNPROC=1048576

Environment=SOLR_INCLUDE=/etc/default/solr.in.sh
Environment=RUNAS=solr
Environment=SOLR_INSTALL_DIR=/opt/solr

WorkingDirectory=/opt/solr

Restart=on-failure
RestartSec=5

ExecStart=/opt/solr/bin/solr start
ExecStop=/opt/solr/bin/solr stop
Restart=on-failure

StandardOutput=append:/var/log/solr/service.log
StandardError=append:/var/log/solr/service_error.log

[Install]
WantedBy=multi-user.target

Соответственно, активируем, запускаем и проверям работоспособнось аналогично запуску в тестовом режиме по адресу http://10.240.250.10:8983/solr/#/.

# systemctl enable solr
# systemctl start solr

Настраиваем XWiki на работу с внешним SOLR-сервером

Создаем на сервере xwiki новое Core которое так и назовем xwiki.

# su solr -s /bin/bash
$ cd /opt/solr/
$ bin/solr create -c xwiki

Проверяем что SOLR Core отображается в web-интерфейсе.

Миграция данных из встроенного SOLR во внешний

Самый простой спосом мигрировать данные во внешний SORL

  • Удаляем расширение Solr Indexer for the Extensions Security Vulnerabilities application
  • Вносим правки в конфигурационный файл 
solr.type=embedded
solr.remote.baseURL=http://10.240.250.10:8983/solr
  • Перезапускаем XWiki
  • Проводим полную реиндексацию системы

Реиндексация расширений:

  • Global Administration: Extensions
  • Reindex

Реиндексация полнотекстового поиска:

  • Global Administration: Search
  • Search

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

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