Руководство по установке Агредатор Лайт со СМЭВ4

Развертывание

Цели и функции системы

Программный продукт Агредатор представляет собой сервисную шину обмена данными, построенную на микросервисной архитектуре. Она интегрируется в существующую IT-инфраструктуру заказчика за счет открытого API и выполняет роль шлюза между заказчиком и поставщиками данных.

Требования к аппаратной части

Для развертывания Агредатора требуется инфраструктурные мощности:

  • СУБД PostgreSQL: 2 CPU 4 GB MEM 100 GB HDD
  • S3 (Minio): 2CPU 4 GB MEM 250 GB HDD

При этом можно запустить на одной ВМ с суммарной мощностью 4 CPU 4 GB MEM 300 GB HDD

Характеристика ВМ для Агредатора: 12 CPU 12 GB MEM 100 GB HDD

Требование к программной части

  • Docker - не ниже 20.10.16 (рекомендуемое 24.0.2+ (compose встроен))
  • docker-compose (отдельный) - не ниже 1.29.2 (рекомендуемое 2.19.0+)
  • ОС - Linux
  • Наличие развернутого агента СМЭВ4 ПОДД

Подготовительные работы

Все ВМ, на которых планируется запуск Агредатора должны иметь доступ до приватного Docker-реестра harbor.rnds.pro. В поставляемом архиве содержится вспомогательный скрипт для авторизации:

./docker-login.sh

Установка

Поставка платформы Агредатор состоит из набора сервисов, необходимых для его запуска:

  • agg_lite - является базовым сервисом выполняющим роль основного приложения Агредатор Лайт и включающий себя сервисы, необходимы для функционирования системы
  • agg_lite_postgres - база данных PostgreSQL
  • agg_lite_redis - база данных Redis
  • agg_lite_s3 - s3 хранилище Minio

Внимание ! Сервисы agg_lite_postgres (PostgreSQL), agg_lite_redis (Redis) и agg_lite_minio (Minio s3 object storage) являются дополнением к поставке и не рекомендуется для постоянного использования! Весь риск и последствия использования тестовых баз данных PostgreSQL и Redis, а также s3 Minio лежат на заказчике.

Базовой директорией размещения конфигурационных файлов сервиса зафиксирована директория в файловой системе:

/storage/configs/agg_lite

У текущего пользователя системы должны быть права на использование этой директории.

Следующий скрипт копирует все конфигурационные файлы из текущей директории в базовую директорию конфигурационных файлов:

./install.sh

Соответственно, перед установкой Агредатор Лайт необходимо провести его настройку.

Настройка

Все поставляемые сервисы запускаются в разных проектах docker-compose и могут быть гибко настроены, исходя из желания заказчика

Настройка инфраструктуры

PostgreSQL

Директория agg_postgres содержит в себе конфигурационные файлы для запуска СУБД PostgreSQL в Docker через docker-compose:

  • .env.postgres - файл с переменными окружения для Docker-контейнера PostgreSQL.
  • docker-compose.yml - файл с настройками запускаемого контейнера

Используемые переменные окружения

Переменная Описание Пример значения
COMPOSE_PROJECT_NAME Название проекта docker-compose agg_postgres
PG_IMAGE Название Docker образа с PostgreSQL harbor.rnds.pro/dockerhub/library/postgres
PG_TAG Версия PostgreSQL 14
PG_DATA_PATH Путь к томам PostgreSQL /storage/infra/agg_postgres/data
DATABASE_USER Суперпользователь БД postgres
DATABASE_PASS Пароль суперпользователя БД Vj8bR4QQI7pQuhhQ
DATABASE_PORT Внешний порт контейнера с БД 5433
Redis

Директория agg_redis содержит в себе конфигурационные файлы для запуска БД Redis в Docker через docker-compose:

  • .env.redis - файл с переменными окружения для Docker-контейнера Redis
  • docker-compose.yml - файл с настройками запускаемого контейнера

Используемые пременные окружения

Переменная Описание Пример значения
COMPOSE_PROJECT_NAME Название проекта docker-compose agg_redis
REDIS_IMAGE Название Docker образ с Redis harbor.rnds.pro/dockerhub/library/redis
REDIS_TAG Версия Redis 6.0
REDIS_DATA_PATH Путь к томам Redis /storage/infra/agg_redis/data
REDIS_PORT Внешний порт контейнера Redis 6379
Minio

Директория agg_minio содержит в себе конфигурационные файлы для запуска Minio s3 в Docker через docker-compose:

  • .env.minio - файл с переменными окружения для Docker-контейнера Minio
  • docker-compose.yml - файл с настройками запускамых контейнеров Minio

Используемые переменные окружения

Переменная Описание Пример значения
COMPOSE_PROJECT_NAME Название проекта docker-compose agg_minio
MINIO_IMAGE Название Docker образ с Minio harbor.rnds.pro/dockerhub/minio/minio
MINIO_TAG Версия Minio latest
MINIO_DATA_PATH Путь к томам Redis /storage/infra/agg_minio/data
MINIO_ROOT_USER Главный пользователь miniadmin
MINIO_ROOT_PASSWORD Пароль главного пользователя password
MINIO_API_PORT Внешний порт для API Minio 9000
MINIO_CONSOLE_PORT Внешний порт для веб-панели админиистрирования Minio 9090

Настройка ПО

Настройка приложения происходит в файле .env.lite, в котором расписаны используемые переменные окружения. Переменные разделены на несколько блоков, для удобства дальнейшей настройки, а также прокомментированны.

Блок "Docker Compose"

Содержит в себе информацию о запускаемом образе и версии приложения.

Описание переменных окружения

Переменная Описание Пример значения
COMPOSE_PROJECT_NAME Название проекта docker-compose agg_lite
AGG_LITE_IMAGE Используемый Docker-образ сервиса harbor.rnds.pro/aggredator/lite-smev4
AGG_LITE_TAG Запускаемая версия приложния 1.0.31
Блок "Database"

Содержит в себе настройки подключения сервисов к базам данных в СУБД Postgres

Описание переменных окружения

Переменная Описание Пример значения
SMEV4_DATABASE_URL Строка подключения к бд для smev4 postgres://postgres:Vj8bR4QQI7pQuhhQ@db.local:5433/aggredator-service-smev4
FILATOR_DATABASE_URL Строка подключения к бд для filator postgres://postgres:Vj8bR4QQI7pQuhhQ@db.local:5433/aggredator-service-filator
APIGW_DATABASE_URL Строка для подключения к бд для apigw postgres://postgres:Vj8bR4QQI7pQuhhQ@db.local:5433/aggredator-service-apigw

Для коннекта к бд используется db.local, который прописан в /etc/hosts контейнера. IP можно изменить, отредактирововав файл .env в корневой директории с конфигурационными файлами, либо добавив переменную окружения DATABASE_IP в .env.lite вручную:

DATABASE_IP="172.22.1.11" # IP адрес БД

Также в строке подключения можно явно указать IP-адрес/домен для БД:

SMEV4_DATABASE_URL="postgres://postgres:Vj8bR4QQI7pQuhhQ@172.22.1.11:5433/aggredator-service-smev4"
Блок "Smev4"

Содержит в себе настройки работы Агредатор-а со СМЭВ4

Описание пременных окружения

Переменная Описание Пример значения
USE_SMEV4 Использовать СМЭВ4 true
SMEV4_AGENT_HOST Адрес до агента СМЭВ4 ПОДД http://172.22.1.11

Официальная документация по СМЭВ 4 ПОДД

Блок "Filator"

Filator - это временное файловое хранилище с HTTP-интерфейсом. Предназначено для передачи файлов между сервисами в процессе работы. Устаревшие файлы удаляются через некоторое время. Подробное описание сервиса на вики

Используемая переменная окружения для настройки и пример ее значения:

FILATOR_STORAGE_CONFIGURATIONS='[
{
    "name": "db",
    "type": "db",
    "readonly": true
},
{
    "name": "s3",
    "type": "s3",
    "readonly": false,
    "use_dynamic_buckets": false,
    "endpoint": "http://172.22.1.11:9000",
    "access_key": "access_key",
    "secret_key": "secret_key",
    "bucket": "filator",
    "prefix": "filator",
    "open_timeout": 15,
    "read_timeout": 15,
    "ssl_verify_peer": false,
    "retry_limit": 0,
    "region": "region"
}]'
Блок "ApiGW"

Настройи сервиса apigw и его административной панели.

Описание переменных окружения

Переменная Описание Пример значения
APIGW_ADMIN_USER Имя главного пользователя в административной авнели admin
APIGW_ADMIN_PASS Пароль главного пользователя FHOzE4MzB2pJ171t
APIGW_WEB_PORT Порт, по которму будет доступна административная панель 8080
APIGW_REDIS_URL Строка подключения к БД Redis redis://redis.local:6379/0
Блок "Logging"

Настройка уровня логирования и места хранения логов приложения

Описание переменных окружения

Переменная Описание Пример значения
AGG_LOG_PATH Директория расположения файлов логов приложения на хостовой машине /storage/logs/agg_lite
EPGU_API_LOG_LEVEL Уровень логирования epgu-api info или debug
APIGW_LOG_LEVEL Уровинь логировнаия apigw info или debug
FILATOR_LOG_LEVEL Уровень логирования filator info или debug

Запуск

Если все компоненты, необходимые для работы размещены на одном хосте, то запуск осуществляется через следующий скрипт:

/storage/configs/agg_lite/run.sh

Запуск с использованием тестовых БД и S3 Minio необходимо передать параметр test:

cd /storage/configs/agg_lite
./run.sh test

Запуск вручную какого-либо сервиса:

cd /storage/configs/agg_lite/agg_service_name
./prepare docker compose up -d

После запуска платформы Агредатор, его работу можно проверить открыв административную панель управления по пути:

http://instance_ip:8081

и пройти авторизацию, используя заданные в .env.lite значения