Архитектура DION предусматривает возможность переноса части компонент, отвечающих за обработку медиа-трафика и создание/хранение записей конференции, на площадку организации. Такие компоненты мы называем гибридными нодами. Наличие гибридных нод позволяет проводить конференции в защищенном контуре, не передавая медиа-трафик в облако DION.
В гибридном сценарии связь гибридных нод с облаком DION является обязательным условием для работы конференций, так как в облако передаются сигнальная информация и управляющие команды.
Компоненты DION, вынесенные в гибридную архитектуру, представлены на схеме слева зеленым цветом:
Наименование компонентна | Описание компонента |
---|---|
MEDIA | компонент, отвечающий за обработку аудио и видео-потоков. |
Recorder, Record Converter, Record delivery | компоненты, отвечающие за создание, конвертацию и скачивание записи конференции. |
TURN | компонент, отвечающий за подключение внешних пользователей ко внутренним медиа-серверам через NAT |
ШЛЮЗ (Proxy) | компонент, отвечающий за обнаружение гибридных нод облаком DION |
Компоненты могут быть дублированы с целью обеспечения отказоустойчивости и масштабирования.
Прежде, чем перейти к редактированию конфигураций, убедитесь в том, что выполнены следующие шаги:
7. Передайте вашей аккаунт-команде белый IP адрес будущих серверов TURN и ШЛЮЗ(ов).
Передайте белые адреса будущих TURN и ШЛЮЗ серверов вашей аккаунт команде или службе поддержки пользователей (support@diongo.ru) и запросите в ответ образы компонентов DION и сертификаты, выпущенные для вашей организации.
Для выдачи сертификатов нам необходимо получить от вас белые адреса серверов ШЛЮЗ и TURN.
Если серверов каждого типа несколько, требуется указать адрес для каждого из них.
Образы будут поставлены в виде .deb пакетов и образов контейнеров в следующем составе:
Сервис MEDIA:
Сервис PROXY (ШЛЮЗ):
Сервис TURN:
Сервис Recorder:
Сервис Record Delivery:
Сервис Record Converter:
Дополнительно вам должны быть предоставлены следующие файлы:
Если вы планируете пилотную инсталляцию с использованием демо-образа S3, вы также должны получить архив:
Примеры в данном разделе приведены для ОС Ubuntu
sudo apt install {путь к файлу}
или
sudo dpkg -i {путь к файлу}
4. Загрузите образ контейнера vscreen_transcoder.docker.image
в docker на машине, где будет установлен Recorder
docker load -i {путь к образу vscreen_transcoder.docker.image}
Если при установке 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: "00000000-0000-0000-0000-00000000”
org_id.txt
, который вы получили вместе с образами:organizationID: "a2ae8888-b888-4efe-eaee-cf865535555”
3. Перейдите в секцию #конфиг внешнего gRPC сервиса
host:
локальный IP-адрес вашего сервера proxy, например, 192.168.1.1host: "192.168.1.1" # собственный адрес сервиса, тут слушаем GRPC порт
publicHost:
внешний белый IP-адрес сервиса proxy (ШЛЮЗ), например, 92.68.1.1publicHost: "92.168.1.1" # это публикуем в консул, по нему производится вызов healthCheck
port:
на 5443port: 5443
caCertFile: "путь_к_вашему_сертификату.pem"
serverCertFile: "путь_к_вашему_сертификату.crt"
serverKeyFile: "путь_к_вашему_ключу.key"
4. Перейдите в секцию #конфиг внутреннего gRPC сервиса
host:
локальный IP-адрес вашего сервера proxy, например, 192.168.1.1host: "192.168.1.1" # собственный адрес сервиса
port:
на 9764port: 9764
5. Перейдите в секцию #конфиг адреса гейтвея в клауде DION
host:
адрес grpc-gateway-clients.dion.vchost: “grpc-gateway-clients.dion.vc”
port:
на 5443port: 5443
skipTlsVerify:
в значение trueskipTlsVerify: true
caCertClientsGWFile: "путь_к_вашему_сертификату.pem"
clientCertFile: "путь_к_вашему_сертификату.crt"
clientKeyFile: "путь_к_вашему_ключу.key"
6. Перейдите в завершающую секцию, перечисляющую адреса других сервисов DION
sfus:
- host: 192.168.1.2
httpPort: 8016
grpcPort: 9016
audioHubs:
- host: 192.168.1.2
httpPort: 8019
grpcPort: 9019
recorders:
- host: 192.168.1.3
httpPort: 8037
grpcPort: 9037
recordConverters:
- host: 192.168.1.3
httpPort: 8062
recordDeliverys:
- host: 192.168.1.3
httpPort: 443
sfus:
- host: 192.168.1.2
httpPort: 8016
grpcPort: 9016
- host: 192.168.1.2
httpPort: 8016
grpcPort: 9016
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
listening-port=3478
3. Найдите в файле строку #external-ip
.
external-ip=92.168.1.1
4. Найдите в файле и раскомментируйте следующие строки (уберите знак #):
fingerprint
use-auth-secret
5. Найдите в файле строку #static-auth-secret=north
.
static-auth-secret=ZZzyYyRrRZZzyYyRrR00ZZzyYyRrR00ZZzyYyRrR00YYyZz
6. Добавьте в конец файла следующие строки:
realm=turn
verbose
simple-log
Опция verbose
включает подробное логирование. Если сервис работает нормально и нет необходимости в наличии логов, строку можно закомментировать.
Если ваш TURN должен работать по 443 TCP вместо 3478 UDP, дополнительно добавьте следующие переменные в конец файла:
tls-listening-port=443
cert=путь_к_вашему_сертификату.crt
pkey=путь_к_вашему_ключу.key
6. Сохраните изменения в файле
ctrl+O ctrl+X в Nano
7. Перезапустите сервис
systemctl stop coturn
systemctl start coturn
8. Убедитесь, что сервис запущен без ошибок и находится в статусе active (running)
systemctl status coturn
Если сервис не запускается, обратитесь к вашей аккаунт-команде за помощью в настройке.
Перейдите в cli ноды, на которой установлен пакет sfu.deb
/etc/dion/sfu.conf
sudo nano /etc/dion/sfu.conf
3. Проверьте значения переменных GRPC_PORT
и HTTP_PORT
GRPC_PORT=9016
HTTP_PORT=8016
4. Перейдите в секцию, где указаны переменные MK_GW
MK_GW_ADDRESSES
IP-адрес вашей Proxy (ШЛЮЗ) ноды (например, 192.168.1.1) вместо URLMK_GW_ADDRESSES=192.168.1.1:9764
MK_GW_USE_TLS
на false
MK_GW_USE_TLS=false
5. Перейдите в секцию, где указаны переменные CONSUL
CONSUL_ENABLED
на false
CONSUL_ENABLED=false
6. Сохраните изменения в файле
ctrl+O ctrl+X в Nano
7. Перезапустите сервис SFU
systemctl stop dion-sfu
systemctl start dion-sfu
8. Убедитесь, что сервис запущен без ошибок
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. Проверьте значения переменных GRPC_PORT
и HTTP_PORT
GRPC_PORT=9019
HTTP_PORT=8019
4. Поменяйте значение переменной MK_GW_USE_TLS
на false
MK_GW_USE_TLS=false
5. Поменяйте значение переменной CONSUL_ENABLED
на false
CONSUL_ENABLED=false
6. В конец файла добавьте следующую строку:
USE_NOISE_SUPPRESSION_FOR_SIP_TERMINALS=true
7. Сохраните изменения в файле
ctrl+O ctrl+X в Nano
8. Перезапустите сервис
systemctl stop dion-audiohub
systemctl start dion-audiohub
9. Убедитесь, что сервис запущен без ошибок и находится в статусе active (running)
systemctl status dion-audiohub
Если сервис не запускается, обратитесь к вашей аккаунт-команде за помощью в настройке.
⚠️ Просим вас заблаговременно создать bucket, а также пару access-key и secret-key на S3 хранилище.
Если инсталляция пилотная, вы можете запросить демо-образ S3 у вашей аккаунт-команды.
⚠️ Обратите внимание, что демо-образ не подходит для продуктивной инсталляции, так как не способен пережить перезагрузку VM, на которой установлен.
Для того, чтобы развернуть демо-образ S3, выполните следующие шаги:
1. Распакуйте архив на нужную виртуальную машину
2. Установите на ней docker
и docker-compose
:
sudo apt install docker.io docker-compose
3. В файле docker-compose.yml
посмотрите и поменяйте при необходимости логин и пароль для доступа к minio
environment:
MINIO_ROOT_USER: {имя пользователя}
MINIO_ROOT_PASSWORD: {пароль}
4. Выполните команды
docker load -i {/путь/minio-release-2023-01-31.docker.image}
docker-compose up -d
5. Перейдите в веб-консоль minio по адресуhttp://{IP выбранной VM}:9000
6. Создайте из веб-интерфейса новый bucket и пару access-key и secret key. Запишите имя bucket и ключи.
На данной машине должен быть установлен
docker
Перейдите в cli ноды, на которой установлен пакет recorder.deb
1. Откройте на редактирование конфигурационный файл /etc/dion/recorder.conf
sudo nano /etc/dion/recorder.conf
2. Перейдите в секцию # Transcoder
docker image ls
TRANSCODER_CONTAINER_NAME = git-registry.service.t1-cloud.ru/vc/vscreen_transcoder/vscreen_transcoder_prod:3-6-0
CONTAINER_MANAGER
на docker
:CONTAINER_MANAGER=docker
FRONT_RECORD_URL
как в примере ниже:FRONT_RECORD_URL=https://dion.vc/record
4. Перейдите в секцию #Capi
CAPI_GW_ADDRESSES
локальный адрес сервиса Proxy (шлюз) и, через двоеточие, порт внутренного gRPC сервиса, который указан в конфиге proxy.yml
CAPI_GW_ADDRESSES=192.168.1.1:9764
CAPI_GW_USE_TLS
и COOKIE_DOMAIN
, как указано ниже:CAPI_GW_USE_TLS=false
COOKIE_DOMAIN=.dion.vc
COOKIE_NAME
, если она отсутствует:COOKIE_NAME=vc-refresh-token
5. Перейдите в секцию #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}
S3_USE_SSL
в false
:S3_USE_SSL=false
6. Перейдите в секцию # СONSUL
CONSUL_ENABLED
в false
CONSUL_ENABLED=false
7. Перейдите в секцию # Network
NET_INTERFACE_NAME
запишите имя активного сетевого интерфейса вашего сервера (например, eth0). Посмотреть имя интерфейса можно командой ifconfig
NET_INTERFACE_NAME=eth0
8. Перейдите в секцию # default org
ORGANIZATION
. Его можно взять в файле org_id.txt
, который вы получили вместе с образами:ORGANIZATION=a2ae8888-b888-4efe-eaee-cf865535555
9. Сохраните изменения в файле
ctrl+O ctrl+X в Nano
10. Перезапустите сервис
systemctl stop dion-recorder
systemctl start dion-recorder
11. Убедитесь, что сервис запущен без ошибок и находится в статусе 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. Перейдите в секцию # Network
NET_INTERFACE_NAME
запишите имя активного сетевого интерфейса вашего сервера (например, eth0). Посмотреть имя интерфейса можно командой ifconfig
NET_INTERFACE_NAME=eth0
3. Перейдите в секцию #Capi
CAPI_GW_ADDRESSES
локальный адрес сервиса Proxy (шлюз) и, через двоеточие, порт внутренного gRPC сервиса, который указан в конфиге proxy.yml
CAPI_GW_ADDRESSES=192.168.1.1:9764
CAPI_GW_USE_TLS
на false
:CAPI_GW_USE_TLS=false
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}
S3_USE_SSL
в false
:S3_USE_SSL=false
5. Перейдите в секцию # ORG
ORGANIZATION
. Его можно взять в файле org_id.txt
, который вы получили вместе с образами:ORGANIZATION=a2ae8888-b888-4efe-eaee-cf865535555
6. Перейдите в секцию # СONSUL
CONSUL_ENABLED
в false
CONSUL_ENABLED=false
7. Сохраните изменения в файле
ctrl+O ctrl+X в Nano
8. Перезапустите сервис
systemctl stop dion-record-converter
systemctl start dion-record-converter
9. Убедитесь, что сервис запущен без ошибок и находится в статусе 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. Перейдите к секции #RECORD DELIVERY
MAX_USER_DOWNLOADS_COUNT_PER_MINUTE
устанавливает ограничение на количество скачиваний одним пользователем в минуту. Если необходимо, поменяйте ее значение.MAX_USER_DOWNLOADS_COUNT_PER_MINUTE=3
TRUSTED_IP_SUBNETS=
3. Перейдите в секцию # Network
NET_INTERFACE_NAME
запишите имя активного сетевого интерфейса вашего сервера (например, eth0). Посмотреть имя интерфейса можно командой ifconfig
NET_INTERFACE_NAME=eth0
4. Перейдите в секцию #HTTP
HTTP_PORT
впишите номер порта, который будет использоваться при скачивании видео-записи вашими пользователями, запишите это значение, оно потребуется позжеHTTP_PORT=443
HTTP_USE_TLS=true
HTTP_CERT_FILE_PATH=путь_к_вашему_сертификату.crt
HTTP_KEY_FILE_PATH=путь_к_вашему_ключу.key
HTTP_USE_TLS=false
HTTP_CERT_FILE_PATH=
- оставьте пустым
HTTP_KEY_FILE_PATH=
- оставьте пустым
5. Перейдите в секцию #Capi gRPC
CAPI_GW_ADDRESSES
локальный адрес сервиса Proxy (шлюз) и, через двоеточие, порт внутренного gRPC сервиса, который указан в конфиге proxy.yml
CAPI_GW_ADDRESSES=192.168.1.1:9764
CAPI_GW_USE_TL
и false
:CAPI_GW_USE_TLS=false
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}
S3_USE_SSL
в false
:S3_USE_SSL=false
7. Перейдите в секцию # ORG
ORGANIZATION
. Его можно взять в файле org_id.txt
, который вы получили вместе с образами:ORGANIZATION=a2ae8888-b888-4efe-eaee-cf865535555
8. Перейдите в секцию # СONSUL
CONSUL_ENABLED
в false
CONSUL_ENABLED=false
9. Перейдите в секцию #AUTHORIZATION
JWT_ACCESS_SECRET
ключ из файла record_delivery_key.txt
, например:JWT_ACCESS_SECRET=ddD1dDDD1
10.. Сохраните изменения в файле
ctrl+O ctrl+X в Nano
11. Перезапустите сервис
systemctl stop dion-record-delivery
systemctl start dion-record-delivery
12. Убедитесь, что сервис запущен без ошибок и находится в статусе active (running)
systemctl status dion-record-delivery
Если сервис не запускается, обратитесь к вашей аккаунт-команде за помощью в настройке.
Для запуска гибридного режима, перейдите в административную панель DION.
Передайте вашей аккаунт команде адрес, по которому будет производиться скачивание видео-записей с гибридной ноды Record Delivery в формате:
{http/https}://{доменное имя или IP адрес гибридной ноды Record Delivery}:{порт, который вы вписали в переменную HTTP_PORT}
В результате выполнения шагов из данного руководства ожидается: