Закрытый контур на Ubuntu

Внимание

Дисклеймер.

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

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

При старте системы требуется проверить backend лог на предмет ошибок ERROR. В случае их наличия - обратитесь к разработчику.

Примечание

Ниже приведен пример установки системы в закрытом контуре (без интернета) на сервер Ubuntu 22.04 minimal installation.

Примечание

Ограничьте права доступа на файл backend properties. Сервер приложений должен иметь права только на чтение файла. Администратор должен иметь права на чтение и редактирование. Также рекомендуется ограничить доступ ко всей директории с конфигурацией, оставив доступ на чтение и редактирование только серверу приложений и администратору.

Предварительные действия:

  • Архив с дистрибутивом предоставляется клиенту при приобретении продукта через менеджера компании "Юниверс Дата".

  • Распакуйте архив дистрибутива, который содержит скрипты для установки, в любое место. Содержимое будет храниться в каталоге DG_6.X_Ubuntu_22.04_offline_install. Далее этот каталог будет именоваться как <OFFLINE_REP>.

  • Скопируйте содержимое <OFFLINE_REP> на целевой сервер.

Установка с помощью bash скрипта

В корне директории <OFFLINE_REP> находится скрипт install.sh, который устанавливает систему автоматически со стандартными настройками.

Скрипт содержит 2 переменные:

  • POSTGRES_PASSWORD - берет значение из файла setenv.sh.

  • TOMCAT_HOME - указана стандартная директория для установки Universe.

Также скрипт состоит из функций, последовательность которых описана в конце файла:

  • checkdirs - проверяет все ли директории, необходимые для установки на месте,

  • check_files - проверяет наличие необходимых конфигурационных файлов в папке conf_files,

  • install_mc - устанавливает Midnight Commander,

  • install_vim - устанавливает Vim,

  • install_Opensearch - устанавливает и конфигурирует Opensearch,

  • install_postgres - устанавливает и конфигурирует postgresql,

  • install_java - устанавливает и конфигурирует OpenJDK,

  • install_universe - производит все необходимые действия для запуска Universe.

Перед запуском скрипта

Файлы конфигурации находятся в папке conf_files. Убедитесь, что вас устраивает стандартная конфигурация.

  1. Файл setenv.sh содержит основные настройки Universe:

    • export POSTGRES_ADDRESS="localhost:5432" - адрес сервера Postgres,

    • export POSTGRES_USERNAME="postgres" - пользователь БД postgres,

    • export POSTGRES_PASSWORD="notpostgres" - пароль пользователя Postgres,

    • export DATABASE_NAME="universe" - имя базы данных,

    • export SEARCH_CLUSTER_NAME="universe-os-cluster" - имя кластера Opensearch, которое должно соответствовать значению параметра cluster.name в opensearch.yml,

    • export SEARCH_CLUSTER_ADDRESS="localhost:9300" - адрес кластера Opensearch.

  2. Файл postgresql.conf содержит основные настройки PostgreSQL. Из перечня настроек необходимо изменить следующие:

    • max_prepared_transactions = 300

    • max_connections = 1000

    • port = 5432

    • listen_addresses = '*'

  3. Файл pg_hba.conf содержит настройки безопасности PostgreSQL. Можно изменить данную секцию в соответствии с требуемыми настройками безопасности:

    # 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
    
  4. Файл opensearch.yml содержит конфигурации Opensearch. Вы можете изменить: cluster.name: universe-os-cluster, path.data: /var/lib/opensearch, path.logs: /var/log/opensearch и другие параметры в соответствии с требованиями к настройкам системы.

  5. Файл tomcat.service необходим в создании tomcat daemon. Не нуждается в редактировании, будет автоматически скопирован скриптом.

Запуск скрипта

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

    sudo chmod +x ./install.sh
    
  2. Запустите скрипт от имени супер-пользователя:

    sudo ./install.sh
    
  3. По окончании исполнения скрипта Universe будет доступна по адресу: http://ваш_IP:8080/universe-frontend (логин и пароль: admin/admin)

После введения логина и пароля система запросит файл лицензии и смену пароля.

Ручная установка

Установка пакетов из дистрибутива

  1. Порядок установки. Рекомендуется соблюдать последовательность:
    1. Java (jre_11). Java требуется установить на всех серверах, где планируется запускать Opensearch и Tomcat.

    2. PostgreSQL + TimescaleDB (pgs16_tdb)

    3. OpenSearch (opensearch)

    4. Плагины OpenSearch (opensearch_plugins)

    5. Apache Tomcat (apache-tomcat-9.x.xx.tar.gz)

    6. Юниверс DG (213)

  2. Перейдите в целевую директорию репозитория:

    cd /путь/к/репозиторию/<имя_директории>
    

Где <имя_директории> соответствует устанавливаемому компоненту (например: pgs16_tdb, jre_11, opensearch). Apache Tomcat и Юниверс DG устанавливаются иначе. См. инструкции ниже.

  1. Установите все .deb пакеты в текущей директории:

    sudo dpkg -i *.deb
    
  2. Установите зависимости (если требуется):

    sudo apt install -f
    

Примечания:

  • Права доступа: Для установки (dpkg -i) требуются права sudo.

  • Зависимости: Команда apt install -f (шаг 4) критична для разрешения возможных отсутствующих зависимостей после установки из .deb файлов.

Установка Java

Примечание

Java требуется установить на всех серверах, где планируется запускать Opensearch, Tomcat.

  • Все пакеты, необходимые для корректной установки openJDK, располагаются по пути ./<OFFLINE_REP>/java.

  • Для установки openjdk необходимо перейти в эту директорию и выполнить команду:

    sudo dpkg -i *.deb
    

Конфигурация Opensearch

  1. Очистите файл конфигурации и откройте следующий файл с помощью любого редактора:

    sudo cp -i /etc/opensearch/opensearch.yml /etc/opensearch/opensearch.yml_before_ssl && > /etc/opensearch/opensearch.yml # Очистка файла
    sudo vi /etc/opensearch/opensearch.yml
    
  2. Укажите параметр cluster.name, например:

    cluster.name: dg-os-cluster
    

Имя кластера будет использоваться в настройках приложения для подключения. Каждый параметр в файле указываем с новой строки.

  1. По умолчанию Opensearch прослушивает только localhost, если приложение Tomcat устанавливается на другой сервер, и/или Opensearch будет использоваться в кластере, то необходимо разрешить подключения с других интерфейсов, указав параметр:

    network.host: 0.0.0.0
    
  2. Также необходимо открыть порт 9200 для нод/приложений, которые будут подключаться к Opensearch.

  3. Если планируется использование только одной ноды Opensearch - укажите параметр:

    discovery.type: single-node
    
  4. Укажите каталог для логов и данных:

    path.data: /var/lib/opensearch
    path.logs: /var/log/opensearch
    
  5. Если не требуется SSL шифрование и авторизация, то укажите параметр:

    plugins.security.disabled: true
    

Пример итогового файла opensearch.yml для запуска Opensearch на одной ноде без ssl и авторизации:

cluster.name: dg-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

Настройка PostgreSQL

Проверка версии

  • Переключитесь на пользователя Postgres и откройте psql:

    sudo su postgres psql
    
  • Проверьте версию Postgres:

    SELECT version();
    

Ожидаемый ответ: PostgreSQL 16.x on x86_64-pc-linux-gnu, compiled by gcc (AstraLinuxSE 8.3.0-6) 8.3.0, 64-bit

Основные конфигурационные файлы postgresql находятся по пути /var/lib/pgsql/data/postgresql.conf и /var/lib/pgsql/data/pg_hba.conf.

В файле /var/lib/pgsql/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

Установка TimescaleDB

Расширение TimescaleDB обязательно к установке для Postgresql 16.

Для установки:

  1. Перейдите в каталог TimescaleDB и выполните установку:

    dpkg -i *.deb
    
  2. Далее в файле /etc/postgresql/16/main/postgresql.conf раскомментируйте и измените следующие параметры:

    shared_preload_libraries='timescaledb'
    timescaledb.telemetry_level=off
    
  3. Перезагрузите postgresql для применения настроек:

    systemctl restart postgresql-16
    

В случае, если будет использоваться другая версия Postgres/Linux, используйте следующую информацию:

  • Добавьте repo, где buster - это debian10, ядро AstraLinux 1.7:

    echo "deb https://packagecloud.io/timescale/timescaledb/debian/ buster main" | sudo tee /etc/apt/sources.list.d/timescaledb.list
    wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | sudo apt-key add -
    
  • Скачайте пакеты в текущую директорию определенной версии postgresql-16 и TimescaleDB2.7.0:

    apt-get download timescaledb-2-oss-2.7.0-postgresql-16  timescaledb-2-loader-postgresql-16=2.7.0~debian10 timescaledb-tools=0.14.3~debian10 timescaledb-toolkit-postgresql-16=1:1.14.0~debian10
    

Установка Tomcat

Для запуска Tomcat требуется Java (описание установки см. выше).

  1. Распакуйте архив с Apache Tomcat в требуемую директорию:

    tar -xzf apache-tomcat-9.x.xx.tar.gz -C /путь/к/директории
    
  2. Создайте пользователя для запуска tomcat:

    sudo useradd -r tomcat -s /sbin/nologin
    
  3. Распакуйте дистрибутив из каталога apache-tomcat-9.0.*.tar.gz в каталог /opt/.

  4. Переименуйте каталог /opt/apache-tomcat-9.0.* в /opt/tomcat-9 (версия может отличаться).

  5. Удалите стандартные файлы и каталоги Manager App, которые могут содержаться в дистрибутиве tomcat из каталога /opt/tomcat-9/webapps:

    rm -rf /opt/tomcat-9/webapps/*
    
  6. Выдайте права на директорию tomcat для пользователя tomcat:

    chown -R tomcat:tomcat /opt/tomcat-9
    
  7. Добавьте сервис, создав файл tomcat.service:

    sudo vi /etc/systemd/system/tomcat.service
    

со следующим содержимым, задав параметры потребления RAM в CATALINA_OPTS:

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat-9/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat-9
Environment=CATALINA_BASE=/opt/tomcat-9
Environment='CATALINA_OPTS=-Xms1024M -Xmx2048M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

WorkingDirectory=/opt/tomcat-9/

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
  1. Примените конфигурацию сервисов:

    systemctl daemon-reload
    

Установка приложения Юниверс DG

Для запуска приложения требуется Tomcat и Java (описание установки см. выше).

Начало установки

  1. Установка .war файлов: в каталоге Application_Tomcat содержатся 2 архива: frontend или backend. В каждом архиве содержится .war файлы, которые необходимо скопировать в директорию /opt/tomcat-9/webapps/.

  2. Установка дополнительных параметров и библиотек: в архиве backend содержится каталог Tomcat, содержимое которого необходимо скопировать в каталог /opt/tomcat-9/. Находясь в распакованном каталоге архива backend, перейдите в каталог tomcat и скопируйте файлы в директорию сервиса:

    sudo cp -v bin/setenv.sh /opt/tomcat-9/bin/ && \
    sudo cp -rv conf/universe /opt/tomcat-9/conf/ && \
    sudo cp -v libs/* /opt/tomcat-9/lib/
    
  3. Предоставьте права на файлы для сервиса:

    chown -R tomcat:tomcat /opt/tomcat-9
    chmod +x /opt/tomcat-9/bin/*.sh
    

Настройка приложения

  1. Основные параметры задаются в переменных в файле setenv.sh. Отредактируйте файл:

    vi /opt/tomcat-9/bin/setenv.sh
    
  2. Установите/добавьте следующие переменные, установив значения соответствующие логическому имени переменной:

    # имеющийся параметр JAVA_OPTS НЕ затрагиваются
    
    # укажите параметры подключение к базе
    export POSTGRES_ADDRESS="localhost:5432"
    export POSTGRES_USERNAME="postgres"
    export POSTGRES_PASSWORD="notpostgres_change_me"
    export DATABASE_NAME="universe"
    
    # укажите параметры подключение к Opensearch:
    
    export SEARCH_CLUSTER_NAME="universe-os-cluster"
    export SEARCH_CLUSTER_ADDRESS="localhost:9200"
    # при использовании кластера Opensearch в переменной SEARCH_CLUSTER_ADDRESS перечисляются через запятую все ноды (hostname или ip), пример:
    # SEARCH_CLUSTER_ADDRESS=opensearch-node-1:9200,opensearch-node-2:9200,opensearch-node-3:9200
    

Настройка приложения для подключения к Opensearch через SSL

  1. Создайте каталог для сертификатов:

    sudo mkdir /opt/tomcat-9/ssl
    
  2. Скопируйте созданные на предыдущих шагах .jks файлы в созданный каталог:

    cp -v *\.jks /opt/tomcat-9/ssl
    chown -R tomcat:tomcat /opt/tomcat-9/ssl
    
  3. Основные параметры задаются в переменных в файле setenv.sh. Отредактируйте файл:

    vi /opt/tomcat-9/bin/setenv.sh
    
  4. Установите/добавьте следующие переменные, введя значения, соответствующие логическому имени переменной:

    export SEARCH_CLUSTER_NAME="universe-os-cluster"
    # в качестве адреса требуется использовать dns имя, которые прописано в сертификате в CN
    export SEARCH_CLUSTER_ADDRESS="opensearch-node-1:9200"
    # при использовании кластера Opensearch в переменной SEARCH_CLUSTER_ADDRESS перечисляются через запятую все ноды (hostname или ip), пример:
    # SEARCH_CLUSTER_ADDRESS=opensearch-node-1:9200,opensearch-node-2:9200,opensearch-node-3:9200
    
    export SEARCH_SECURITY_ENABLED=true
    # учетные данные для авторизации в Opensearch
    export SEARCH_ADMIN_LOGIN=admin
    export SEARCH_ADMIN_PASSWORD=admin
    
    # укажите сформированные для Opensearch jks файлы и пароли от них
    export SEARCH_TRUSTSTORE_PATH=/opt/tomcat-9/ssl/app-truststore.jks
    export SEARCH_TRUSTSTORE_PASSWORD=MY-TrustStore-pswd
    
    export SEARCH_KEYSTORE_PATH=/opt/tomcat-9/ssl/app-keystore.jks
    export SEARCH_KEYSTORE_PASSWORD=MY-keyStore-pswd
    

Кластерная настройка приложения

  1. Если планируется использование нескольких серверов Tomcat, то для настройки кластерной конфигурации приложения в файле /opt/tomcat-9/conf/universe/backend.properties на каждом сервере требуется изменить ряд настроек:

    vi /opt/tomcat-9/conf/universe/backend.properties
    
  2. Следующие параметры одинаковые для каждого узла приложения:

    # включите распределенный кэш
    org.unidata.dg.system.cache.tcp-ip.enabled=true
    # перечислите все ноды tomcat, ip или hostname
    org.unidata.dg.system.cache.tcp-ip.members=server-192-168-106-110,server-192-168-106-111
    
    # стандартный порт, при необходимости можно заменить, должен быть открыт для всех узлов кластера приложения
    org.unidata.dg.system.cache.port=5701
    
  3. Параметр ниже должен быть уникальный для каждого узла в кластере приложения, пример значения параметра:

    org.unidata.dg.system.node.id=node1
    #org.unidata.dg.system.node.id=nodeN # для остальных N серверов
    
  4. Пример сообщения в логе (logs/catalina.out), позволяющее определить то, что приложения объединились в кластер:

    INFO com.hazelcast.internal.server.tcp.TcpServerConnection.null [server-192-168-106-111]:5701 [dev] Initialized new cluster connection between /192.168.106.111:44589 and server-192-168-106-110/192.168.106.110:5701
    com.hazelcast.internal.cluster.ClusterService.null [server-192-168-106-111]:5701 [dev]
    
    Members {size:2, ver:2} [
            Member [server-192-168-106-110]:5701 - b15485d2-3121-4398-adf0-aee0147d442e
            Member [server-192-168-106-111]:5701 - c61b4e32-94da-4e6a-8f1d-269ccb7f0f10 this
    ]
    

Запуск приложения

  • Управление осуществляется через сервис, на каждом узле Tomcat:

    sudo systemctl start tomcat
    sudo systemctl status tomcat
    # sudo systemctl restart tomcat
    # sudo systemctl stop tomcat
    
  • Логи приложения находятся в каталоге /opt/tomcat-9/logs/.

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