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

WCS в Amazon EC2

WCS-сервер может быть развернут в Amazon Elastic Compute Cloud (EC2) следующими способами:

Настройка виртуальной машины и установка WCS с нуля

Этим способом можно воспользоваться, если Вам необходима более тонкая настройка операционной системы, установка дополнительный компонентов и т.п. Запустите виртуальную машину Linux по инструкции от AWS, настройте ее по необходимости, затем установите WCS по краткой или подробной инструкции.

Развертывание готового образа WCS из Amazon AWS Marketplace

  1. Откройте страницу Web Call Server на Amazon AWS Marketplace, нажмите Continue to Subscribe:

  2. Откроется страница с описанием продукта и почасовой стоимостью в зависимости от выбранной конфигурации сервера. Нажмите Continue to Configuration:

  3. Откроется страница конфигурации сервера. Выберите регион размещения сервера и нажмите Continue to Launch:

  4. Откроется страница запуска сервера. Выберите тип виртуальной машины, который будет использован для создания экземпляра сервера:

  5. Прокрутите страницу до настройки Security Group Settings, нажмите Create New Based On Seller Settings:

  6. Отобразится страница создания Security Group. Укажите имя группы, описание и нажмите Save:

  7. Выберите новую группу в выпадающем списке:

  8. Нажмите Launch:

  9. Отобразится сообщение об успешном запуске:

  10. Нажмите на ссылку EC2 Console. В разделе Instances найдите запущенную виртуальную машину:

  11. Откройте в браузере адрес веб-интерфейса запущенного WCS-сервера https://host.amazonaws.com:8888, примите исключение безопасности. В качестве пароля администратора используйте Instance ID запущенной виртуальной машины:

  12. Проверьте публикацию и воспроизведение WebRTC-потока с веб-камеры на примере Two Way Streaming:

Развертывание WCS из образа на AWS Marketplace с дополнительной настройкой

Готовый образ WCS на AWS Marketplace содержит лишь базовые настройки. Для изменения настроек необходимо зайти по SSH в созданный экземпляр сервера и перезапустить WCS. Для получения готового к работе экземпляра "из коробки" можно указать пользовательский скрипт для изменения настроек при первом запуске сервера. Эта возможность полезна, например, при развертывании группы масштабирования.

  1. В EC2 Console перейдите в раздел Instances - Instances и нажмите Launch instance

  2. Выберите образ, указав при поиске "Web Call Server"

  3. Просмотрите информацию об образе

  4. Выберите тип ВМ

  5. Прокрутите вниз до конца страницу Configure Instance Details и вставьте в поле User data скрипт обновления и настройки WCS

    Пример скрипта приведен ниже

  6. Настройте группу безопасности. По умолчанию, группа будет создана из настроек образа. При необходимости, добавьте порты

  7. Нажмите Review and Launch. Если в параметрах нет ошибок, нажмите Launch

    Будет запущен экземпляр сервера

  8. Откройте веб интерфейс сервера, опубликуйте поток в примере Two Way Streaming и проиграйте его

Пример скрипта, который обновляет WCS до последней сборки и настраивает Origin сервер для публикации WebRTC и RTMP потоков

Origin setup script
#!/bin/bash

# Stop WCS before reconfiguring
PID="$(pgrep -f 'com.flashphoner.server.Server' | grep -v bash)"
if [ -n "$PID" ]; then
   service webcallserver stop
fi

# Update WCS to the latest build (optionally, set to false if you don't)
UPDATE=true
if $UPDATE; then
   cd /tmp
   wget --timeout=10 --no-check-certificate https://flashphoner.com/download-wcs5.2-server.tar.gz -O wcs5-server.tar.gz
   if [ $? -eq 0 ]; then
       mkdir -p FlashphonerWebCallServer-5.2-latest && tar xzf wcs5-server.tar.gz -C FlashphonerWebCallServer-5.2-latest --strip-components 1
       cd FlashphonerWebCallServer-5.2-latest
       chmod +x install.sh
       ./install.sh -silent
       cd ..
       rm -rf FlashphonerWebCallServer-5.2-latest wcs5-server.tar.gz
   fi
fi

# Configuration setup
WCS_CONFIG=/usr/local/FlashphonerWebCallServer/conf/flashphoner.properties
JVM_CONFIG=/usr/local/FlashphonerWebCallServer/conf/wcs-core.properties

#CDN settings
CDN_ROLE=origin
CDN_IP=0.0.0.0
echo -e "\ncdn_enabled=true" >> $WCS_CONFIG
echo -e "\ncdn_ip=$CDN_IP" >> $WCS_CONFIG
echo -e "\ncdn_role=$CDN_ROLE" >> $WCS_CONFIG
echo -e "\ncdn_nodes_resolve_ip=false" >> $WCS_CONFIG

# Request keyframes from WebRTC publishers every 5 seconds
echo -e "\nperiodic_fir_request=true" >> $WCS_CONFIG

# Disable RTMP keepalives to publish from OBS
echo -e "\nkeep_alive.enabled=websocket,rtmfp" >> $WCS_CONFIG

# Configure heap settings
HEAP_SIZE=512m
sed -i -e "s/^\(-Xmx\).*\$/\1$HEAP_SIZE/" $JVM_CONFIG

# Start WCS after reconfiguring
PID="$(pgrep -f 'com.flashphoner.server.Server' | grep -v bash)"
if [ -n "$PID" ]; then
   service webcallserver restart
else
   service webcallserver start
fi

# Disable internal firewall, ports are allowed/blocked on security group level
iptables -F

Известные проблемы

1. При переходе к Amazon Linux 2 AMI в качестве базового образа, для управления сервисами используется systemd

Симптомы

Команда

sudo service webcallserver start

возвращает

Redirecting to /bin/systemctl start webcallserver.service

команда

sudo service webcallserver check_update

не работает

Решение

a) для запуска, остановки, перезапуска использовать systemctl

sudo systemctl start webcallserver
sudo systemctl stop webcallserver
sudo systemctl restart webcallserver

b) для проверки обновлений использовать скрипт webcallserver

cd /usr/local/FlashphonerWebCallServer/bin
sudo ./webcallserver check_update
sudo ./webcallserver update