Перейти к содержанию

Настройка

Настройка общей конфигурации стенда

Конфигурация стенда описывается в файле 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 - имена узлов тестовой CDN
  • CDN_ENTRY_POINT - имя узла, который будет точкой входа в CDN
  • FFMPEG_NODE - имя узла для публикации RTMP потоков на Origin узлы при помощи ffmpeg
  • WCS_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

sudo ./stand-network start

При этом интерфейс 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.conf располагается в каталоге 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 в Gb
  • WCS_LICENSE - лицензия для активации WCS
  • CDN_ROLE - роль узла в CDN
  • PRODUCT_LINK - ссылка для скачивания архива сборки WCS
  • PRODUCT_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-* - Origin
  • t-* - Transcoder
  • e-* - Edge

Роль узла в CDN может быть также явно задана в файле flashphoner.properties, который копируется в контейнер

Настройка узла для публикации RTMP-потоков на Origin серверы CDN

Файл настроек node.conf

NODE_IP=""
NODE_PORTS=22
MEDIA_MOUNT=/home/media

Здесь

  • 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 узел, при условии, что роли узлов заданы в настройках или при помощи именования.