Настройка¶
Настройка общей конфигурации стенда¶
Конфигурация стенда описывается в файле stand.conf/wcs-stand.conf
, как набор переменных окружения для скрипта развертывания стенда:
CONTAINER_PREFIX=wcs-test-stand
IMAGE_PREFIX=wcs_test_stand
DOCKER_NETWORK=bridge
CDN_NODES=o-test1,o-test2,e-test1,e-test2,e-test3,e-test4,t-test1,t-test2
CDN_ENTRY_POINT=o-test1
FFMPEG_NODE=ffmpeg
WCS_PATH=/usr/local/FlashphonerWebCallServer
Здесь
CONTAINER_PREFIX
- префикс имени контейнераIMAGE_PREFIX
- префикс docker-образаDOCKER_NETWORK
- docker-сеть (используется при явном назначении IP адресов узлам)CDN_NODES
- имена узлов тестовой CDNCDN_ENTRY_POINT
- имя узла, который будет точкой входа в CDNFFMPEG_NODE
- имя узла для публикации RTMP потоков наOrigin
узлы при помощи ffmpegWCS_PATH
- путь установки WCS
Настройка Docker сети¶
Если предполагается явное назначение IP адреса в настройках каждого узла, необходимо указать отдельную docker-сеть в конфигурации стенда
DOCKER_NETWORK=stand
DOCKER_SUBNET=172.16.11.1/24
DOCKER_GATEWAY=172.16.11.1
DOCKER_HOST_IFACE=iface
Здесь
DOCKER_NETWORK
- docker-сетьDOCKER_SUBNET
- IP-подсеть, выделяемая docker-сетиDOCKER_GATEWAY
- шлюз docker-сетиDOCKER_HOST_IFACE
- имя внешнего интерфейса docker-ВМ
Затем эту сеть необходимо создать при помощи скрипта stand-network
При этом интерфейс docker-сети будет назначен автоматически как br-$DOCKER_NETWORK
, например br-stand
. Правила перенаправления пакетов будут автоматически добавлены в iptables:
iptables -A FORWARD -i br-$DOCKER_NETWORK -o $DOCKER_HOST_IFACE -j ACCEPT
iptables -A FORWARD -i $DOCKER_HOST_IFACE -o br-$DOCKER_NETWORK -j ACCEPT
Настройка узла¶
Файл настроек узла node.con
f располагается в каталоге stand.conf
, в подкаталоге с именем узла. Так же, как и для стенда в целом, настройки описываются набором переменных окружения, в зависимости от типа узла. Кроме того, в каталоге могут лежать дополнительные файлы, который копируются в контейнер узла. Во всех файлах настроек обязательными являются два параметра
NODE_IP
- IP дарес узла или пустая строка, если IP адрес должен быть назначен динамическиNODE_PORTS
- порты узла, доступные с docker-хоста и внешних сетей
Также может быть указан параметр
CHECK_PORT
- TCP-порт для проверки доступности узла
Настройка узла WCS¶
Файл настроек node.conf
NODE_IP=""
NODE_PORTS=22,554,1935,8080-8084,8443-8445,8888,9091,30000-33000/tcp,30000-33000/udp
JAVA_VERSION=8
JAVA_GC=CMS
JAVA_HEAP=2g
WCS_LICENSE="Put-your-license-key-here"
CDN_ROLE=origin
PRODUCT_LINK="https://flashphoner.com/downloads/builds/WCS/5.2/FlashphonerWebCallServer-5.2.XXX.tar.gz"
PRODUCT_ACCESS_LOGIN=staff
PRODUCT_ACCESS_PASSWORD=X5RLgmrTiK25
Здесь
JAVA_VERSION
- версия JVM (8 или 12)JAVA_GC
- используемый сборщик мусора (CMS или ZGC)JAVA_HEAP
- размер Java heap в GbWCS_LICENSE
- лицензия для активации WCSCDN_ROLE
- роль узла в CDNPRODUCT_LINK
- ссылка для скачивания архива сборки WCSPRODUCT_ACCESS_LOGIN
- логин для скачивания Enterprise-сборки (для клиентов с Enterprise лицензией)PRODUCT_ACCESS_PASSWORD
- пароль для скачивания Enterprise-сборки (для клиентов с Enterprise лицензией)
Кроме того, в каталоге могут располагаться:
- файл
flashphoner.properties
- файл
wcs-core.properties
- файл
log4j.properties
- файлы
*.sdp
- файл
cdn_profiles.yml
Эти файлы копируются в контейнер "как есть", никакие изменения в них не вносятся, в том числе не меняются настройка IP адресов и параметры JVM. В этом случае IP адрес узла должен быть явно задан в node.conf
Роль узла в CDN отпределяется либо из настройки, либо из имени узла:
o-*
- Origint-*
- Transcodere-*
- Edge
Роль узла в CDN может быть также явно задана в файле flashphoner.properties
, который копируется в контейнер
Настройка узла для публикации RTMP-потоков на Origin серверы CDN¶
Файл настроек node.conf
Здесь
MEDIA_MOUNT
- каталог на docker-сервере, монтируемый в контейнер
При запуске узла в контейнер монтируется каталог, который должен содержать файлы *.mp4
для публикации
Кроме того, в каталоге могут располагаться:
- файлы
*.mp4
- копируются в каталог, заданный вMEDIA_MOUNT
- файлы
*.sh
- копируются в каталог, заданный вMEDIA_MOUNT
Публикация RTMP потоков на Origin серверы¶
Если в каталоге, заданном в MEDIA_MOUNT
, находятся скрипты публикации *.sh
, они выполняются для каждого из Origin узлов, при условии, что роли узлов заданы в настройках или при помощи именования. В этом случае скрипт получает параметром IP адрес узла.
Если роли узлов заданы в файлах flashphoner.properties
, копируемых в контейнер, скрипты публикации выполняются без передачи IP адреса узла, в этом случае IP адреса узлов для публикации должны быть явно определены в скрипте.
Если в каталоге, заданном в MEDIA_MOUNT
, находятся медиа файлы *.mp4
, и при этом не содержатся скрипты публикации, каждый из файлов публикуется на каждый Origin узел, при условии, что роли узлов заданы в настройках или при помощи именования.