Балансировка

pride

Member
Здравствуйте! Подскажите какой метод балансировки на Ваш взгляд лучше реализовать нам.
Имеем:
Code:
CPU : AMD EPYC 7401P 24-Core Processor
Mem: 126gb
WCS 5.2
Все отлично работает.
При 300 стримеров и 200+ плееров загрузка сервера 30 - 40% (включено принудительное кодирование).
Подходим к приделу пропускной способности. по этому решили реализовать балансировку.
Какая архитектура cdn по Вашему мнению, более применим в нашем случаи?
 

Max

Administrator
Staff member
Добрый день.
Выбор схемы CDN зависит от того, как именно будет расти нагрузка. Если планируется увеличить количество плееров, необходимо добавлять Edge серверы. Если будет расти количество стримеров, а также при исчерпании вычислительных ресурсов (если транскодирование работает на том же сервере, куда публикуются потоки), необходимо добавлять Origin серверы.
Таким образом, начать можно со схемы 1 Origin + 2 Edge, а затем добавлять Origin/Edge серверы по необходимости. Если же проблема в пропускной способности каналов до сервера, возможно, стоит использовать схему 2 Origin + 2 Edge, в которой пары Origin + Edge разнесены по разным датацентрам.
В любом случае, балансировка нагрузки реализуется внешними средствами, например HAProxy или, если серверы располагаются на Amazon, AWS LB.
 

pride

Member
Выбрали структуру Origin + Edge + Edge + Edge.
Origin принимает все входящие потоки. Edge - исходящие.
Вопрос, возможно ли запретить Origin отдавать входящие потоки а перенаправлять на Edge у которого уже есть этот поток?
 

Max

Administrator
Staff member
Доступы регулируются с помощью вебсокет соединений.
Перед тем, как проиграть поток, необходимо установить соединение с сервером.
Например, установили Websocket соединение с Origin и проиграли поток напрямую с него.
Чтобы запретить прямые коннекты к ориджину, есть два варианта:
1. Использовать REST хуки для авторизации и авторизовывать на PLAY только те запросы, которые приходят с Edge-серверов, по IP адресам
https://docs.flashphoner.com/display/WCS52RU/REST+hooks
2. Использовать ACL и на каждый стрим назначать ключи доступа. В этом случае, стрим сможет получить только тот пользователь, который передал при коннекте корректный ключ: https://docs.flashphoner.com/display/WCS52RU/CDN+2.2
Т.е. при обращении к Edge серверам передаем ключи.
А при обращении к Origin не передаем.
3. Установить nginx, проксирующий Websocket соединение на один из серверов: Origin, Edge, и крутить логику доступа на nginx. Например на основе переданных параметров решить, куда приземлять Websocket соединение - на Origin или на Edge.
 
Top