Открытый контур на Red OS 8

Внимание

Дисклеймер.

Инструкция содержит примерный порядок действий по установке. Инструкция призвана описать логику действий по установке на простом, абстрактном примере. В зависимости от инфраструктуры сервера (кластера) и его конфигурации, вам могут понадобиться дополнительные или иные шаги.

Эта инструкция не должна восприниматься буквально, а использоваться в качестве основы действий.

Примечание

Ниже приведен пример установки системы на РЕД ОС 8 в стандартной редакции и конфигурации "Сервер".

Предупреждение

Инструкция актуальна для установки Юниверс MDM версии 6.9 и старше, так как система перешла с Elasticsearch на Opensearch.

Предупреждение

В Юниверс MDM версии 6.11 было осуществлено обновление PostgreSQL до версии 16.3, в связи с этим теперь требуется обязательная установка расширения TimescaleDB для корректной работы с большими объемами данных. Перед установкой рекомендуется проверить совместимость вашей версии PostgreSQL и версии TimescaleDB.

Шаги установки:

Настройка ОС

Для удобства установки необходимо настроить на целевой машине демон SSH (в конфигурации "Сервер" данный компонент настроен по умолчанию).

Пользователь должен иметь права администратора при использовании sudo (по умолчанию при создании пользователя во время установки ОС).

Установка пакетов

  1. Зайдите под root пользователем:

    sudo su
    
  2. Выполните обновление системы после свежей установки:

    dnf update -y
    
  3. Выполните установку Midnight Commander и Vim (опционально):

    dnf install mc vim -y
    

Установка OpenJDK

  1. Выполните установку OpenJDK:

    dnf install java-11-openjdk.x86_64 -y
    
  2. Проверьте установку пакета 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.

  1. Скачайте пакет 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
    
  2. Скопируйте необходимые вам плагины для Opensearch в удобное место на сервере (в примере используется домашняя директория /home/test).

  3. Перейдите в директорию /home/test:

    cd /home/test
    
  4. Распакуйте архив:

    unzip plugins.zip
    
  5. Скопируйте содержимое распакованной директории hunspell в каталог настроек Opensearch:

    cp -rv ./hunspell /etc/opensearch/
    
  6. Задайте корректного владельца скопированной директории:

    chown -R opensearch:opensearch /etc/opensearch/hunspell/
    
  7. Создайте копию конфигурационного файла opensearch.yml:

    cp /etc/opensearch/opensearch.yml /etc/opensearch/opensearch.yml_bak
    
  8. Очистите содержимое оригинального файла:

    echo > /etc/opensearch/opensearch.yml
    
  9. Откройте файл для редактирования:

    vim /etc/opensearch/opensearch.yml
    
  10. Наполняем файл следующим содержимым:

    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
    
  11. Сохраните изменения и выйдите:

    :wq
    
  12. Настройте количество выделяемой оперативной памяти для Opensearch. Для этого откройте файл /etc/opensearch/jvm.options:

    vim /etc/opensearch/jvm.options
    
  13. Измените значение следующих параметров в файле: -Xms1g и -Xmx1g например, на -Xms4g и -Xmx4g.

  14. Сохраните изменения и выйдите:

    :wq
    
  15. Запустите Opensearch:

    systemctl start opensearch
    
  16. Установите 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

  17. Перезапустите Opensearch:

    systemctl restart opensearch
    
  18. Убедитесь, что запуск произошел успешно:

    systemctl status opensearch
    
  19. Добавьте службу в автозагрузку:

    systemctl enable opensearch
    

Примечание

  • Рекомендуется выделять количество оперативной памяти не менее 25% от объема виртуальной машины. 25% - это оптимальное число, но если Opensearch будет расположен на отдельной ноде, то можно выделить 90% объема.

  • Архив analysis-icu-2.14.0.zip должен быть распакован из архива plugins.zip.

Установка PostgreSQL и TimescaleDB

  1. Добавьте репозиторий PostgreSQL:

    sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    
  2. Установите PostgreSQL 16:

    sudo dnf install -y postgresql16-server postgresql16
    
  3. Инициализируйте базу данных:

    sudo /usr/pgsql-16/bin/postgresql16-setup initdb
    

    Основные конфигурационные файлы postgresql находятся по пути:

    • /var/lib/pgsql/16/data/postgresql.conf

    • /var/lib/pgsql/16/data/pg_hba.conf

  4. Запустите и включите службу PostgreSQL:

    sudo systemctl start postgresql-16
    sudo systemctl enable postgresql-16
    
  5. Добавьте репозиторий 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'
    
  6. Установите TimescaleDB:

    sudo dnf install -y timescaledb-postgresql-16
    
  7. Настройте TimescaleDB:

    sudo vi /var/lib/pgsql/16/data/postgresql.conf
    
  8. Добавьте строку в конец файла:

    shared_preload_libraries = 'timescaledb'
    
  9. Инициализируйте TimescaleDB:

    sudo /usr/pgsql-16/bin/timescaledb-tune
    
  10. В файле /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
    
  11. Запустите postgresql:

    systemctl start postgresql-16
    
  12. Поменяйте пароль пользователю postgres:

    sudo su
    su postgres
    psql -U postgres -h localhost
    alter user postgres with password 'notpostgres';
    

    где notpostgres - пароль пользователя postgres.

  13. Создайте базу данных universe с помощью команды:

    CREATE DATABASE universe;
    
  14. Перезапустите PostgreSQL:

    sudo systemctl restart postgresql-16
    
  15. Проверьте установку:

    psql -U postgres -d universe
    
  16. Добавьте TimescaleDB в базу данных:

    CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
    

Установка Tomcat

  1. Скачайте архив Tomcat 9 (ссылка из примера может устареть, в этом случае найдите актуальную версию на официальном сайте):

    wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.87/bin/apache-tomcat-9.0.87.tar.gz
    
  2. Распакуйте скачанный архив в директорию /opt с помощью команды:

    sudo tar -xvf ./apache-tomcat-9.0.87.tar.gz -C /opt
    
  3. Выполните вход под root пользователем:

    sudo su
    
  4. Создайте пользователя tomcat:

    sudo useradd -m -U -s /bin/false tomcat
    
  5. Переименуйте apache-tomcat-9.х и дайте права пользователю tomcat на этот каталог:

    cd /opt && mv apache-tomcat-9.х tomcat-9 ; chown -R tomcat:tomcat tomcat-9
    

    9.х - актуальная версия tomcat. Важно: команда может не сработать, если версия tomcat различается - сверьте версию со скачанным архивом.

  6. Создайте systemd файл tomcat по пути /etc/systemd/system/tomcat.service:

    sudo vim /etc/systemd/system/tomcat.service
    
  7. Вставьте в файл следующее содержимое:

    [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

  8. Сохраните изменения и выйдите:

    :wq
    
  9. Перечитайте демоны:

    systemctl daemon-reload
    
  10. Добавьте Tomcat в автозагрузку:

    systemctl enable tomcat
    

Установка системы Universe

Дистрибутив системы Universe состоит из двух архивов (6.х - актуальная версия системы):

  • universe_mdm_ee_backend_v6.х.zip

  • universe_mdm_ee_frontend_v6.х.zip

  1. Скопируйте дистрибутив Universe на сервер в удобное для вас место (в примере используется /home/test).

  2. Распакуйте дистрибутив с помощью команды (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
    
  3. Скопируйте файлы frontend:

    cp universe_frontend/universe-frontend.war /opt/tomcat-9/webapps/
    
  4. Скопируйте файлы 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
    
  5. Заполните /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.

  6. Сохраните изменения:

    :wq
    
  7. Откройте для редактирования /opt/tomcat-9/conf/universe/backend.properties:

    vim /opt/tomcat-9/conf/universe/backend.properties
    
  8. Добавьте настройки пути хранения лога (в любое место файла в новой строке):

    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
    
  9. Запустите tomcat:

    systemctl start tomcat
    

После запуска Tomcat должно пройти некоторое время, после чего система Юниверс будет доступна по адресу http://<your-server-ip>:8080/universe-frontend.

После окончания установки выполните вход в систему.