Открытый контур на ALT Linux 10

Внимание

Дисклеймер.

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

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

Примечание

Ниже приведен пример установки системы на ALT Linux 10 в конфигурации "Сервер".

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

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

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

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

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

Настройка ОС

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

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

  1. Установка должна производиться пользователем с правами администратора (root):

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

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

    apt-get install mc vim -y
    

Установка OpenJDK

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

    apt-get install java-11-openjdk -y
    
  2. Проверьте установку пакета OpenJDK:

    java -version
    

    Корректный вывод должен выглядеть так:

    openjdk version "11.0.22.1" 2024-01-16
    OpenJDK Runtime Environment 18.9 (build 11.0.22.1+1)
    OpenJDK 64-Bit Server VM 18.9 (build 11.0.22.1+1, mixed mode, sharing)
    

Установка Opensearch

Рекомендуется устанавливать актуальную версию Opensearch 2.14.0.

  1. Предварительно установите обязательные пакеты:

    apt-get install wget dnf
    
  2. Скачайте пакет 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
    
  3. Скопируйте плагины для Opensearch в удобное место на сервере, в примере это будет домашняя директория /home/user.

  4. Перейдите в директорию /home/user, или ту, куда была произведена загрузка:

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

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

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

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

    cp /etc/opensearch/opensearch.yml /etc/opensearch/opensearch.yml_bak
    
  9. Откройте файл /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
    
  10. Сохраните изменения и выйдите:

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

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

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

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

    systemctl start opensearch
    
  15. Проверьте его состояние:

    systemctl status opensearch
    
  16. Установите analysis-icu-2.14.0. Для этого в директории с загруженным архивом analysis-icu-2.14.0.zip воспользуемся командой:

    /usr/share/opensearch/bin/opensearch-plugin install analysis-icu
    
  17. Перезапустите Opensearch:

    systemctl restart opensearch
    
  18. Убедитесь в успешном запуске:

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

    systemctl enable /usr/lib/systemd/system/opensearch.service
    

    Проверка запуска доступна с помощью команды:

    curl -X GET '127.0.0.1:9200'
    

Примечание

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

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

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

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

    sudo sh -c 'echo "[pgdg16]
    name=PostgreSQL 16 for ALT Linux 10
    baseurl=https://download.postgresql.org/pub/repos/yum/16/altlinux/10/\$basearch/
    enabled=1
    gpgcheck=0" > /etc/yum.repos.d/pgdg16.repo'
    
  2. Установите PostgreSQL 16:

    sudo /usr/pgsql-16/bin/postgresql16-setup initdb
    
  3. Инициализируйте базу данных:

    sudo -u postgres initdb --locale=en_US.UTF-8 --encoding=UTF8 -D /var/lib/postgres/data --data-checksums
    
  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/rhel/7/x86_64/
    enabled=1
    gpgcheck=0" > /etc/yum.repos.d/timescaledb.repo'
    
  6. Установите TimescaleDB:

    sudo yum install -y timescaledb-postgresql-16
    
  7. Настройте TimescaleDB. Отредактируйте файл конфигурации PostgreSQL:

    sudo vi /var/lib/pgsql/16/data/postgresql.conf
    

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

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

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

  8. В файле /var/lib/pgsql/16/data/postgresql.conf раскомментируйте и измените следующие параметры: #listen_addresses = 'localhost', max_connections = 100, #max_prepared_transactions = 0, port=5433 на listen_addresses = '*', max_connections = 1000, max_prepared_transactions = 300, port=5432.

    Секции файла /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
    
  9. Добавьте строку:

    shared_preload_libraries = 'timescaledb'
    
  10. Перезапустите PostgreSQL, чтобы изменения вступили в силу:

    sudo systemctl restart postgresql-16
    
  11. Подключитесь к PostgreSQL и убедитесь, что расширение TimescaleDB доступно:

    psql -U postgres -d postgres
    
  12. Внутри psql выполните команду:

    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 с помощью команды:

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

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

    useradd -m -U -s /bin/false tomcat
    
  5. Выйдите из него обратно в пользователя root:

    exit
    
  6. Переименуйте apache-tomcat-9.х и дайте права пользователю tomcat на этот каталог:

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

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

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

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

    [Unit]
    Description=Apache Tomcat Web Application Container
    After=network.target
    [Service]
    Type=forking
    Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.22.0.7-0.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

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

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

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

    systemctl enable tomcat
    

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

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

  • universe_mdm_ee_backend_v6.х.zip

  • universe_mdm_ee_frontend_v6.х.zip

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

  2. Распакуйте дистрибутив с помощью команды (6.х - актуальная версия системы):

    mkdir universe_frontend universe_backend && unzip universe_mdm_ee_backend_v6.10.2.zip -d ./universe_backend && unzip universe_mdm_ee_frontend_v6.10.2.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.

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