Архитектура DION предусматривает возможность переноса части компонент, отвечающих за обработку медиа-трафика и создание/хранение записей конференции, на площадку организации. Такие компоненты мы называем гибридными нодами. Наличие гибридных нод позволяет проводить конференции в защищенном контуре, не передавая медиа-трафик в облако DION.
В гибридном сценарии связь гибридных нод с облаком DION является обязательным условием для работы конференций, так как в облако передаются сигнальная информация и управляющие команды.
Компоненты DION, вынесенные в гибридную архитектуру, представлены на схеме слева зеленым цветом:
Наименование компонентна | Описание компонента |
---|---|
MEDIA (SFU + Audiohub) | компонент, отвечающий за обработку аудио и видео-потоков |
Recorder, Record Converter, Record delivery | компоненты, отвечающие за создание, конвертацию и скачивание пользователями видеозаписей конференций |
TURN | компонент, отвечающий за подключение внешних пользователей ко внутренним медиа-серверам через NAT |
ШЛЮЗ (Proxy) | компонент, отвечающий за обнаружение гибридных нод облаком DION |
AD Connector | может быть установлен дополнительно для автоматической синхронизации списка пользователей DION с AD, не описан в данном руководстве |
Компоненты могут быть дублированы с целью обеспечения отказоустойчивости и масштабирования.
Прежде, чем перейти к редактированию конфигураций, убедитесь в том, что выполнены следующие шаги:
6. Передайте вашей аккаунт-команде белый IP адрес будущих серверов TURN и ШЛЮЗ(ов).
7. Если вы планируете внедрение нескольких нод Record Delivery, для балансировки нагрузки необходимо задать для них общую DNS запись.
Передайте белые адреса будущих TURN и ШЛЮЗ серверов вашей аккаунт команде или службе поддержки пользователей (support@diongo.ru) и запросите в ответ образы компонентов DION и сертификаты, выпущенные для вашей организации.
Для выдачи сертификатов нам необходимо получить от вас белые адреса серверов ШЛЮЗ и TURN.
Если серверов каждого типа несколько, требуется указать адрес для каждого из них.
Образы будут поставлены в виде .deb пакетов и образов контейнеров в следующем составе:
Сервис MEDIA:
Сервис PROXY (ШЛЮЗ):
Сервис TURN:
Сервис Recorder:
Сервис Record Delivery:
Сервис Record Converter:
Дополнительно вам должны быть предоставлены следующие файлы:
Если вы планируете пилотную инсталляцию с использованием демо-образа S3, вы также должны получить архив:
Примеры в данном разделе приведены для ОС Ubuntu
Если в процессе установки и конфигурации возникнут ошибки, рекомендуем воспользоваться руководством по устранению неисправностей.
sudo apt update
sudo apt upgrade
sudo apt install {путь к файлу}
или
sudo dpkg -i {путь к файлу}
4. Загрузите образ контейнера vscreen_transcoder.tar
в docker на машине, где будет установлен Recorder.
Обратите внимание, что на машине требуется предварительно установить docker.
Рекомендуем воспользоваться официальной инструкцией на сайте Docker.
sudo docker load -i {путь к образу vscreen_transcoder.tar}
Если при установке TURN возникла ошибка:
The following packages have unmet dependencies:
coturn : Depends: libssl1.1 (>= 1.1.0) but it is not installable
E: Unable to correct problems, you have held broken packages.
Выполните следующие команды и повторите установку:
echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list
sudo apt-get update
sudo apt-get install libssl1.1
Примеры в данном разделе приведены для ОС Ubuntu
Для редактирования конфигурационных файлов и перезапуска сервисов вам потребуются root права.
При недостатке прав используйте sudo
перед каждой командой или введите sudo -i
один раз в начале работы.
Если какая-либо из гибридных нод будет запущена в нескольких экземплярах, настройки нужно выполнить на каждом экземпляре.
Перейдите в cli ноды, на которой установлен пакет dion-proxy.deb
1. Откройте на редактирование конфигурационный файл /etc/dion/proxy.yaml
sudo nano /etc/dion/proxy.yaml
Все переменные, требующие редактирования, находятся в первой части файла. Следуйте комментариям и инструкции ниже.
При редактировании файла очень важно сохранить исходную табуляцию!
2. В переменной organizationID:
укажите ID вашей организации в кавычках. Его можно взять в файле org_id.txt, который вы получили вместе с образами
organizationID: "a2ae8888-b888-4efe-eaee-cf865535555”
Не забудьте поставить пробел между двоеточием и кавычками!
3. Перейдите в секцию grpcOuter:
host:
локальный IP-адрес данной ноды proxy, например, 192.168.1.1host: "192.168.1.1"
publicHost:
внешний белый IP-адрес данной ноды сервиса proxy (ШЛЮЗ), например, 92.68.1.1publicHost: "92.168.1.1"
caCertFile: "путь_к_вашему_сертификату.pem"
serverCertFile: "путь_к_вашему_сертификату.crt"
serverKeyFile: "путь_к_вашему_ключу.key"
4. Перейдите в секцию grpcInner:
host:
локальный IP-адрес данной ноды proxy, например, 192.168.1.1host: "192.168.1.1"
5. Перейдите в секцию cloudGateway:
port: 443
caCertClientsGWFile: "путь_к_вашему_сертификату.pem"
clientCertFile: "путь_к_вашему_сертификату.crt"
clientKeyFile: "путь_к_вашему_ключу.key"
6. Перейдите в секцию, перечисляющую адреса других сервисов DION
host:
укажите локальные IP-адреса серверов, на которых развернуты соответствующие медиа-компоненты (например, 192.168.1.2) и сервисы записи (например, 192.168.1.3). Порты не меняйте.
sfus:
- host: 192.168.1.2
commandGRPCPort: 9016
healthCheck:
connectionType: http
port: 8016
audioHubs:
- host: 192.168.1.2
commandGRPCPort: 9019
healthCheck:
connectionType: http
port: 8019
Если вы не планируете разворачивать сервисы записи, закомментируйте секции ниже. Закомментировать необходимо и название секции, и хосты, и порты.
recorders:
- host: 192.168.1.3
commandGRPCPort: 9037
healthCheck:
connectionType: http
port: 8037
recordConverters:
- host: 192.168.1.3
healthCheck:
connectionType: http
port: 8062
recordDeliverys:
- host:192.168.1.3
healthCheck:
connectionType: http
port: 443
В списке очень важно сохранить исходную табуляцию!
sfus:
- host: 192.168.1.2
commandGRPCPort: 9016
healthCheck:
connectionType: http
port: 8016
- host: 192.168.1.4
commandGRPCPort: 9016
healthCheck:
connectionType: http
port: 8016
7. Сохраните изменения в файле
ctrl+O ctrl+X в Nano
8. Перезапустите сервис
systemctl stop dion-proxy
systemctl start dion-proxy
9. Убедитесь, что сервис запущен без ошибок и находится в статусе active (running)
systemctl status dion-proxy
Если сервис не запускается, обратитесь к вашей аккаунт-команде за помощью в настройке.
Не забудьте передать внешний IP-адрес вашего TURN сервера вашей аккаунт-команде, иначе использовать сервис не получится.
Перейдите в cli ноды, на которой установлен пакет turn.deb
1. Откройте на редактирование конфигурационный файл /etc/turnserver.conf
sudo nano /etc/turnserver.conf
2. Добавьте следующие строки в начало файла:
listening-port=3478
fingerprint
use-auth-secret
realm=turn
simple-log
verbose
verbose
включает подробное логирование. Если сервис работает нормально и нет необходимости в наличии логов, строку можно закомментировать.
3. Добавьте в файл строку external-ip=xxx.xxx.xxx.xxx
.
external-ip=92.168.1.1
5. Добавьте в файл строку static-auth-secret=xxx
static-auth-secret=ZZzyYyRrRZZzyYyRrR00ZZzyYyRrR00ZZzyYyRrR00YYyZz
Если ваш TURN должен работать по 443 TCP, дополнительно добавьте следующие строки:
tls-listening-port=443
cert=/bin/путь_к_вашему_сертификату.crt
pkey=/bin/путь_к_вашему_ключу.key
dh2066
⚠️ Важно поместить сертификаты именно в директорию /bin
6. Сохраните изменения в файле
ctrl+O ctrl+X в Nano
7. Выполните перезагрузку сервиса
rm /lib/systemd/system/coturn.service
systemctl daemon-reload
8. Откройте на редактивароние файл /etc/default/coturn
TURNSERVER_ENABLED=1
ctrl+O ctrl+X в Nano
9. Перезапустите сервис
systemctl stop coturn
systemctl start coturn
10. Убедитесь, что сервис запущен без ошибок и находится в статусе active (running)
systemctl status coturn
Если сервис не запускается, обратитесь к вашей аккаунт-команде за помощью в настройке.
Перейдите в cli ноды, на которой установлен пакет sfu.deb
/etc/dion/sfu.yaml
sudo nano /etc/dion/sfu.yaml
Все переменные, требующие редактирования, находятся в первой части файла. Следуйте комментариям и инструкции ниже.
При редактировании файла очень важно сохранить исходную табуляцию!
2. Перейдите в секцию mediacontrollerGateway:
host
IP-адрес вашей Proxy (ШЛЮЗ) ноды (например, 192.168.1.1) вместо URL - host: 192.168.1.1
Если нод Proxy несколько, необходимо указать все в виде списка:
- host: 192.168.1.1
port: 9764
- host: 192.168.1.2
port: 9764
3. Сохраните изменения в файле
ctrl+O ctrl+X в Nano
4. Перезапустите сервис SFU
systemctl stop dion-sfu
systemctl start dion-sfu
5. Убедитесь, что сервис запущен без ошибок
systemctl status dion-sfu
Если сервис не запускается, обратитесь к вашей аккаунт-команде за помощью в настройке.
Перейдите в cli ноды, на которой установлен пакет audiohub.deb
1. Откройте на редактирование конфигурационный файл /etc/dion/audiohub.conf
sudo nano /etc/dion/audiohub.conf
Все переменные, требующие редактирования, находятся в первой части файла. Следуйте комментариям и инструкции ниже.
2. В переменную NET_INTERFACE_NAME
запишите имя активного сетевого интерфейса вашего сервера (например, eth0). Посмотреть имя интерфейса можно командой ifconfig
NET_INTERFACE_NAME=eth0
3. Перечислите адреса нод Proxy в переменной GW_ADDRESSES:
GW_ADDRESSES=192.168.1.1:9764
Если их несколько, перечислите через запятую без пробелов:
GW_ADDRESSES=192.168.1.1:9764,192.168.1.2:9764
4. Сохраните изменения в файле
ctrl+O ctrl+X в Nano
5. Перезапустите сервис
systemctl stop dion-audiohub
systemctl start dion-audiohub
6. Убедитесь, что сервис запущен без ошибок и находится в статусе active (running)
systemctl status dion-audiohub
Если сервис не запускается, обратитесь к вашей аккаунт-команде за помощью в настройке.
Audiohub помимо микширования аудио-потоков может создавать хранимые в контуре организации аудиозаписи конференций DION.
Будет доступно в следующих версиях DION гибрид.
⚠️ Просим вас заблаговременно создать bucket, а также пару access-key и secret-key на S3 хранилище.
Если инсталляция пилотная, вы можете запросить демо-образ S3 у вашей аккаунт-команды.
⚠️ Обратите внимание, что демо-образ не подходит для продуктивной инсталляции, так как не стартует автоматически после перезагрузки VM, на которой установлен.
Рекомендуем установить minio на отдельной VM, если это снизит количество перезагрузок.
⚠️ Если произошла перезагрузка, выполните шаги 4 и 5 инструкции ниже, чтобы запустить minio заново. В противном случае сервис будет недоступен.
⚠️ Для установки на машине требуется docker и docker-compose.
Для того, чтобы развернуть демо-образ S3, выполните следующие шаги:
1. Распакуйте полученный архив на нужную виртуальную машину
2. Установите на ней docker
и docker-compose
Обратите внимание, что на машине требуется предварительно установить docker.
Рекомендуем воспользоваться официальной инструкцией на сайте Docker.
3. В файле docker-compose.yml
посмотрите и поменяйте при необходимости логин и пароль для доступа к minio
environment:
MINIO_ROOT_USER: {имя пользователя}
MINIO_ROOT_PASSWORD: {пароль}
4. Выполните команду
docker load -i {/путь/minio-release-2023-01-31.docker.image}
5. Перейдите в папку, где лежит файл docker-compose.yml
и выполните команду
docker-compose up -d
6. Перейдите в веб-консоль minio по адресуhttp://{IP выбранной VM}:9000
7. Создайте из веб-интерфейса новый bucket и пару access-key и secret key. Запишите имя bucket и ключи.
На данной машине должен быть установлен
docker
Перейдите в cli ноды, на которой установлен пакет recorder.deb
1. Откройте на редактирование конфигурационный файл /etc/dion/recorder.conf
sudo nano /etc/dion/recorder.conf
Все переменные, требующие редактирования, находятся в первой части файла. Следуйте комментариям и инструкции ниже.
2. В переменную NET_INTERFACE_NAME
запишите имя активного сетевого интерфейса вашего сервера (например, eth0). Посмотреть имя интерфейса можно командой ifconfig
NET_INTERFACE_NAME=eth0
3. Укажите в переменной CAPI_GW_ADDRESSES
локальный адрес сервиса Proxy (шлюз) и, через двоеточие, порт внутренного gRPC сервиса:
CAPI_GW_ADDRESSES=192.168.1.1:9764
CAPI_GW_ADDRESSES=192.168.1.1:9764,192.168.1.2:9764
4. Перейдите в секцию #S3
API_URL
локальный адрес сервера (например, 192.168.1.3), на котором работает S3, и порт (9000 по умолчанию):API_URL=192.168.1.3:9000
ACCESS_KEY={access_key}
SECRET_KEY={secret}
BUCKET_NAME={name}
5. В переменной ORGANIZATION
укажите ID вашей организации без кавычек. Его можно взять в файле org_id.txt, который вы получили вместе с образами
ORGANIZATION=af4587ec-1a70-487a-87fd-9472bf93edf0
6. Сохраните изменения в файле
ctrl+O ctrl+X в Nano
7. Перезапустите сервис
systemctl stop dion-recorder
systemctl start dion-recorder
8. Убедитесь, что сервис запущен без ошибок и находится в статусе active (running)
systemctl status dion-recorder
Если сервис не запускается, обратитесь к вашей аккаунт-команде за помощью в настройке.
Перейдите в cli ноды, на которой установлен пакет dion-record-converter.deb
1. Откройте на редактирование конфигурационный файл /etc/dion/record-converter.conf
sudo nano /etc/dion/record-converter.conf
Все переменные, требующие редактирования, находятся в первой части файла. Следуйте комментариям и инструкции ниже.
2. В переменную NET_INTERFACE_NAME
запишите имя активного сетевого интерфейса вашего сервера (например, eth0). Посмотреть имя интерфейса можно командой ifconfig
NET_INTERFACE_NAME=eth0
3. Укажите в переменной CAPI_GW_ADDRESSES
локальный адрес сервиса Proxy (шлюз) и, через двоеточие, порт:
CAPI_GW_ADDRESSES=192.168.1.1:9764
CAPI_GW_ADDRESSES=192.168.1.1:9764,192.168.1.2:9764
4. Перейдите в секцию #S3
API_URL
локальный адрес сервера (например, 192.168.1.3), на котором работает S3 и нужный порт (9000 по умолчанию):API_URL=192.168.1.3:9000
ACCESS_KEY={access_key}
SECRET_KEY={secret}
BUCKET_NAME={name}
5. В переменной ORGANIZATION
укажите ID вашей организации без кавычек. Его можно взять в файле org_id.txt, который вы получили вместе с образами
ORGANIZATION=af4587ec-1a70-487a-87fd-9472bf93edf0
6. Сохраните изменения в файле
ctrl+O ctrl+X в Nano
7. Перезапустите сервис
systemctl stop dion-record-converter
systemctl start dion-record-converter
8. Убедитесь, что сервис запущен без ошибок и находится в статусе active (running)
systemctl status dion-record-converter
Если сервис не запускается, обратитесь к вашей аккаунт-команде за помощью в настройке.
Перейдите в cli ноды, на которой установлен пакет dion-record-delivery.deb
1. Откройте на редактирование конфигурационный файл /etc/dion/record-delivery.conf
sudo nano /etc/dion/record-delivery.conf
Все переменные, требующие редактирования, находятся в первой части файла. Следуйте комментариям и инструкции ниже.
2. Переменная MAX_USER_DOWNLOADS_COUNT_PER_MINUTE
устанавливает ограничение на количество скачиваний одним пользователем в минуту. Если необходимо, поменяйте ее значение.
MAX_USER_DOWNLOADS_COUNT_PER_MINUTE=3
TRUSTED_IP_SUBNETS=
3. В переменную NET_INTERFACE_NAME
запишите имя активного сетевого интерфейса вашего сервера (например, eth0). Посмотреть имя интерфейса можно командой ifconfig
NET_INTERFACE_NAME=eth0
4. Пропишите полные пути к сертификатам. Здесь необходимо использовать сертификаты, выпущенные вашим доверенным CA. Если использовать сертификаты, предоставленные DION, пользователи получат предупреждение о потенциальной опасности сайта при скачивании видео:
HTTP_CERT_FILE_PATH=путь_к_вашему_сертификату.crt
HTTP_KEY_FILE_PATH=путь_к_вашему_ключу.key
5. Укажите в переменной CAPI_GW_ADDRESSES
локальный адрес сервиса Proxy (шлюз) и, через двоеточие, порт внутренного gRPC сервиса, который указан в конфиге proxy.yml
CAPI_GW_ADDRESSES=192.168.1.1:9764
CAPI_GW_ADDRESSES=192.168.1.1:9764,192.168.1.2:9764
6. Перейдите в секцию #S3
API_URL
локальный адрес сервера (например, 192.168.1.3), на котором работает S3 и нужный порт (9000 по умолчанию):API_URL=192.168.1.3:9000
ACCESS_KEY={access_key}
SECRET_KEY={secret}
BUCKET_NAME={name}
7. Впишите JWT_ACCESS_SECRET
любое текстовое значение, например:
JWT_ACCESS_SECRET=ddD1dDDD1
8. В переменной ORGANIZATION
укажите ID вашей организации без кавычек. Его можно взять в файле org_id.txt, который вы получили вместе с образами
ORGANIZATION=af4587ec-1a70-487a-87fd-9472bf93edf0
9. Сохраните изменения в файле
ctrl+O ctrl+X в Nano
10. Перезапустите сервис
systemctl stop dion-record-delivery
systemctl start dion-record-delivery
11. Убедитесь, что сервис запущен без ошибок и находится в статусе active (running)
systemctl status dion-record-delivery
Если сервис не запускается, обратитесь к вашей аккаунт-команде за помощью в настройке.
Для запуска гибридного режима, перейдите в административную панель DION.
Если вы установили сервисы записи:
https://IP_адрес:443/v1/file
https://FQDN:443/v1/file
В результате выполнения шагов из данного руководства ожидается: