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

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

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

ОПИСАНИЕ ПРОЦЕССА ДЕЯТЕЛЬНОСТИ

Структурная схема платформы

Архитектура серверной части платформы Elph обеспечивает функционирование основных сервисов системы, включающих обработку сообщений, маршрутизацию данных, взаимодействие с внешними и внутренними системами, а также управление клиентскими подключениями.
Платформа Elph реализована в микросервисной архитектуре и состоит из следующих основных компонентов:

  • Elph API;
  • Elph Proxy;
  • SSO;
  • Elph Chat Server;
  • Status Service;
  • Call History Service;
  • File Service;
  • Mini-apps Service;
  • Address book;
  • Push gateway;
  • RabbitMQ.

Платформа взаимодействует с корпоративной инфраструктурой заказчика:

  • SSW (Softswitch/IP-АТС ECSS-10) осуществляет коммутацию вызовов, использующих различные протоколы сигнализации и стандарты кодирования медиапотоков, осуществляя их взаимное согласование (при необходимости — перекодирование);
  • E-SBC (Session Border Controller) — обеспечивает безопасное подключение удаленных пользователей и прохождение медиатрафика через NAT;
  • Active Directory/LDAP — используется для аутентификации и управления пользователями;
  • Monitoring System (Prometheus/Grafana) — сбор и визуализация метрик производительности.

Система также взаимодействует с внешними сервисами:

  • Apple APN — для push-уведомлений iOS-клиентов;
  • Google FCM — для push-уведомлений Android-клиентов.

ОСНОВНЫЕ ТЕХНИЧЕСКИЕ РЕШЕНИЯ

Elph Server

Компонент Elph Server развертывается во внутреннем сетевом сегменте, обеспечивает основную бизнес-логику платформы, взаимодействие с ECSS-10 через Elph-API и управление сервисами. Развертывается на Ubuntu или Astra Linux. Основное ПО развертывается в виде контейнеров Docker и состоит из следующих модулей:

  • SSO (Keycloak) — система аутентификации, позволяет клиенту получить доступ ко всем сервисам системы с помощью одного набора учётных данных;
  • Elph Chat Server — обеспечивает обмен сообщениями, передачу файлов и хранение истории переписки;
  • Status Service — сервис статусов пользователей на основе API Presence;
  • Call History Service — хранит историю вызовов абонентов, взаимодействует с SSW;
  • File Service — S3 хранилище пользовательских данных;
  • Mini-Apps Service — сервис для интеграции внешних веб-приложений в Elph;
  • Address book — сервис корпоративной адресной книги;
  • Push gateway — сервис, который позволяет отправлять уведомления (push-сообщения) на клиентские приложения. Взаимодействует с внешними сервисами (Apple APN, Google FCM);
  • RabbitMQ — брокер сообщений (message broker), реализующий протокол AMQP (Advanced Message Queuing Protocol). Промежуточный слой для асинхронной обработки сообщений между приложениями.

Elph Proxy

Компонент Elph Proxy развертывается в DMZ и обеспечивает:

  • Единую точку входа для клиентов по порту TCP/443;
  • Перенаправление запросов к внутренним компонентам на основе URL-префиксов;
  • Терминацию SSL-шифрования.

Развертывается на Ubuntu или Astra Linux. Требует 2 CPU, 4 GB RAM и 30 GB HDD.

ECSS Elph-API

Обеспечивает интеграцию с ECSS-10, управление конференциями и взаимодействие с другими компонентами системы;

Компонент ECSS Elph-API устанавливается на том же хосте, что и ECSS-10, и обеспечивает:

  • Взаимодействие Elph с программной АТС ECSS-10;
  • Обработку вызовов в режиме ассистента и конференций в режиме SIP;
  • Интеграцию с телефонией.

СЕТЕВЫЕ ВЗАИМОДЕЙСТВИЯ

Схема сетевого взаимодействия в закрытом контуре

Мобильный клиент Elph IOS не может работать в закрытом контуре, так как все вызовы на устройствах IOS осуществляются с помощью «push-сообщений», которые проходят через Apple APN. Поэтому для их отправки у SSW должен быть доступ к APNs (api.push.apple.com:443).

Полная схема сетевого взаимодействия

При такой схеме развёртывания абоненты elph-desktop, находящиеся за NAT, сначала проходят через stun-server для успешной регистрации на e-sbc.

Для работы push-нотификаций на SSW должны быть активированы настройки push-сервисов, а у ECSS-кластера должен быть доступ к сервисам push-сообщений Android (Firebase Cloud Messaging) и Apple (Apple Push Notification Service).

Сводная таблица сетевых взаимодействий

В таблице ниже собраны все порты, упомянутые в документе. Направление «Исходящий» обычно означает, что соединение инициируется самим компонентом, но ответный трафик должен быть разрешен на указанный порт.

Компонент / СервисЦелевой компонент / НазначениеПорт / ПротоколПримечания
Клиенты (Elph Desktop, Mobile)
Elph Desktop/Android/IOSElph ProxyTCP/443 (HTTPS/WSS)Основное соединение для данных
Elph DesktopE-SBC / STUN ServerUDP/3478, UDP/5349Установление голосовых/видеосоединений (STUN)
Elph Desktop/Android/IOSE-SBCUDP/5060 (SIP), UDP/RTP 10000-20000SIP-сигнализация и медиапотоки (через E-SBC)
Elph iOSApple APN (api.push.apple.com)TCP/443 (HTTPS)Исходящее с iOS-устройств. Обязательно для работы.
Elph AndroidGoogle FCMTCP/443 (HTTPS)Исходящее с Android-устройств. Обязательно для работы в экономичном режиме и режиме push proxy.
Elph Proxy
Elph Proxy (в DMZ)Клиенты (внешние)TCP/443 (HTTPS/WSS)Входящее. Единая точка входа.
Elph ProxyElph Server (внутр. сеть)TCP/3000, 3002, 3003, 3005, 3007, 3011, 4000, 5672, 8080, 8098,  8282Исходящее. Перенаправление трафика на внутренние сервисы.
Elph Server (и внутренние сервисы)
Elph Server / МикросервисыECSS SoftswitchTCP/8086Исходящее. (ECSS Web API)
Elph Server / МикросервисыECSS Softswitch База данных (My SQL)TCP/3306Исходящее. Требуется разрешить в базе MySQL на SSW подключения с адреса Elph Server.
SSOElph Server / Клиенты (через Proxy)TCP/8282Входящее.
SSOElph ServerTCP/9100 (health check)Входящее.
Chat ServerElph Server / Клиенты (через Proxy)TCP/3011Входящее.
Chat ClientElph Server / Клиенты (через Proxy)TCP/8080Входящее.
Call History ServiceElph Server / Клиенты (через Proxy)TCP/3000Входящее
Status ServiceElph Server / Клиенты (через Proxy)TCP/3002Входящее. 
File Service (S3)Elph Server / Клиенты (через Proxy)TCP/3005Входящее. для S3-совместимого хранилища.
Mini Apps ServiceElph Server / Клиенты (через Proxy)TCP/3007Входящее.
Address BookElph Server / Клиенты (через Proxy)TCP/4000Входящее. 
Push GatewayElph Server / Клиенты (через Proxy)TCP/3003Входящее. 
RabbitMQElph ServerTCP/5672Входящее.
ECSS Elph-API & SSW
ECSS Elph-APIECSS-10 (Softswitch)TCP/9999 (Mediator)Исходящее. Управление вызовами и конференциями.
ECSS-10 (SSW)E-SBCUDP/5060 (SIP), UDP/RTP 10000-20000Входящее/Исходящее. SIP-сигнализация и медиапотоки.
ECSS-10 (SSW)Apple APN (api.push.apple.com)TCP/443 (HTTPS)Исходящее. Для отправки push-уведомлений на iOS.
ECSS-10 (SSW)Google FCMTCP/443 (HTTPS)Исходящее. Для отправки push-уведомлений на Android.
Взаимодействие с инфраструктурой
Платформа (Elph Server, SSO)Active Directory / LDAPTCP/389 (LDAP), TCP/636 (LDAPS)Исходящее. Аутентификация и синхронизация пользователей.
Платформа (все компоненты)Monitoring (Prometheus)TCP/9090 (и др.)Исходящее. Отправка метрик.
Monitoring (Grafana)Платформа (все компоненты)TCP/3000 (и др.)

Ключевые выводы по схемам:

  • Elph Proxy выступает единой точкой входа (порт 443) и перенаправляет трафик на внутренние сервисы;

  • Для работы Elph Desktop вне корпоративной сети требуется доступ к STUN-серверу (обычно UDP-порты 3478, 5349) для установления VoIP-соединений клиентами за NAT;

  • Для работы мобильных клиентов (iOS/Android) необходимы исходящие подключения к внешним сервисам Apple APN и Google FCM (оба на TCP/443) как для самих клиентов, так и для серверов. Для Android не обязательны, в случае, если не используется «экономичный» режим и режим «push proxy»;

  • iOS-клиенты не могут работать в полностью изолированном контуре из-за обязательного использования Apple APN.

Cхема медиа потоков в закрытом контуре

ВЗАИМОДЕЙСТВИЕ СО СМЕЖНЫМИ СИСТЕМАМИ

Взаимодействие с внутренними смежными системами

Платформа Elph взаимодействует со следующими внутренними смежными системами:

  • ECSS-10 — взаимодействие осуществляется по протоколам HTTP/HTTPS и WebSocket (WSS) на порты 9999 (Mediator) и 9006 (ECSS Web API). Используется для управления вызовами, конференциями и получения информации о пользователях;
  • Active Directory — взаимодействие по протоколу LDAP. Используется для аутентификации и синхронизации пользователей.

Взаимодействие с внешними системами

Платформа Elph взаимодействует со следующими внешними системами:

  • Apple APN — взаимодействие по протоколу HTTPS на порт TCP/443 для отправки push-уведомлений на iOS-устройства;
  • Google FCM — взаимодействие по протоколу HTTPS на порт TCP/443 для отправки push-уведомлений на Android-устройства;
  • E-SBC — взаимодействие по протоколам SIP и RTP для обеспечения голосовой и видео связи с удаленными пользователями.

СИСТЕМНЫЕ ТРЕБОВАНИЯ ДЛЯ ВСЕХ КОМПОНЕНТОВ

При выборе сервера необходимо учитывать следующие системные требования (требования предоставляются к VM без учета резервирования системы, требования к размеру диска для Chat Server зависят от общей активности пользователей при передаче файлов):

Сводная таблица системных требований для виртуальных машин, исходя из нагрузки, около 1000 пользователей.

Все требования указаны с учётом системных требований самой ОС, на которой будет установлен пакет. При компоновке некоторых сервисов вместе на одном хосте системные требования не суммируются. Вариант установки всех сервисов на одном хосте не рекомендован с точки зрения безопасности, но возможен.

Название VM

CPU core, Xeon

RAM, Gb

HDD, Gb

Elph API (подробнее по ссылке)

Требования релевантны с SSW ECSS10, так как пакет устанавливается на том же хосте
Chat Server (подробнее по ссылке)4, 64-bit x86 CPUs
16200
Elph Proxy (подробнее по ссылке)2, 64-bit x86 CPUs
430
Elph Proxy + Chat-Server4, 64-bit x86 CPUs16200
Всё на одном хосте16, 64-bit x86 CPUs32300

Более точные требования и примеры расчёта можно найти в описании к отдельным компонентам системы.

Таблица совместимости компонентов UC с различными OC
Название компонентаUbuntu 18.04Ubuntu 20.04Ubuntu 22.04Ubuntu 24.04Astra Linux SE: 1.7.3; 1.7.5; 1.7.6; 1.7.7;
1.8.
Elph APIМожет быть развёрнут на любой ОС, но ограничен совместимостью SSW ECSS10, так как устанавливается на том же хосте
Elph Server+++-+
Elph Proxy++

+

(начиная с версии Elph 2.13.0)

 

+

(требуется ручная установка доп. пакетов)

Ошибка отображения макрокоманды «children»

null

  • Нет меток