Развертывание тестового стенда на docker машине с нуля
Для развертывания тестового стенда на docker машине необходимо
1. Распаковать архив сборки
tar -xzf WCSTestStand-1.XXX.tar.gz
2. Настроить общую конфигурацию стенда в файле stand.conf/wcs-stand.conf
3. Настроить конфигурацию узлов стенда в каталогах stand.conf/node_name
4. Собрать docker-образы
cd images chmod +x build.sh sudo ./build.sh cd ..
5. Запустить стенд
sudo ./wcs-stand start all
Настройка общей конфигурации стенда
Конфигурация стенда описывается в файле stand.conf/wcs-stand.conf
, как набор переменных окружения для скрипта развертывания стенда:
CONTAINER_PREFIX=wcs-oam-test IMAGE_PREFIX=wcs_oam_test 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 узел, при условии, что роли узлов заданы в настройках или при помощи именования.
Команды управления стендом
Запуск стенда
Для запуска стенда целиком необходимо выполнить команду
sudo ./wcs-stand start all
При необходимости, стенд может быть запущен частично. Например, для запуска только CDN, необходимо выполнить команду
sudo ./wcs-stand start cdn
Можно также перечислить имена узлов для запуска
sudo ./wcs-stand start o-test1 e-test1
Запуск только CDN с публикацией
sudo ./wcs-stand start cdn ffmpeg
Остановка стенда
Для остановки стенда, запущенного целиком или частично, необходимо выполнить команду
sudo ./wcs-stand stop all
Если были запущены только определенные узлы, их также можно остановить
sudo ./wcs-stand stop dbase oam oam-front
Логирование
Лог скрипта запуска и остановки стенда записывается в файл wcs-stand.log
. При необходимости, уровень логирования может быть повышен с помощью ключа -v:
sudo ./wcs-stand -v start all
Доступ внутрь контейнеров стенда
Контейнеры стенда, кроме контейнера БД, доступны извне по SSH (порт 22). Приватный и публичный ключи доступа должны располагаться в каталоге ssh, в этом случае публичный ключ будет скопирован в контейнер при его запуске:
ssh |--id_rsa |--id_rsa.pub
Таким образом, для доступа к контейнеру необходимо выполнить команду
ssh -i ssh/id_rsa root@172.16.11.4
Здесь
id_rsa - приватный ключ