Открытый контур на Red OS 8¶
Внимание
Дисклеймер.
Инструкция содержит примерный порядок действий по установке. Инструкция призвана описать логику действий по установке на простом, абстрактном примере. В зависимости от инфраструктуры сервера (кластера) и его конфигурации, вам могут понадобиться дополнительные или иные шаги.
Эта инструкция не должна восприниматься буквально, а использоваться в качестве основы действий.
Примечание
Ниже приведен пример установки системы на РЕД ОС 8 в стандартной редакции и конфигурации "Сервер".
Предупреждение
Инструкция актуальна для установки Юниверс MDM версии 6.9 и старше, так как система перешла с Elasticsearch на Opensearch.
Предупреждение
В Юниверс MDM версии 6.11 было осуществлено обновление PostgreSQL до версии 16.3, в связи с этим теперь требуется обязательная установка расширения TimescaleDB для корректной работы с большими объемами данных. Перед установкой рекомендуется проверить совместимость вашей версии PostgreSQL и версии TimescaleDB.
Шаги установки:
Настройка ОС¶
Для удобства установки необходимо настроить на целевой машине демон SSH (в конфигурации "Сервер" данный компонент настроен по умолчанию).
Пользователь должен иметь права администратора при использовании sudo (по умолчанию при создании пользователя во время установки ОС).
Установка пакетов¶
Зайдите под root пользователем:
sudo su
Выполните обновление системы после свежей установки:
dnf update -y
Выполните установку Midnight Commander и Vim (опционально):
dnf install mc vim -y
Установка OpenJDK¶
Выполните установку OpenJDK:
dnf install java-11-openjdk.x86_64 -y
Проверьте установку пакета OpenJDK:
java -version
Корректный вывод выглядит следующим образом:
openjdk version "11.0.17" 2022-10-18 LTS
OpenJDK Runtime Environment (Red_OS-11.0.17.0.8-3.red80.1) (build 11.0.17+8-LTS)
OpenJDK 64-Bit Server VM (Red_OS-11.0.17.0.8-3.red80.1) (build 11.0.17+8-LTS, mixed mode, sharing)
Установка Opensearch¶
Рекомендуется устанавливать Opensearch версии 2.14.0.
Скачайте пакет Opensearch и установите с помощью команды:
wget https://artifacts.opensearch.org/releases/bundle/opensearch/2.14.0/opensearch-2.14.0-linux-x64.rpm && dnf install ./opensearch-2.14.0-linux-x64.rpm -y
Скопируйте необходимые вам плагины для Opensearch в удобное место на сервере (в примере используется домашняя директория /home/test).
Перейдите в директорию /home/test:
cd /home/test
Распакуйте архив:
unzip plugins.zip
Скопируйте содержимое распакованной директории hunspell в каталог настроек Opensearch:
cp -rv ./hunspell /etc/opensearch/
Задайте корректного владельца скопированной директории:
chown -R opensearch:opensearch /etc/opensearch/hunspell/
Создайте копию конфигурационного файла opensearch.yml:
cp /etc/opensearch/opensearch.yml /etc/opensearch/opensearch.yml_bak
Очистите содержимое оригинального файла:
echo > /etc/opensearch/opensearch.yml
Откройте файл для редактирования:
vim /etc/opensearch/opensearch.yml
Наполняем файл следующим содержимым:
cluster.name: universe-os-cluster network.host: 0.0.0.0 discovery.type: single-node path.data: /var/lib/opensearch path.logs: /var/log/opensearch plugins.security.disabled: true
Сохраните изменения и выйдите:
:wq
Настройте количество выделяемой оперативной памяти для Opensearch. Для этого откройте файл /etc/opensearch/jvm.options:
vim /etc/opensearch/jvm.options
Измените значение следующих параметров в файле:
-Xms1g
и-Xmx1g
например, на-Xms4g
и-Xmx4g
.Сохраните изменения и выйдите:
:wq
Запустите Opensearch:
systemctl start opensearch
Установите analysis-icu-2.14.0:
/usr/share/opensearch/bin/opensearch-plugin install file:/home/test/analysis-icu-2.14.0.zip
где */home/test/analysis-icu-2.14.0.zi*p замените на свой путь до analysis-icu-2.14.0.zip
Перезапустите Opensearch:
systemctl restart opensearch
Убедитесь, что запуск произошел успешно:
systemctl status opensearch
Добавьте службу в автозагрузку:
systemctl enable opensearch
Примечание
Рекомендуется выделять количество оперативной памяти не менее 25% от объема виртуальной машины. 25% - это оптимальное число, но если Opensearch будет расположен на отдельной ноде, то можно выделить 90% объема.
Архив analysis-icu-2.14.0.zip должен быть распакован из архива plugins.zip.
Установка PostgreSQL и TimescaleDB¶
Добавьте репозиторий PostgreSQL:
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Установите PostgreSQL 16:
sudo dnf install -y postgresql16-server postgresql16
Инициализируйте базу данных:
sudo /usr/pgsql-16/bin/postgresql16-setup initdb
Основные конфигурационные файлы postgresql находятся по пути:
/var/lib/pgsql/16/data/postgresql.conf
/var/lib/pgsql/16/data/pg_hba.conf
Запустите и включите службу PostgreSQL:
sudo systemctl start postgresql-16 sudo systemctl enable postgresql-16
Добавьте репозиторий TimescaleDB:
sudo sh -c 'echo "[timescaledb] name=TimescaleDB Repository baseurl=https://timescalereleases.blob.core.windows.net/rpm/centos/8/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://timescalereleases.blob.core.windows.net/rpm/centos/timescaledb-archive-key.asc" > /etc/yum.repos.d/timescaledb.repo'
Установите TimescaleDB:
sudo dnf install -y timescaledb-postgresql-16
Настройте TimescaleDB:
sudo vi /var/lib/pgsql/16/data/postgresql.conf
Добавьте строку в конец файла:
shared_preload_libraries = 'timescaledb'
Инициализируйте TimescaleDB:
sudo /usr/pgsql-16/bin/timescaledb-tune
В файле /var/lib/pgsql/16/data/postgresql.conf раскомментируйте и измените следующие параметры:
#listen_addresses = 'localhost'
,max_connections = 100
,#max_prepared_transactions = 0
наlisten_addresses = '*'
,max_connections = 1000
,max_prepared_transactions = 300
.Секции файла /var/lib/pgsql/16/data/pg_hba.conf должны приобрести следующий вид (допускается изменение параметров под индивидуальные потребности):
# Database administrative login by Unix domain socket local all postgres peer # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust # Allow replication connections from localhost, by a user with the # replication privilege. local replication all peer host replication all 127.0.0.1/32 scram-sha-256 host replication all ::1/128 scram-sha-256
Запустите postgresql:
systemctl start postgresql-16
Поменяйте пароль пользователю postgres:
sudo su su postgres psql -U postgres -h localhost alter user postgres with password 'notpostgres';
где
notpostgres
- пароль пользователя postgres.Создайте базу данных universe с помощью команды:
CREATE DATABASE universe;
Перезапустите PostgreSQL:
sudo systemctl restart postgresql-16
Проверьте установку:
psql -U postgres -d universe
Добавьте TimescaleDB в базу данных:
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
Установка Tomcat¶
Скачайте архив Tomcat 9 (ссылка из примера может устареть, в этом случае найдите актуальную версию на официальном сайте):
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.87/bin/apache-tomcat-9.0.87.tar.gz
Распакуйте скачанный архив в директорию /opt с помощью команды:
sudo tar -xvf ./apache-tomcat-9.0.87.tar.gz -C /opt
Выполните вход под root пользователем:
sudo su
Создайте пользователя tomcat:
sudo useradd -m -U -s /bin/false tomcat
Переименуйте apache-tomcat-9.х и дайте права пользователю tomcat на этот каталог:
cd /opt && mv apache-tomcat-9.х tomcat-9 ; chown -R tomcat:tomcat tomcat-9
9.х - актуальная версия tomcat. Важно: команда может не сработать, если версия tomcat различается - сверьте версию со скачанным архивом.
Создайте systemd файл tomcat по пути /etc/systemd/system/tomcat.service:
sudo vim /etc/systemd/system/tomcat.service
Вставьте в файл следующее содержимое:
[Unit] Description=Apache Tomcat Web Application Container After=network.target [Service] Type=forking Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.17.0.8-3.red80.1.x86_64 Environment=CATALINA_PID=/opt/tomcat-9/temp/tomcat.pid Environment=CATALINA_HOME=/opt/tomcat-9 Environment=CATALINA_BASE=/opt/tomcat-9 Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC' Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom' ExecStart=/opt/tomcat-9/bin/startup.sh ExecStop=/opt/tomcat-9/bin/shutdown.sh User=tomcat Group=tomcat UMask=0007 RestartSec=10 Restart=always [Install] WantedBy=multi-user.target
Важно: замените путь до JAVA на свой, если он отличается, в строке
Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.17.0.8-3.red80.1.x86_64
Сохраните изменения и выйдите:
:wq
Перечитайте демоны:
systemctl daemon-reload
Добавьте Tomcat в автозагрузку:
systemctl enable tomcat
Установка системы Universe¶
Дистрибутив системы Universe состоит из двух архивов (6.х - актуальная версия системы):
universe_mdm_ee_backend_v6.х.zip
universe_mdm_ee_frontend_v6.х.zip
Скопируйте дистрибутив Universe на сервер в удобное для вас место (в примере используется /home/test).
Распакуйте дистрибутив с помощью команды (6.х - актуальная версия системы):
mkdir universe_frontend universe_backend ; unzip universe_mdm_ee_backend_v6.х.zip -d ./universe_backend && unzip universe_mdm_ee_frontend_v6.х.zip -d ./universe_frontend
Скопируйте файлы frontend:
cp universe_frontend/universe-frontend.war /opt/tomcat-9/webapps/
Скопируйте файлы backend и выдайте права с помощью одной команды:
cp -v universe_backend/universe-backend.war /opt/tomcat-9/webapps/ && \ cp -v universe_backend/Tomcat/bin/setenv.sh /opt/tomcat-9/bin/ && \ chmod +x /opt/tomcat-9/bin/* && \ cp -rv universe_backend/Tomcat/conf/universe /opt/tomcat-9/conf/ && \ cp -v universe_backend/Tomcat/libs/* /opt/tomcat-9/lib/ && \ chown -R tomcat:tomcat /opt/tomcat-9
Заполните /opt/tomcat-9/bin/setenv.sh, приведя файл к следующему виду:
vim /opt/tomcat-9/bin/setenv.sh export JAVA_OPTS="${JAVA_OPTS} -Dunidata.conf=${CATALINA_HOME}/conf/universe -Dlogback.configurationFile=${CATALINA_HOME}/conf/universe/logback.xml" #export JRE_HOME=/usr/lib/jvm/java-8-oracle #export JAVA_HOME=/usr/lib/jvm/java-8-oracle export POSTGRES_ADDRESS="localhost:5432" export POSTGRES_USERNAME="postgres" export POSTGRES_PASSWORD="notpostgres" export DATABASE_NAME="universe" export SEARCH_CLUSTER_NAME="universe-os-cluster" export SEARCH_CLUSTER_ADDRESS="localhost:9200"
где:
POSTGRES_ADDRESS
- адрес ноды PostgreSQL;POSTGRES_USERNAME
- имя пользователя PostgreSQL:POSTGRES_PASSWORD
- пароль пользователя PostgreSQL;DATABASE_NAME
- имя базы данных;SEARCH_CLUSTER_NAME
- имя кластера Opensearch;SEARCH_CLUSTER_ADDRESS
- перечисление участников кластера Opensearch.Сохраните изменения:
:wq
Откройте для редактирования /opt/tomcat-9/conf/universe/backend.properties:
vim /opt/tomcat-9/conf/universe/backend.properties
Добавьте настройки пути хранения лога (в любое место файла в новой строке):
org.unidata.mdm.system.bitronix.tm.journal.disk.logPart1Filename=${CATALINA_HOME}/logs/btm1.tlog org.unidata.mdm.system.bitronix.tm.journal.disk.logPart2Filename=${CATALINA_HOME}/logs/btm2.tlog
Запустите tomcat:
systemctl start tomcat
После запуска Tomcat должно пройти некоторое время, после чего система Юниверс будет доступна по адресу http://<your-server-ip>:8080/universe-frontend.
После окончания установки выполните вход в систему.