Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Настройка должна задаваться на Transcoder узлах. Также эта настройка может задаваться на Origin узлах, в этом случае при помощи REST API можно контролировать загрузку Origin сервера и при достижении статуса GROUP_CONNECTION_ALLOWED публиковать потоки на другом Origin сервере.

Равномерное распределение нагрузки по узлам

...

Ограничение количества кодировщиков (encoders) видео на Transcoder узлах

При необходимости, на Transcoder узлах может быть ограничено максимальное количество одновременно используемых кодировщиков (encoders) видео при помощи настройки

Code Block
themeRDark
cdn_transcoder_forvideo_new_connects_expire_ms=10000

...

encoders_threshold=10000

При достижении этого количества, узел Transcoder переходит в статус GROUP_CONNECTION_ALLOWED. Учитываются все кодировщики на сервере, например, если один поток транскодируется по двум профилям, будет использовано 3 кодировщика, включая кодировщик PNG.

Настройка должна задаваться на Transcoder узлах

...

Равномерное распределение нагрузки по узлам

Для того, чтобы Origin узлы не принимали на себя транскодинг, если все Transcoder узлы заняты, предусмотрена настройка

Code Block
themeRDark
cdn_origin_allowed_to_transcode=false

В данном случае (по умолчанию), если для транскодирования нового потока по указанному профилю нет доступных Transcoder узлов, поток не будет играться с ошибкой No available transcoders.

При необходимости, транскодирование на Origin серверах можно разрешитьпотоки по доступным Transcoder узлам распределялись равномерно, для транскодирования нового потока выбирается следующий свободный узел (алгоритм Round Robin). При этом, чтобы один и тот же опубликованный поток при одновременном запросе с нескольких клиентов не расходился по нескольким Transcoder узлам, предусмотрено кэширование по имени потока. Интервал времени кэширования задается в миллисекундах при помощи настройки

Code Block
themeRDark
cdn_transcoder_for_originnew_allowedconnects_toexpire_transcodems=true

...

10000

В данном случае интервал кэширования составит 10 секунд.

Настройка должна задаваться на Edge Transcoder узлах.

Получение текущего состояния узла при помощи REST API

Для получения информации о состоянии узла используется REST API запрос /cdn/show_nodes

REST-запрос должен быть HTTP/HTTPS POST запросом в

Предотвращение транскодирования на Origin

Для того, чтобы Origin узлы не принимали на себя транскодинг, если все Transcoder узлы заняты, предусмотрена настройка

Code Block
themeRDark
cdn_origin_allowed_to_transcode=false

В данном случае (по умолчанию), если для транскодирования нового потока по указанному профилю нет доступных Transcoder узлов, поток не будет играться с ошибкой No available transcoders.

При необходимости, транскодирование на Origin серверах можно разрешить

Code Block
themeRDark
cdn_origin_allowed_to_transcode=true

Эта настройка должна задаваться на Edge узлах.

Управление текущим состоянием узла при помощи REST API

REST-запрос должен быть HTTP/HTTPS POST запросом в таком виде:

  • HTTP: http://test.flashphoner.com:8081/rest-api/cdn/show_nodes
  • HTTPS: https://test.flashphoner.com:8444/rest-api/cdn/show_nodes

...

  • test.flashphoner.com - адрес WCS-сервера
  • 8081 - стандартный REST / HTTP порт WCS-сервера
  • 8444 - стандартный HTTPS порт
  • rest-api - обязательная часть URL
  • /cdn/show_stream_routesnodes - используемый REST-метод

...

REST-метод

Пример тела REST-запроса

Пример тела REST-ответа

Статусы ответа

Описание

/cdn/show_nodes/show_nodes



Code Block
languagejs
themeRDark
[
    {
        "globalState": "ACTIVE", 
        "id": "192.168.1.64", 
        "processingState": "NEW_STREAMS_ALLOWED", 
        "role": "TRANSCODER"
    }, 
    {
        "globalState": "ACTIVE", 
        "id": "192.168.1.39", 
        "processingState": "NEW_STREAMS_ALLOWED", 
        "role": "ORIGIN"
    }
]

200 – OK

500 – Internal Server Error

Показать состояние узлов CDN

/cdn/show_node_state
Code Block
languagejs
themeRDark
NEW_STREAMS_ALLOWED

200 – OK

500 – Internal Server Error

Показать состояние узла CDN, которому направлен запрос
/cdn/enforce_node_state
Code Block
languagejs
themeRDark
{
"state": "GROUP_CONNECTIONS_ALLOWED"
}

200 – OK

500 – Internal Server Error

Принудительно изменить состояние узла

Параметры

Имя параметра

Описание

Пример

globalState

Статус узла: ACTIVE или PASSIVE

ACTIVE

id

Адрес узла

192.168.1.64
processingState

Участвует ли узел в выборе маршрута для воспроизведения потоков:

NEW_STREAMS_ALLOWED - участвует

GROUP_CONNECTION_ALLOWED - не участвует

NEW_STREAMS_ALLOWED
roleРоль узла: ORIGIN, TRANSCODER или EDGE
ORIGIN

Запрос /cdn/show_nodes может быть направлен определенному узлу, в ответ узел вернет состояния всех видимых ему узлов CDN, кроме себя самого.

Запрос /cdn/enforce_node_state позволяет принудительно изменить состояние узла, например, вывести определенный транскодер из выбора маршрутов. Для сброса заданного состояния необходимо передать пустое тело запроса

Code Block
languagejs
themeRDark

...

POST /rest-api/cdn/enforce_state HTTP/1.1
Content-Length: 4                

...

        

...


Content-Type: application/json         

...

 

...

 
                 

...

 

...

 

...

        

...

 

...

    

...

 

...

    

...

    
{}    

...

 

...

 

...

        

...

 

...

 

...

        

...

 

...

 

...

        

...

 

...

    

...

200 – OK

500 – Internal Server Error

...

Показать состояние узлов CDN

Параметры

...

Имя параметра

...

Описание

...

Пример

...

globalState

...

Статус узла: ACTIVE или PASSIVE

...

ACTIVE

...

id

...

Адрес узла

...

192.168.1.64

...

Участвует ли узел в выборе маршрута для воспроизведения потоков:

NEW_STREAMS_ALLOWED - участвует

GROUP_CONNECTION_ALLOWED - не участвует

...

NEW_STREAMS_ALLOWED

...

ORIGIN

...

Вычисление текущего состояния узла и его рассылка

Текущее состояние узла определяется следующим образом в порядке приоритета:
1. Если есть значение, заданное принудительно при помощи запроса /cdn/enforce_node_state, то выбирается это значение.
2. Если достигнуто ограничение по нагрузке процессора, то выбирается состояние GROUP_CONNECTIONS_ALLOWED.
3. Если достигнуто ограничение по кодировщикам видео, то выбирается состояние GROUP_CONNECTIONS_ALLOWED.
4. Если ограничения не достигнуты, то выбирается состояние NEW_STREAMS_ALLOWED.

Узел рассылает свое состояние другим узлам с периодичностью, заданной в миллисекундах при помощи настройки

Code Block
themeRDark
cdn_nodes_state_refresh_interval=60000

По умолчанию, периодичность рассылки составляет 60 секунд. Для Transcoder узлов рекомендуется уменьшить это значение до 1 секунды, чтобы своевременно распределять потоки на другие узлы.

Авторизация узлов в CDN

Авторизация узлов, которые пытаются подключиться к CDN, производится по IP-адресу. Адреса узлов, которые могут войти в CDN, должны быть указаны в следующей настройке

...