Внутрикорпоративная CDN¶
Внутрикорпоративная CDN в Agora используется для доставки потока в удаленные офисы и сегменты корпоративной сети, где прямое вещание с центрального origin-сервера создает лишнюю нагрузку на медленные или дорогие каналы связи.
В этом режиме Agora направляет зрителя не сразу на центральный origin, а на подходящий рестример внутри его сетевой зоны. Благодаря этому один и тот же поток доставляется в удаленный офис один раз, а дальше раздается локально через рестример.
Как работает CDN в Agora¶
В схеме внутрикорпоративной CDN используются следующие сущности:
origin-стримеры - исходные узлы, на которых поток принимается или формируется в Agora;restreamer- узел раздачи, который получает поток от origin и обслуживает зрителей внутри своей зоны;zone- логическая зона корпоративной сети, обычно удаленный офис;CIDR-маршруты - правила, по которым IP-адрес зрителя сопоставляется с зоной;fallback zone- резервная зона, которая используется, если в основной зоне нет доступных рестримеров.
Зритель открывает ссылку на поток в браузере. Agora определяет IP-адрес клиента, находит подходящую зону, выбирает в ней доступный рестример с минимальной текущей нагрузкой и отдает клиенту адрес воспроизведения.
Если в зоне нет доступных рестримеров, Agora использует резервную зону. Если IP-адрес клиента не попал ни в одно правило маршрутизации, CDN-маршрутизация для этого клиента не применяется.
Когда администратору нужно настраивать CDN¶
CDN настраивают в тех случаях, когда:
- сотрудников много и один
originне справится с раздачей - сотрудники смотрят одни и те же live-потоки из удаленных филиалов;
- между центральной площадкой и филиалом есть медленный приватный канал;
- нужно уменьшить количество одновременных подключений к центральному origin;
- необходимо закрепить определенные диапазоны IP-адресов за локальными узлами раздачи.
Что нужно подготовить заранее¶
Перед настройкой CDN администратор подготавливает:
- хотя бы один рабочий
origin-стример, на котором уже доступен поток; - хотя бы один сервер, который будет зарегистрирован как
restreamer; - сетевые диапазоны филиалов или офисов в формате
CIDR, например10.20.30.0/24; - внешний адрес раздачи для каждого рестримера, который будет использоваться зрителем, например
https://edge-1.office.example; - при необходимости резервную зону для аварийного переключения.
Перед настройкой CDN надо убедиться, что origin-стримеры уже видны в разделе Стримеры, находятся в рабочем состоянии.
Порядок настройки CDN¶
Рекомендуемый порядок настройки:
- Настроить origin-стримеры.
- Создать зоны.
- Настроить
CIDR-маршруты зон. - Указать резервные зоны при необходимости.
- Настроить рестримеры.
- Назначить рестримеры в зоны.
- Проверить выдачу конфигурации рестримерам.
- Проверить viewer portal из нужной сети.
Именно такой порядок уменьшает количество ошибок, связанных с пустыми зонами, незаполненными адресами раздачи и неправильной маршрутизацией клиентов.
Раздел Streams: список потоков¶

Потоки создаются и редактируются в разделе Streams левого меню. Для сценария CDN на origin должен быть настроен хотя бы один поток, который зрители будут открывать через viewer portal и balancer. Подробнее о настройке потоков см. в разделе Потоки.
Создание зоны¶
Зона описывает отдельный офис, филиал или сетевой сегмент, где зрители должны обслуживаться через локальный рестример.
В карточке зоны администратор задает:
name;fallback zone, если нужен резерв;- список
CIDR-маршрутов; - опцию «Пропускать проверку живости стримера» (
skip_streamer_healthcheckв API): если она включена, встроенный balancer при маршрутизации в эту зону выбирает рестример без требований к свежей статистике и успешному healthcheck на рёбре. Отключённые (disabled) рестримеры по-прежнему не участвуют. У резервной зоны своё значение этой опции. Имеет смысл только для лабораторных проверок CDN, без продакшена с реальными зрителями.
Название зоны должно быть уникальным и понятным, например:
msk-office-1;spb-office;plant-a;vpn-users.
Резервная зона используется, если в основной зоне нет ни одного доступного рестримера.


На скриншоте карточки показан пример зоны с сохранённым CIDR, без резервной зоны и с включённой опцией «Пропускать проверку живости стримера» для лабораторной проверки.
Настройка CIDR-маршрутов¶
Маршруты в зоне задаются в формате CIDR.
В admin API каждый маршрут передаётся полями address (строка — IPv4-адрес сети в dot notation, например 10.0.0.0) и mask (целое число — длина префикса, как в CIDR: 24 для /24). Внутреннее хранение в базе может отличаться; на границе API используется именно строка с точками между октетами. Запись вида 10.0.0.0/24 в интерфейсе админки можно разобрать на эту пару полей.
Примеры корректных маршрутов:
10.12.13.0/24;10.12.0.0/16;192.168.100.0/24;0.0.0.0/0.
Agora сопоставляет IP-адрес зрителя с маршрутами всех зон и выбирает правило с самой длинной маской. Это означает, что более специфичное правило имеет приоритет над более общим.
Например:
- зона
Office-Aсодержит маршрут10.12.0.0/16; - зона
Office-A-floor-3содержит маршрут10.12.13.0/24.
Зритель с адресом 10.12.13.42 попадет в Office-A-floor-3, потому что маршрут /24 точнее, чем /16.
Если один и тот же CIDR уже используется в другой зоне, его нужно перенести или удалить из старой зоны. Один и тот же маршрут не должен одновременно принадлежать нескольким зонам.
Маршрут 0.0.0.0/0 отвечает за дефолтный роутинг. Если его не указать, то клиент, который не попал ни в один маршрут, окажется без выданного рестримера и без проигрывания.
Настройка резервной зоны¶
Резервную зону используют в тех случаях, когда в основной зоне все рестримеры недоступны или отключены.
При настройке резервирования рекомендуется:
- выбирать резервную зону, до которой у офиса действительно есть рабочая связность;
- не создавать циклические цепочки резервирования;
- использовать простую и понятную схему резервирования, чтобы ее было легко сопровождать.
Типичный пример:
- зона
office-ekbимеет основной локальный рестример; - зона
office-mskназначена какfallback zoneдляoffice-ekb.
Если локальный рестример в office-ekb недоступен, зрители из этой зоны начинают получать поток через office-msk.
Настройка рестримера¶
Рестример создается в том же разделе стримеров, что и обычный стример, но для него выбирается тип restreamer.
В карточке рестримера администратор заполняет:
hostname;- тип узла
restreamer; - схему подключения
HTTPилиHTTPS; - API-порт;
zone;playback_base_url.
Поле playback_base_url задает адрес, который Agora возвращает зрителям для воспроизведения потока. Обычно это внешний URL рестримера в корпоративной сети или в пользовательском сегменте, например https://edge-1.office.example.
Для рестримера привязка к зоне обязательна. Один рестример может относиться только к одной зоне.


Что получает рестример от Agora¶
Рестример получает конфигурацию через config_external, как и другие стримеры, но в CDN-сценарии Agora выдает ему on-demand-конфигурацию для раздачи потоков.
Это означает следующее:
- поток на рестримере не поднимается заранее без запроса зрителя;
- рестример получает вход от origin в формате
m4s; - публикация на рестримере запускается по первому обращению клиента.
Такой режим уменьшает постоянную нагрузку на рестример и не заставляет держать активными все возможные потоки одновременно.
Как Agora выбирает рестример для зрителя¶
При обращении зрителя к потоку Agora выполняет следующие действия:
- Определяет IP-адрес клиента.
- Ищет подходящую зону по
CIDR. - Находит в зоне доступные рестримеры.
- Исключает отключенные и недоступные узлы.
- Выбирает рестример с минимальным количеством текущих клиентов.
- Возвращает viewer portal адрес воспроизведения на выбранном рестримере.
В качестве доступных рассматриваются только те рестримеры, которые:
- не отключены в административном интерфейсе;
- отвечают на healthcheck как рабочие;
- имеют актуальную эксплуатационную статистику.
Если для зоны включена опция «Пропускать проверку живости стримера», то для шага выбора именно в этой зоне требования к healthcheck и к свежести статистики не применяются: в кандидаты попадают все привязанные к зоне рестримеры, кроме отключённых в админке. При переходе по цепочке fallback к другой зоне снова действуют её собственные настройки.
Отладка CDN: query-параметр source_ip¶
Для проверки маршрутизации balancer и viewer portal с рабочего места вне целевой корпоративной подсети в URL страницы портала можно добавить query-параметр source_ip: Agora будет считать «адресом зрителя» указанный IPv4 или IPv6 и подбирать зону по CIDR так, как если бы запрос пришёл с этого IP. Страница портала передаёт тот же параметр в запрос к balancer/streams/{stream}; при необходимости вместе с ним пробрасывается и token viewer API.
Типичный сценарий отладки в связке с skip_streamer_healthcheck:
- в зонах, которые хочется проверить, можно включить «Пропускать проверку живости стримера», чтобы не зависеть от живой статистики и healthcheck;
- в
CIDRмаршрутах этой зоны вписать правильные адреса, которые должны относиться к этой зоне; - открыть viewer portal с
?source_ip=…и убедиться, что в ответе balancer попадаете в нужную зону и получаете ожидаемыйplayback_url.
Так можно пошагово проверить зоны, fallback и выбор рестримера без физического нахождения в сегменте сети и без поднятого «зелёного» edge по метрикам. В бою опцию source_ip не используют: она обходит естественное сопоставление с реальным адресом клиента и предназначена для диагностики и лабораторных стендов.
Ниже — пример страницы viewer portal: в блоке отображается итоговый playback_url, выданный balancer. При source_ip=10.1.0.1 (зона с маршрутом 10.1.0.0/16) в URL виден edge первого офиса (srv1 в примере стенда):

При source_ip=10.2.0.2 выбирается зона 10.2.0.0/16 и соответствующий рестример (srv2):

Как администратору проверить, что CDN настроена правильно¶
После настройки рекомендуется проверить CDN по следующему сценарию:
- Открыть раздел стримеров и убедиться, что нужный рестример зарегистрирован и не отключен.
- Проверить, что у рестримера заполнены
zoneиplayback_base_url. - Открыть карточку зоны и убедиться, что нужный
CIDRсохранен корректно. - Проверить, что у зоны при необходимости указана резервная зона и что опция пропуска проверки живости включена только там, где это осознанно нужно для тестов.
- Проверить, что поток существует и работает на origin.
- Проверить, что рестример получает внешнюю конфигурацию через
config_external. - Открыть viewer portal из сети, IP-адрес которой попадает в нужную зону.
- Убедиться, что воспроизведение идет через локальный рестример, а не напрямую с origin.
Практически это удобно проверять из рабочего места в соответствующем филиале или через тестовый хост в нужном сетевом сегменте.
Что видит пользователь при корректной настройке¶
Для пользователя CDN работает прозрачно. Он открывает обычную ссылку на поток, а Agora сама:
- определяет подходящую зону;
- выбирает оптимальный рестример;
- направляет воспроизведение на локальный адрес раздачи.
Пользователю не нужно вручную выбирать офис, узел или точку вещания.
Типовые ошибки настройки¶
Если CDN не работает ожидаемым образом, администратор в первую очередь проверяет следующее:
- рестример создан как
restreamer, а не как обычный origin; - рестример не отключен;
- у рестримера заполнен
playback_base_url; - рестример привязан к правильной зоне;
- в зоне сохранен корректный
CIDR; - IP-адрес клиента действительно попадает в нужный маршрут;
- у зоны не задана ошибочная резервная зона;
- origin-стример доступен и отдает поток;
- рестример получает
config_external; - в зоне есть хотя бы один доступный рестример.
Если IP-адрес клиента не попадает ни в один маршрут, CDN-маршрутизация для такого клиента не применяется. В этой ситуации в первую очередь проверяют правильность сети, маски и порядок фактической маршрутизации трафика в корпоративной инфраструктуре.
Рекомендуемый эксплуатационный подход¶
Для устойчивой работы внутрикорпоративной CDN рекомендуется:
- называть зоны по физической или организационной топологии;
- не смешивать в одной зоне несвязанные офисы;
- держать хотя бы один резервный маршрут обслуживания для критичных площадок;
- регулярно проверять состояние рестримеров в разделе мониторинга;
- отдельно контролировать доступность origin и edge-узлов;
- документировать, какой диапазон IP относится к какому офису.
Такой подход упрощает сопровождение, масштабирование и аварийное переключение при проблемах в сети или на отдельных узлах.