Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 4 Следующий »

Архитектура системы 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.

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

  • Управление устройствами — добавление, группировка, конфигурирование (высокоуровневое: интерфейсы, VLAN, SNMP, VRF, зоны безопасности, профили, правила, доступ), шаблоны
  • Мониторинг — SNMP-опрос, телеметрия, инвентаризация, дашборды, карты сети
  • Обнаружение проблем (Fault Management) — регистрация событий (syslog, SNMP trap), корреляция, MIB, уведомления (email), проблемы устройств
  • Обновление ПО — централизованное обновление firmware через TFTP/SFTP
  • Web-терминал — SSH-доступ к устройствам через браузер
  • Zero-Touch Provisioning (ZTP) — автоматическая начальная конфигурация устройств через DHCP
  • Управление сетью — группы, дерево объектов, поиск, высокоуровневое конфигурирование (L2/L3, VxLAN, EVPN)
  • Лицензирование — системные лицензии, лицензии для устройств
  • Резервное копирование — бэкап базы данных
  • Публичное API — REST API для интеграции со внешними системами
  • Управление WLC — профили SSID, RADIUS, Portal, Airtune, WIDS, привязки, мониторинг точек доступа
  • Управление MES — профили (общий, VLAN, Interface L2, Switchport, Storm Control), VxLAN, EVPN Multihoming, IP-фабрика
  • Управление VSAT — MCPC/SCPC, MF-TDMA, мониторинг VSAT-устройств
  • Управление кластерами — мониторинг и управление кластерными устройствами

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)

  • Angular 20.3.18, TypeScript 5.8.3, RxJS 7.5.5
  • Node.js 20 (среда сборки)
  • Cytoscape — визуализация сетевой топологии
  • Monaco Editor — редактор конфигураций
  • xterm — web-терминал SSH

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

  • external — 172.20.0.0/20 — публичные сервисы (доступ к устройствам, API)
  • internal — 172.21.0.0/20 — межсервисная коммуникация (изолированная)

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

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

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

  • Ubuntu 22/24
  • RED OS 7 / 8
  • AstraLinux 1.7.5
  • ALT Linux

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

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

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

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

  • Docker 20.10+ (AstraLinux: docker-compose-v2 ≥ 2.17.0)
  • OpenJDK 21 — для сборки из исходных кодов
  • Make — для сборки проекта
  • curl, conntrack — для установки и работы conntrack-таблиц

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

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

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

  • Сервер должен иметь доступ к управляемым устройствам по протоколам: SSH, SNMP, TFTP/SFTP
  • Две Docker-сети: external (устройства/внешние сервисы) и internal (межсервисная коммуникация)
  • Для HA-режима требуется виртуальный IP (keepalived + VRRP)

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

  • Кластер состоит из 3 узлов: master, slave, witness
  • Всё межсервисное общение в кластере шифруется TLS
  • PostgreSQL: repmgr (синхронная репликация master ↔ slave, witness для quorum)
  • Redis: Sentinel (failover при недоступности master)
  • RabbitMQ: кластеризация с TLS (AMQPS)
  • Необходимы TLS-сертификаты (кластерный сертификат + root CA)
  • Нет меток