Если вы решили кластеризовать вашу 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 version | Solr version |
---|---|
11.4 to 11.5 | 7.7.x (XWiki embeds 7.7.1) |
11.6 to 13.2 | 8.1.x (XWiki embeds 8.1.1) |
12.3 to 13.0 | 8.5.x (XWiki embeds 8.5.1) |
13.1 to 14.7 | 8.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