Архитектура системы ECCM (Eltex Cloud Config Manager)

Граф зависимости сервисов друг от друга eccm-service-graph.htmleccm-service-graph-without-db-rbmq-redis.html (не для прода, на основе него можно нарисовать схему взаимосвязей сервисов для этой документации)

ECCM — централизованная система мониторинга и управления сетевым оборудованием, реализованная в виде набора микросервисов, развёртываемых в Docker-контейнерах.

1. Архитектура системы

Архитектурный паттерн

Микросервисная архитектура на основе Docker-контейнеров. Межсервисная коммуникация: асинхронная через RabbitMQ (Pub-Sub, RPC) + синхронная через gRPC/Protobuf.

Функциональные компоненты системы

Backend-микросервисы (Kotlin 2.1.21, Spring Boot 3.5, JDK 21)

СервисПортНазначение
backend-ui8081REST API, агрегация данных для фронтенда
device-manager8083Управление устройствами, шаблоны, конфигурации
monitoring-service8088SNMP-опрос, сбор телеметрии (горизонтально масштабируемый)
data-presenter8089Агрегация и презентация данных (горизонтально масштабируемый)
cron-manager8082Фоновые и периодические задачи
problem-manager8099Корреляция событий, обнаружение проблем
notification-service8100Уведомления по email и событиям
delivery-manager8102Доставка конфигураций на устройства
syslog-receiver514 (TCP/UDP)Приём syslog-сообщений от устройств
trap-receiver8098 (API), 162/UDP (trap)Приём SNMP trap
upgrader8084Обновление ПО устройств (TFTP :69/UDP, SFTP :2222/TCP)
ztp-manager8095Zero-Touch Provisioning
terminal-manager8097Web-терминал (SSH-сессии к устройствам)
identity-provider9999Аутентификация, авторизация, RBAC, OAuth/OIDC
license-service8103Лицензирование системы и функционала
vsat-manager8105Управление VSAT-устройствами

Инфраструктурные сервисы

СервисВерсияНазначение
TimescaleDBPostgreSQL 16.11 + TimescaleDB 2.24Основная база данных: реляционные данные + временные ряды (телеметрия). HA-режим: repmgr (failover)
Redis8.4.2Кэш, сессии пользователей. HA-режим: Sentinel
RabbitMQ4.2.4Message broker (AMQPS :5671). Межсервисная асинхронная коммуникация (Pub-Sub, RPC)
Nginx (ECCM Gateway)1.29.6API-шлюз, обратный прокси. Порты: 80/443
Kea DHCPDHCP-сервер для ZTP. Порт: 67/UDP
epg-serviceСервис лицензирования оборудования
keepalived + VRRPВиртуальный IP для HA-режима (cluster)
Jaeger1.8.1Distributed tracing (опционально)

Frontend (Web GUI)

Сетевая архитектура (Docker сети)

Режимы работы

StandaloneОднохостовое развёртывание. Один сервер со всеми сервисами
Cluster (HA)Горячее резервирование из 3 узлов: master / slave / witness. PostgreSQL repmgr (синхронная репликация, failover), Redis Sentinel, RabbitMQ-кластер, keepalived + VRRP (виртуальный IP). TLS-шифрование межсервисной связи
KubernetesРазвёртывание через Helm chart
AnsibleАвтоматизированная установка через Ansible playbooks (online/offline, с резервированием и без)

2. Используемое программное обеспечение

Backend

КомпонентТехнологияВерсия
ЯзыкKotlin2.1.21
ФреймворкSpring Boot3.5
JDKOpenJDK 2121
Система сборкиGradle + Jib

Frontend

КомпонентТехнологияВерсия
ФреймворкAngular20.3.18
ЯзыкTypeScript5.8.3
Среда выполненияNode.js20
Реактивная библиотекаRxJS7.5.5

Инфраструктура

КомпонентТехнологияВерсия
База данных (реляционная + timeseries)PostgreSQL + TimescaleDB16.11 + 2.24
Кэш и сессииRedis8.4.2
Message brokerRabbitMQ4.2.4
API-шлюзNginx1.29.6
DHCP-серверKea DHCP
Distributed tracingJaeger1.8.1

Среда развёртывания

КомпонентТехнологияВерсия
КонтейнеризацияDocker20.10+
Оркестрация контейнеровDocker Composev2.17+
KubernetesHelm chart
Автоматизация установкиAnsible

Поддерживаемые операционные системы

3. Предварительные условия и ограничения

Минимальные системные требования

ПараметрМинимумРекомендуется
CPU4 ядра8+ ядер
RAM8 ГБ16–32 ГБ
ДискЗависит от объёма телеметрии и числа устройств

Программные требования

Открытые порты

ПортПротоколСервисНазначение
80TCPECCM Gateway (Nginx)HTTP-доступ к веб-интерфейсу и API
443TCPECCM Gateway (Nginx)HTTPS-доступ (флаг --https)
162UDPtrap-receiverПриём SNMP trap от устройств
514TCP/UDPsyslog-receiverПриём syslog-сообщений (порт настраиваемый)
67UDPKea DHCPDHCP-сервер для ZTP
69UDPupgraderTFTP — загрузка firmware на устройства
2222TCPupgraderSFTP — обновление ПО

Сетевые требования

Ограничения HA-режима (Cluster)