Эта статья относится к устаревшей версии Dion on-premise 2024.05
Документация по актуальной версии Dion on-premise 2024.10 доступна по ссылке.
Архитектура Dion Enterprise — вариант развертывания системы DION для локальной (on-premises) установки в контуре предприятия.
В настоящем документе представлена топология системы Dion Enterprise, а также приведены системные требования к инфраструктуре, необходимые для успешного развертывания и функционирования платформы.
Топология Dion Enterprise представляет собой среду, где все компоненты системы (Docker-контейнеры) размещаются на отдельных физических серверах или виртуальных машинах.
Архитектура Dion Enterprise 2+1 позволяет распределить микросервисы на отдельные виртуальные машины, расположенные в разных ЦОД-ах для повышения производительности и отказоустойчивости.
Ниже представлены детальные схемы каждого ЦОДа.
В данном ЦОДе могут располагаться микросервисы Dion как в единственном экземпляре, так и нескольких.
В данном ЦОДе могут располагаться микросервисы Dion как в единственном экземпляре, так и нескольких.
Данный ЦОД используется только для сервиса Dion Infra, который является свидетелем.
Сервис может быть размещён на виртуальной машине на удаленной площадке или в облаке.
Dion может быть развернут как на физических, так и на виртуальных серверах.
Для точного подсчета системных требований исходя из планируемых нагрузок используйте калькулятор сайзинга или обратитесь к команде Dion.
Пример конфигурации серверов для установки:
# | Имя сервера | CPU | RAM GB | HDD GB | Внутренний IP | Внешний IP | Расположение | Назначение |
1 | dc-1-setup-vm-01 |
2 |
4 |
200 |
1 |
|
внутренний контур | сервер установки и администрирования |
2 | dc-1-infra-ha-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД1 | сервер баз данных |
3 | dc-1-infra-ha-02 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД1 | сервер баз данных |
4 | dc-2-infra-ha-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД2 | сервер баз данных |
5 | dc-2-infra-ha-02 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД2 | сервер баз данных |
6 | dc-3-infra-ha-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД3 | сервер баз данных |
7 | dc-1-lbd-vm-01 |
2 |
4 |
50 |
1 + 1 vip |
|
внутренний контур ЦОД1 | балансировщик нагрузки WEB |
8 | dc-1-lbd-vm-02 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД1 | балансировщик нагрузки WEB |
9 | dc-2-lbd-vm-01 |
2 |
4 |
50 |
1 + 1 vip |
|
внутренний контур ЦОД2 | балансировщик нагрузки WEB |
10 | dc-2-lbd-vm-02 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД2 | балансировщик нагрузки WEB |
11 | dc-1-lbi-vm-01 |
2 |
4 |
50 |
1 + 1 vip |
|
внутренний контур ЦОД1 | балансировщик нагрузки баз данных |
12 | dc-1-lbi-vm-02 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД1 | балансировщик нагрузки баз данных |
13 | dc-2-lbi-vm-01 |
2 |
4 |
50 |
1 + 1 vip |
|
внутренний контур ЦОД2 | балансировщик нагрузки баз данных |
14 | dc-2-lbi-vm-02 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД2 | балансировщик нагрузки баз данных |
15 | dc-1-lbg-vm-01 |
2 |
4 |
50 |
1 + 1 vip |
|
внутренний контур ЦОД1 | балансировщик нагрузки GRPC |
16 | dc-1-lbg-vm-02 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД1 | балансировщик нагрузки GRPC |
17 | dc-2-lbg-vm-01 |
2 |
4 |
50 |
1 + 1 vip |
|
внутренний контур ЦОД2 | балансировщик нагрузки GRPC |
18 | dc-2-lbg-vm-02 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД2 | балансировщик нагрузки GRPC |
19 | dc-1-apps-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД1 | сервер приложений |
20 | dc-2-apps-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД2 | сервер приложений |
21 | dc-1-media-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД1 | сервер конференций |
22 | dc-2-media-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД2 | сервер конференций |
23 | dc-1-sipserver-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД1 | sip сервер |
24 | dc-2-sipserver-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД2 | sip сервер |
25 | dc_1_siptranslator-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД1 | sip сервер |
26 | dc-2-siptranslator-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД2 | sip сервер |
27 | dc-1-siptranscoder-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД1 | sip сервер |
28 | dc-1-siptranscoder-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД2 | sip сервер |
29 | dc-1-turn-vm-01 |
2 |
4 |
50 |
1 |
1 (NAT) |
DMZ ЦОД1 | TURN сервер |
30 | dc-2-turn-vm-01 |
2 |
4 |
50 |
1 |
1 (NAT) |
DMZ ЦОД2 | TURN сервер |
31 | dc-1-record-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД1 | сервер записи |
32 | dc-2-record-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД2 | сервер записи |
33 | dc-1-video-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД1 | сервер видеопортала |
34 | dc-2-video-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД2 | сервер видеопортала |
35 | dc-1-chats-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД1 | сервер чатов |
36 | dc-2-chats-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД2 | сервер чатов |
37 | dc-1-log-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД1 | сервер сбора логов |
38 | dc-1-mon-vm-01 |
2 |
4 |
50 |
1 |
|
внутренний контур ЦОД2 | сервер мониторинга |
Рекомендуется использовать SSD диски.
Серверы приложений apps, media, sip, record, video, chats при необходимости можно горизонтально масштабировать или совмещать между собой в рамках одного ЦОД.
Серверы балансировки lbi, lbg можно совмещать между собой в рамках одного ЦОД.
Количество участников (слушателей) в конференции ограничивается только пропускной способностью канала, исходя из расчёта от 500 Kbit/s до 3 Mbit/s на пользователя, в зависимости от типа передаваемого контента (аудио, видео, демонстрация экрана).
В дальнейшем при необходимости можно добавить ресурсы по мере использования.
Для работы серверов Dion необходимо обеспечить полное сетевое взаимодействие между серверами Dion во внутреннем контуре.
Рекомендуется использовать отдельный VLAN для серверов, расположенных в одном ЦОД (кроме серверов TURN, расположенных в DMZ). Сетевые задержки между ЦОДами не должны превышать 10 мс.
Ниже приведена таблица сетевых доступов за пределами внутреннего контура:
Сервис | Источник | Назначение | Порт | Протокол | Примечания | |||
---|---|---|---|---|---|---|---|---|
ALL | Все серверы Dion, кроме turn-vm находящихся в DMZ | Все серверы Dion, кроме turn-vm находящихся в DMZ | Any | TCP\UDP | Межсервисное взаимодействие между сервисами DION в разных ЦОД: прикладные сервисы, инфраструктурные сервисы. Автоматическое развертывание и обновление. Требуется для обеспечения отказоустойчивости. | |||
WEB | Пользовательская подсеть (для пользователей внутри сети). |
DC1 Dion lb-vm Virtual IP DC2 Dion lb-vm Virtual IP |
443 | TCP | Работа клиентского приложения и web-клиента. | |||
WEB | Внешние пользователи | DMZ Reverse Proxy | 443 | TCP | WEB интерфейс DION. | |||
WEB | DMZ Reverse Proxy | DC1 Dion lb-vm Virtual IP | 443 | TCP | Взаимодействие внешнего прокси с балансировщиком DION. | |||
WEB | DMZ Reverse Proxy | DC2 Dion lb-vm Virtual IP | 443 | TCP | Взаимодействие внешнего прокси с балансировщиком DION. | |||
SIP | SIP Initiation ATC | dc_1_sip-vm | 5060 |
TCP\SIP UDP\SIP |
Работа SIP вызовов. | |||
SIP | SIP Initiation ATC | dc_2_sip-vm | 5060 |
TCP\SIP UDP\SIP |
Работа SIP вызовов. | |||
SIP | SIP Transport Terminals | dc_1_sip-vm | 55000 - 61500 | UDP\RTP | Работа SIP вызовов. | |||
SIP | SIP Transport Terminals | dc_2_sip-vm | 55000 - 61500 | UDP\RTP | Работа SIP вызовов. | |||
TURN | Внешние пользователи | DC1 Dion TURN внешний IP | 3478 | UDP |
Обмен медиа-трафиком для:
|
|||
TURN | Внешние пользователи | DC2 Dion TURN внешний IP | 3478 | UDP |
Обмен медиа-трафиком для:
|
|||
MEDIA | Внутренние пользователи |
dc_1_media-vm dc_2_media-vm |
49152 - 65535 | UDP | Обмен медиа-трафиком для внутренних пользователей. | |||
MEDIA |
dc_1_media-vm dc_2_media-vm |
Внутренние пользователи | 49152 - 65535 | UDP | Обмен медиа-трафиком для внутренних пользователей. | |||
MEDIA |
dc_1_turn-vm dc_2_turn-vm |
dc_1_media-vm dc_2_media-vm |
49152 – 65535 | UDP\SRTP |
Обмен медиа-трафиком для:
|
|||
MEDIA |
dc_1_media-vm dc_2_media-vm |
dc_1_turn-vm dc_2_turn-vm |
49152 – 65535 | UDP\SRTP |
Обмен медиа-трафиком для:
|
|||
LOGS | log-vm |
dc_1_turn-vm dc_2_turn-vm |
9200 | TCP | Сбор логов. | |||
MONITOR | monitor-vm |
dc_1_turn-vm dc_2_turn-vm |
9100 9110 9641 |
TCP |
Мониторинг системы.
|
|||
SSH | setup-vm |
dc_1_turn-vm dc_2_turn-vm |
22 | TCP |
Развертывание системы.
|
|||
WEB |
dc_1_turn-vm dc_2_turn-vm |
setup-vm |
80 |
TCP |
Развертывание системы. Локальный registry.
|
|||
WEB | setup-vm | registry.onprem.dion.vc | 443 | TCP |
Развертывание системы.
|
|||
WEB | все серверы Dion | репозиторий операционной системы |
443 |
TCP |
Установка пакетов и зависимостей. | |||
WEB | все серверы Dion | репозиторий Docker |
443 |
TCP |
Установка Docker из репозитория. Требуется только для deb ОС (Ubuntu, Debian). | |||
PUSH | chat-vm |
80.85.252.1 80.85.252.4 185.247.192.104 185.247.192.104 185.228.50.78 185.228.50.79 185.65.148.105 185.65.148.145 |
443 | TCP |
Интеграция с облаком dion.vc , работа push уведомлений.
|
|||
DNS | Все серверы Dion | Внутренний DNS сервер | 53 | UDP |
DNS необходим для работы DION.
|
|||
SMTP |
dc_1_apps-vm dc_2_apps-vm |
Почтовый сервер | 25 | TCP |
Интеграция с почтовой системой (опционально).
|
|||
SSO |
dc_1_apps-vm dc_2_apps-vm |
Провайдер аутентификации (SAML SSO) |
443 | TCP |
Интеграция SSO (опционально).
|
|||
LDAP |
dc_1_apps-vm dc_2_apps-vm |
LDAP сервер (контроллер домена AD) |
389 | TCP |
Интеграция LDAP AD connector (опционально). |
Для взаимодействия Dion с внешними пользователями рекомендуется использовать обратный прокси (Reverse Proxy), расположенный в DMZ.
Важно: обратный прокси не входит в поставку ПО Dion.
Редирект на HTTPS: Для обеспечения безопасности соединений, трафик автоматически перенаправляется с HTTP на HTTPS средствами балансировщика нагрузки. Это позволяет гарантировать, что все данные передаются по защищённому каналу.
WebSocket: это протокол связи поверх TCP, который обеспечивает обмен сообщениями между браузером и веб-сервером в режиме реального времени. Это необходимо учитывать при использовании WAF в сегменте DMZ.
Шифрование SSL сертификатом: Для публичных сервисов обязательно использование SSL сертификата для шифрования трафика, что обеспечивает надёжную защиту данных при передаче через сеть.
Определение доступности сервисов: Для обеспечения высокой доступности сервисов используется мониторинг состояния серверов приложений. В случае недоступности сервиса, он автоматически исключается из балансировки, что позволяет сохранить стабильную работу системы.
Рекомендуемые параметры:
Балансируемый порт | Тип проверки | Код ответа | URL для проверки работоспособности сервиса | Интервал проверки | Количество неудачных попыток для вывода сервера в DOWN | Количество удачных попыток для возвращения сервера в UP |
443 | SSL | 204 | https://dion.Domain.ru/healthCheck/ | 30 сек | 3 | 3 |
Альтернативный вариант:
Балансируемый порт Тип проверки Код ответа URL для проверки работоспособности сервиса Интервал проверки Количество неудачных попыток для вывода сервера в DOWN Количество удачных попыток для возвращения сервера в UP 443 SSL 200 https:///VIP_lbd/wfhlthch/getstatus 30 сек 3 3
Для работы Dion требуются следующие DNS записи:
Имя | Тип Записи | Внутренняя зона | Внешняя зона | Назначение |
dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Получение статических файлов Web личного кабинета и конференций. |
static-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Статика веб приложений и Outlook plugin, хостинг .apk файлов и установочных пакетов настольных приложений. |
event-tracker-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Предоставление REST API для сбора данных по действиям пользователя в UI, который в дальнейшем используются для аналитики. |
photo-delivery-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Получение пользовательских фонов и аватаров, а также отчетов. |
download-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Получение статических файлов Web Центра загрузок. |
grpc-gateway-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Предназначено для Dion Rooms. |
api-clients-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Предоставление REST API для клиентских приложений по управлению учетными записями пользователей и конференциями. |
sockets-pool-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Подключение по WebSocket для двунаправленного взаимодействия по управлению конференциями между клиентским приложением и сервером. |
api-integration-dion.Domain.ru |
A |
LB Virtual IP |
|
Предоставление REST API для интеграции внешних систем. Используется для адаптера интеграции с внешним IdM по LDAP. |
auth-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Выделенный из api-clients АПИ для аутентификации. |
report-dion.Domain.ru |
A |
LB Virtual IP |
|
Отчёты в админ-панели. |
admin-dion.Domain.ru |
A |
LB Virtual IP |
|
Получение статических файлов Web консоли администратора. |
api-admin-dion.Domain.ru |
A |
LB Virtual IP |
|
Предоставление API для консоли администратора. |
st-users-groups-dion.Domain.ru |
A |
LB Virtual IP |
|
Предоставление REST API для клиентских приложений по управлению группами пользователей. |
video-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Получение статических файлов Web видеохостинга. |
records-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Получение файлов с записями конференций по ссылке, отправленной на email. |
api-video-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Предоставление REST API для клиентских приложений по управлению записями на видеохостинге. |
hls-delivery-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Предоставление HLS видеопотоков. |
upload-companion-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Предоставление REST API для клиентских приложений по управлению загрузкой файлов на видеохостинг. |
upload-server-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Предоставление REST API для клиентских приложений по загрузке/скачиванию видео файлов. |
chats-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Получение статических файлов Web чатов. |
chats-api-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Предоставление REST API для клиентских приложений по работе в чатах. |
chats-rta-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Подключение по WebSocket для двунаправленного взаимодействия по работе в чатах между клиентским приложением и сервером. |
dc-data-storage-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Предоставление REST API для клиентских приложений по загрузке и скачиванию вложений в чатах. |
sip-dion.Domain.ru |
A |
LB Virtual IP |
|
Работа с SIP сервером Dion. |
callserver-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Предоставление REST API для для звонков. |
rooms-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Опционально. Если установлен Dion Rooms. |
sso-dion.Domain.ru |
A |
LB Virtual IP |
Reverse Proxy |
Опционально. Для расширенной интеграции с SSO заказчика. |
vmetrics-dion.Domain.ru |
A |
LB Virtual IP |
|
Работа с сервером мониторинга. |
prometheus-dion.Domain.ru |
A |
LB Virtual IP |
|
Работа с сервером мониторинга. |
monitoring-dion.Domain.ru |
A |
LB Virtual IP |
|
Работа с метриками мониторинга в Grafana. |
logs-dion.Domain.ru |
A |
LB Virtual IP |
|
Работа с сервером сбора логов. |
ВНИМАНИЕ: Использование файла hosts вместо DNS сервера не поддерживается.
В топологии Dion Enterprise (High Availability) все DNS записи разрешаются в виртуальный ip Dion LB-VM. При этом всю нагрузку несет только один сервер Dion-LB, на котором находится виртуальный IP.
Чтобы распределить нагрузку между двумя серверами Dion-LB можно использовать технологию GSLB.
DNS сервер с поддержкой GSLB должен отдавать поочередно (roundrobin) ip адреса серверов dion-lb-vm01 и dion-lb-vm02.
Проверка доступности серверов осуществляется через web запрос https://dion.MyDomain.com/healthCheck
Код ответа работающего сервера: 204
Интервал проверки: 30 секунд
Количество неудачных попыток для вывода сервера в состояние DOWN: 3
Количество удачных попыток для возвращения сервера в состояние UP: 3
Для шифрования трафика между клиентом и сервером Dion требуется SSL сертификат с приватным ключом. Он должен удовлетворять следующим требованиям:
Так как Dion использует более 30 DNS записей – для упрощения можно использовать Wildcard сертификат, например:
CN = mydomain.ru
SAN = mydomain.ru
SAN = *.mydomain.ru
Dion состоит из контейнеров Docker и может работать на любой операционной системе, в которой установлен Docker. Рекомендуется использовать одну из протестированных операционных систем:
Название |
Версия |
Ubuntu Server |
22.04.4, 20.04.6 |
Debian |
12.2, 12.0 |
Astra Linux |
1.7.5 |
Alt Linux |
10.1, 10.2 |
RedOS |
7.3.4 |
Для развертывания достаточно минимальной установки.
Для развертывания Dion Standard требуется следующее ПО:
Название |
Источник |
OpenSSH Server |
opensource |
bzip2 |
opensource |
Docker |
opensource |
Ansible |
Поставляется Dion |
Ansible Playbook |
Поставляется Dion |
Универсальные контейнеры Dion |
Поставляется Dion |
Уникальные контейнеры Dion для конкретного домена |
Поставляется Dion |
В Dion поддерживаются следующие клиенты:
WEB:
Desktop:
Мобильные: