DPA проектировалась как платформа, способная работать в различных инфраструктурных условиях — от пилотного развертывания до крупных распределённых производственных систем.
Ниже приведены три типовых сценария установки в Docker Compose. Каждый из них отражает реальную практику внедрений и может использоваться в промышленной эксплуатации:
- Все сервисы на одном сервере.
- DPA с внешней базой данных.
- Разделение DPA Server и DPA Host
Системные требования
- Docker Engine 24+ и Docker Compose v2.
- Открытые порты между узлами:
5432/tcpдля PostgreSQL.45616/tcpдля gRPC DPA Server.45619/tcpдля транспорта DPA Host (при разнесении Server/Host по разным машинам).6216/tcpи6217/tcpдля веб-интерфейса DPA Host.
- Каталоги для постоянных данных:
/usr/share/X-tensiveдля сервисов DPA./var/lib/postgresql/dataдля PostgreSQL.
DPA Host, DPA Server, микросервисы и PostgreSQL разворачиваются в рамках одного docker-compose проекта на одном физическом или виртуальном сервере. Архитектура максимально компактна: все контейнеры работают на одном узле, взаимодействуют через внутреннюю Docker-сеть, а база данных размещена локально для данного проекта.
Такой сценарий подходит для тестовых и демонстрационных развертываний, пилотных проектов, а также для небольших производственных площадок. Он требует минимальной сетевой настройки и практически не зависит от внешней инфраструктуры предприятия. Установка, обновление и резервное копирование в этом случае упрощены — вся система сосредоточена на одном сервере.
Ограничением является масштабируемость, которая определяется ресурсами выбранного узла. При росте количества подключенного оборудования или увеличении нагрузки потребуется более производительный сервер. Тем не менее, данный вариант полностью пригоден для промышленной эксплуатации при умеренной нагрузке и часто используется как рабочая конфигурация на небольших предприятиях.
Файл .env
| |
Файл docker-compose.yml
| |
Запуск: docker compose up -d
DPA Host, DPA Server и микросервисы продолжают работать в Docker, однако PostgreSQL размещается отдельно — как правило, на сервере базы данных, предоставленном заказчиком. В этом случае DPA подключается к внешнему экземпляру БД через сетевое соединение, а администрирование, резервное копирование и мониторинг базы данных выполняются ИТ-службой предприятия.
Такой подход применяется в организациях, где инфраструктура БД централизована и действует политика управления корпоративными сервисами. DPA интегрируется в существующую ИТ-среду, не создавая изолированного контура хранения данных. Это повышает управляемость со стороны заказчика и упрощает соблюдение внутренних регламентов.
С точки зрения архитектуры решение остаётся простым, однако требует корректной настройки сетевого доступа и учёта требований к производительности внешнего сервера БД. Данный сценарий является типовым для продакшн-развертываний среднего масштаба, где важна интеграция с корпоративной инфраструктурой, но нет необходимости физически разделять производственную и офисную сети.
В dpa-host и микросервисах укажите внешний хост БД, например:
POSTGRES_HOST=10.20.30.40POSTGRES_PORT=5432
Требования к внешней БД:
- Созданы базы:
dpa_host,dpa_audit,dpa_toolmanagement,dpa_messenger,dpa_kpi. - Созданы соответствующие пользователи с правами на свои базы.
- Разрешены подключения с узлов, где работают DPA-контейнеры.
Минимальный docker-compose.yml для DPA без PostgreSQL:
| |
Остальные микросервисы подключаются так же, как в сценарии 1, только с внешними POSTGRES_HOST/POSTGRES_PORT.
Архитектурное разделение компонентов системы: DPA Server размещается в производственной (цеховой) сети и взаимодействует с оборудованием напрямую, а DPA Host и микросервисы разворачиваются в корпоративной сети предприятия. Между сетями, как правило, устанавливается межсетевой экран с контролем трафика, а в отдельных случаях — однонаправленный шлюз (инфодиод).
Такое разделение отражает реальные требования промышленной инфраструктуры. Производственная сеть изолирована и защищена от внешнего доступа, в ней отсутствуют случайные абоненты и сторонние сервисы. DPA Server выполняет сбор и нормализацию данных, после чего передаёт их в DPA Host, где осуществляется хранение, аналитика и взаимодействие с пользователями и внешними системами.
Архитектура позволяет масштабировать систему горизонтально: к одному DPA Host может быть подключено несколько DPA Server. На практике один DPA Server рекомендуется использовать для подключения порядка 100 станков, однако при достаточных ресурсах возможна работа и с существенно большим количеством оборудования. При расширении проекта новые серверы могут добавляться по территориальному принципу или по группам оборудования.
Этот вариант рекомендуется для средних и крупных внедрений, где важны сегментация сети, информационная безопасность и возможность масштабирования. Он обеспечивает устойчивую архитектуру, соответствующую требованиям промышленной ИБ и корпоративной инфраструктуры.
Машина A — DPA Server
docker-compose.yml:
| |
Машина B — DPA Host и микросервисы
docker-compose.yml:
| |
Ключевые настройки для сценария:
DPA_SERVER_ADDRESSдолжен указывать на реальный адрес машины A (DNS или IP).DPA_HOST_ADDRESSдолжен указывать на реальный адрес машины B, доступный с машины A.- На машине B должен быть открыт порт
45619/tcp. - На машине B должен быть открыт диапазон
1000-1010поtcpиudpдля подписки на состояния, снапшоты и поиска станков. - Если PostgreSQL на третьей машине, машина B должна иметь доступ к
5432/tcpэтой БД.
Переменные .env для Docker Compose
| Переменная | Назначение | Пример |
|---|---|---|
COMPOSE_PROJECT_NAME | Имя compose-проекта | dpa |
DPA_VERSION | Тег образов DPA (dpa-host, dpa-server, микросервисы) | 6.9.5 |
TZ | Часовой пояс контейнеров (IANA) | Europe/Moscow |
SYSTEM_LOCALE | Системная локаль DPA Host | ru-RU |
DPA_DATA_PATH | Каталог данных DPA на хосте | ./dpa-data |
POSTGRES_DATA_PATH | Каталог данных PostgreSQL на хосте | ./postgres-data/16 |
HOST_HTTP_PORT | Публикуемый HTTP-порт DPA Host | 80 |
HOST_HTTPS_PORT | Публикуемый HTTPS-порт DPA Host | 443 |
POSTGRES_HOST | Адрес PostgreSQL | dpa-postgres или 10.20.30.40 |
POSTGRES_PORT | Порт PostgreSQL | 5432 |
POSTGRES_ADMIN_USER | Админ-пользователь PostgreSQL-контейнера | postgres |
POSTGRES_ADMIN_PASSWORD | Пароль админ-пользователя PostgreSQL-контейнера | postgres |
POSTGRES_MULTIPLE_DATABASES | Базы, автоматически создаваемые dpa-postgres | dpa_host, dpa_audit, dpa_toolmanagement, dpa_messenger, dpa_kpi |
DPA_SERVER_ADDRESS | Адрес DPA Server для автонастройки DPA Host | dpa-server или server.company.local |
DPA_HOST_ADDRESS | Адрес DPA Host для регистрации транспорта на DPA Server | dpa-host или host.company.local |
DPA_AUDIT_ADDRESS | Адрес микросервиса Audit | dpa-audit |
DPA_AUDIT_PORT | Порт микросервиса Audit | 5880 |
DPA_KPI_ADDRESS | Адрес микросервиса KPI | dpa-kpi |
DPA_KPI_PORT | Порт микросервиса KPI | 5780 |
DPA_MESSENGER_ADDRESS | Адрес микросервиса Messenger | dpa-messenger |
DPA_MESSENGER_PORT | Порт микросервиса Messenger | 6080 |
DPA_TOOLMANAGEMENT_ADDRESS | Адрес микросервиса ToolManagement | dpa-toolmanagement |
DPA_TOOLMANAGEMENT_PORT | Порт микросервиса ToolManagement | 6180 |
DPA_VNC_ADDRESS | Адрес микросервиса VNC | dpa-vnc |
DPA_VNC_PORT | Порт микросервиса VNC | 5980 |
Переменные окружения контейнеров
dpa-postgres:
POSTGRES_MULTIPLE_DATABASES- список БД для автосоздания.PGUSER- пользователь для внутренних команд (pg_isreadyи пр.).POSTGRES_USER- админ-пользователь PostgreSQL.POSTGRES_PASSWORD- пароль админ-пользователя PostgreSQL.TZ- часовой пояс контейнера PostgreSQL.
dpa-server:
TZ- часовой пояс контейнера DPA Server.
dpa-host:
DatabaseConnection__Provider- провайдер БД:postgresqlилиsqlserver.DatabaseConnection__ConnectionString- строка подключения к БД DPA Host.TZ- часовой пояс контейнера.SystemLocale- локаль по умолчанию для новых пользователей.DefaultDpaServerAddress- адрес DPA Server для автоинициализации.DefaultHostAddress- адрес DPA Host, который будет зарегистрирован на DPA Server.Microservices__ToolManagement__Address,Microservices__ToolManagement__Port.Microservices__Messenger__Address,Microservices__Messenger__Port.Microservices__Kpi__Address,Microservices__Kpi__Port.Microservices__Vnc__Address,Microservices__Vnc__Port.Microservices__Audit__Address,Microservices__Audit__Port.
dpa-audit, dpa-kpi, dpa-messenger, dpa-toolmanagement:
urls- адрес и порт прослушивания микросервиса (http://*:PORT).DatabaseConnection__Provider-postgresqlилиsqlserver.DatabaseConnection__ConnectionString- строка подключения к БД микросервиса.TZ- часовой пояс контейнера.
dpa-vnc:
urls- адрес и порт прослушивания (http://*:5980).TZ- часовой пояс контейнера.
Проверка состояния сервисов
Убедитесь, что все контейнеры находятся в состоянии running:
| |
DPA Host доступен по адресу http://<host>:<HOST_HTTP_PORT>. Если интерфейс недоступен:
- проверьте публикацию портов,
- убедитесь, что порт не занят другим сервисом,
- проверьте правила firewall на уровне хоста.
Для анализа используйте логи контейнеров:
| |
Ошибки подключения к БД обычно видны сразу после старта.
Синхронизация времени
Корректное время является обязательным требованием для расписаний, токенов авторизации, аудита, корреляции логов, подписок и событий. Разница времени между узлами может приводить к трудно диагностируемым проблемам.
Рекомендуем синхронизировать системное время хостов, например, с помощью NTP, Chrony или Windows Time Service.
Установите одинаковый TZ во все контейнеры DPA и PostgreSQL.
Используйте IANA-таймзону, например: Europe/Moscow, Asia/Yekaterinburg, UTC.
Проверка времени внутри контейнеров:
| |
Время должно совпадать (с учётом часового пояса).
Пример настройки на Linux-хосте:
| |
После изменения настроек рекомендуется перезапустить контейнеры.
Подробные инструкции по установке, настройке и эксплуатации DPA доступны в базе знаний: kb.rundpa.com