Надежная видео- (и не
только) раздача
минимальными
средствами
Евгений Потапов
Евгений Потапов
10 лет опыта веб-разработки

4 года опыта использования
облачных технологий
генеральный директор компании
«Сумма АйТи»
Disclaimer
• Мы не занимаемся видео-бизнесом – сайд-проект 
• Речь может идти и не только про видео
• Мы не особо ориентируемся на географию пользователя – но пока
все довольны

• Речь не идет о видео-стримминге
Поддержка высоконагруженных веб-сайтов
140 миллионов уникальных посетителей в сутки

Более тысячи серверов на поддержке
производство и дистрибуция развлекательного видео контента. Для
интернета и ТВ.
120 000 уникальных посетителей на сайте CarambaTV.ru в сутки
18-20 миллионов просмотров видео на собственном плеере в месяц
Цели своего видео-CDN
• Прозрачность надежности раздачи видео
• Возможность выбора видеоформатов
• Гибкость доработки плеера и аналитики
• Прозрачность и контроль расходов
Содержание
• Транскодинг
• Распределение видео по серверам
• Раздача видео пользователям
• Поддержка
1. Транскодинг
• Админ-панель
• Служба очередей (принимает запросы от админ-панели)
• Транскодеры (получают задания из очереди)
• Таймер (оценивает общее время процессинга)
• AWS-клиент – докупает транскодеры
1. Транскодинг – до масштабирования
1. Транскодинг - масштабирование
1. Транскодинг – реальная жизнь
• Не было ни одного случая когда потребовалось бы
масштабирование транскодеров
• Чаще всего в процессинге одновременно вообще находится
только один файл
Распространение видео по серверам
• lsync/rsync
• TODO: торренты
2. Распространение видео по
серверам
lsync/rsync
•Транскодированное видео загружается на один из случайно
выбранных серверов CDN
•Серверы находятся в кольце lsync-синхронизаций в пределах
одного датацентра
•По одному из серверов в каждом датацентре также находится в
lsync-кольце
2. Распространение видео по
серверам
lsync/rsync
2. Распространение видео по
серверам
lsyncd/rsync - минусы:
•Выпадение любого из серверов ведет к разрушению кольца в
данном датацентре и, в перспективе – к нарушению
распространения видео в целом
•С ростом числа серверов замедляется скорость распространения
контента (распространение идет последовательно)
2. Распространение видео по
серверам
торренты - софт:
•трекер – opentracker
•клиент - transmission
2. Распространение видео по
серверам
торренты – тестирование – без трэкера:
•Создаем torrent-файл для раздачи (без торрент-трекера),
размещаем на мастер-сервере
•Через rsync/scp раскидываем по slave-машинам
•Торрент подцепляется и должна начаться загрузка
2. Распространение видео по
серверам
торренты – тестирование – без трэкера – результат:
синее – master->slave1
красное – slave1->slave2
2. Распространение видео по
серверам
торренты – тестирование – с трэкером:
•На мастере запущен opentracker, торрент создан с трэкером
•Через rsync/scp раскидываем торрент по slave-машинам
•Transmission подцепляет торрент-файл
2. Распространение видео по
серверам
торренты – тестирование – c трэкером - результат:
•Загрузка запускается моментально
•Равномерная загрузка друг с друга
•Гигабайтовый торрент роздан за 1.5-2 минуты
2. Распространение видео по
серверам
торренты – тестирование – c трэкером - результат:
2. Распространение видео по
серверам
Главное преимущество распространения данных через торренты–
добавление новых узлов в CDN с минимальным вмешательством
в текущую структуру.

Требуется только положить torrent-файл на новый сервер, и по
завершению синхронизации добавить его в балансировку.
3. Раздача
• Высокая пропускная способность площадки (от 10 гигабит в
пиках)
• Большое количество (идеально безлимитное) включенного
траффика
• Абюзоустойчивость (в легальных пределах)
• Техническая устойчивость
3. Раздача
Технические требования к площадке:
•Высокая пропускная способность площадки (площадок)
•Способность нарастить мощности (и в долгосрочном и в
краткосрочном периоде)
•Дешевый траффик, недорогое железо
•Небольшой пинг
3. Раздача
Abuse-риски при выборе площадки:
•Короткое время дается на то чтобы ответить на жалобу (или
времени вообще не дают)
•Слабое информирование
•Отказ от детального рассмотрения жалобы
3. Раздача
Технические риски:
•Слабая техническая поддержка, долгое время реакции
•Небольшой штат
•«Реселлинговые» контракты, которые могут быть разорваны
•Небольшое количество каналов, возможно глобальное падение
всего ДЦ.
3. Раздача
Выбранные площадки:
•Softlayer как «домашняя» площадка для управления,
транскодинга, dns и вспомогательных служб.
•CDN/streaming площадки: 100tb-london, 100tb-softlayer, +еще один
дц.
3. Раздача
Выбранные площадки:
•Softlayer – очень дорогой траффик.
•Остальные – могут упасть.
•Нужно: способность быстро балансироваться без Single Point of
Failure.
3. Раздача
Балансировка:
•Софт?
•Железо?
•DNS?
3. Раздача
Балансировка - железо:
•Минимум три устройства
•Дорого
•Авария на устройстве = аварии в ДЦ
3. Раздача
Балансировка - софт:
•Порт на сервере должен равняться сумме всех портов бэкэндов
•Single Point of Failure
3. Раздача
Балансировка – DNS round robin:
•Легкое добавление новых машин
•Отсутствие single point of failure (при надежном DNS-хостинге)
•Относительно легкое «изъятие» упавших серверов
3. Раздача
Балансировка – DNS round robin:
Проблема: на время загрузки одного файла домен будет уже
сохранен в DNS-кэше юзера
•Не страшно если сервер/софт упал (юзер обновится/сдвинет
позицию на видео)
•Очень долго если нужно вывести сервер для проведения
технических мероприятий
3. Раздача
Балансировка – DNS round robin:
Проблема: на время загрузки одного файла домен будет уже
сохранен в DNS-кэше юзера
3. Раздача
Балансировка – TODO:
Балансировка на уровне плеера: список доступных серверов
получаемый плеером из нескольких узловых точек.
4. Поддержка
• Серверный мониторинг
• Мониторинг последней мили
• Масштабирование при пиковых нагрузках
4. Поддержка
Серверный мониторинг
Кроме типичных задач – контроль скорости на портах и контроль
используемого траффика в ДЦ
•Интеграция с панелями хостинг-провайдеров через API или через
граббер
•Алерты на достижение критических величин объемов траффик
(70% от месячного лимита на траффик) и аномальное поведение
сервера по сравнению с пулом
•Перебалансировка/докупка серверов
4. Поддержка
Мониторинг на «последней мили» - TODO:
•Мониторинг и отсылка на стороне плеера соотношения времени
проигрывания к системному времени
•Агрегация на стороне сервера данных по регионам
•Вывод из балансировки проблемных магистралей
•Прозрачность жалоб пользователей
Евгений Потапов
http://itsumma.ru
eapotapov@itsumma.ru
@eapotapov

Евгений Потапов, АйТиСумма

  • 1.
    Надежная видео- (ине только) раздача минимальными средствами Евгений Потапов
  • 2.
    Евгений Потапов 10 летопыта веб-разработки 4 года опыта использования облачных технологий генеральный директор компании «Сумма АйТи»
  • 3.
    Disclaimer • Мы незанимаемся видео-бизнесом – сайд-проект  • Речь может идти и не только про видео • Мы не особо ориентируемся на географию пользователя – но пока все довольны • Речь не идет о видео-стримминге
  • 4.
    Поддержка высоконагруженных веб-сайтов 140миллионов уникальных посетителей в сутки Более тысячи серверов на поддержке
  • 5.
    производство и дистрибуцияразвлекательного видео контента. Для интернета и ТВ. 120 000 уникальных посетителей на сайте CarambaTV.ru в сутки 18-20 миллионов просмотров видео на собственном плеере в месяц
  • 6.
    Цели своего видео-CDN •Прозрачность надежности раздачи видео • Возможность выбора видеоформатов • Гибкость доработки плеера и аналитики • Прозрачность и контроль расходов
  • 7.
    Содержание • Транскодинг • Распределениевидео по серверам • Раздача видео пользователям • Поддержка
  • 8.
    1. Транскодинг • Админ-панель •Служба очередей (принимает запросы от админ-панели) • Транскодеры (получают задания из очереди) • Таймер (оценивает общее время процессинга) • AWS-клиент – докупает транскодеры
  • 9.
    1. Транскодинг –до масштабирования
  • 10.
    1. Транскодинг -масштабирование
  • 11.
    1. Транскодинг –реальная жизнь • Не было ни одного случая когда потребовалось бы масштабирование транскодеров • Чаще всего в процессинге одновременно вообще находится только один файл
  • 12.
    Распространение видео посерверам • lsync/rsync • TODO: торренты
  • 13.
    2. Распространение видеопо серверам lsync/rsync •Транскодированное видео загружается на один из случайно выбранных серверов CDN •Серверы находятся в кольце lsync-синхронизаций в пределах одного датацентра •По одному из серверов в каждом датацентре также находится в lsync-кольце
  • 14.
    2. Распространение видеопо серверам lsync/rsync
  • 15.
    2. Распространение видеопо серверам lsyncd/rsync - минусы: •Выпадение любого из серверов ведет к разрушению кольца в данном датацентре и, в перспективе – к нарушению распространения видео в целом •С ростом числа серверов замедляется скорость распространения контента (распространение идет последовательно)
  • 16.
    2. Распространение видеопо серверам торренты - софт: •трекер – opentracker •клиент - transmission
  • 17.
    2. Распространение видеопо серверам торренты – тестирование – без трэкера: •Создаем torrent-файл для раздачи (без торрент-трекера), размещаем на мастер-сервере •Через rsync/scp раскидываем по slave-машинам •Торрент подцепляется и должна начаться загрузка
  • 18.
    2. Распространение видеопо серверам торренты – тестирование – без трэкера – результат: синее – master->slave1 красное – slave1->slave2
  • 19.
    2. Распространение видеопо серверам торренты – тестирование – с трэкером: •На мастере запущен opentracker, торрент создан с трэкером •Через rsync/scp раскидываем торрент по slave-машинам •Transmission подцепляет торрент-файл
  • 20.
    2. Распространение видеопо серверам торренты – тестирование – c трэкером - результат: •Загрузка запускается моментально •Равномерная загрузка друг с друга •Гигабайтовый торрент роздан за 1.5-2 минуты
  • 21.
    2. Распространение видеопо серверам торренты – тестирование – c трэкером - результат:
  • 22.
    2. Распространение видеопо серверам Главное преимущество распространения данных через торренты– добавление новых узлов в CDN с минимальным вмешательством в текущую структуру. Требуется только положить torrent-файл на новый сервер, и по завершению синхронизации добавить его в балансировку.
  • 23.
    3. Раздача • Высокаяпропускная способность площадки (от 10 гигабит в пиках) • Большое количество (идеально безлимитное) включенного траффика • Абюзоустойчивость (в легальных пределах) • Техническая устойчивость
  • 24.
    3. Раздача Технические требованияк площадке: •Высокая пропускная способность площадки (площадок) •Способность нарастить мощности (и в долгосрочном и в краткосрочном периоде) •Дешевый траффик, недорогое железо •Небольшой пинг
  • 25.
    3. Раздача Abuse-риски привыборе площадки: •Короткое время дается на то чтобы ответить на жалобу (или времени вообще не дают) •Слабое информирование •Отказ от детального рассмотрения жалобы
  • 26.
    3. Раздача Технические риски: •Слабаятехническая поддержка, долгое время реакции •Небольшой штат •«Реселлинговые» контракты, которые могут быть разорваны •Небольшое количество каналов, возможно глобальное падение всего ДЦ.
  • 27.
    3. Раздача Выбранные площадки: •Softlayerкак «домашняя» площадка для управления, транскодинга, dns и вспомогательных служб. •CDN/streaming площадки: 100tb-london, 100tb-softlayer, +еще один дц.
  • 28.
    3. Раздача Выбранные площадки: •Softlayer– очень дорогой траффик. •Остальные – могут упасть. •Нужно: способность быстро балансироваться без Single Point of Failure.
  • 29.
  • 30.
    3. Раздача Балансировка -железо: •Минимум три устройства •Дорого •Авария на устройстве = аварии в ДЦ
  • 31.
    3. Раздача Балансировка -софт: •Порт на сервере должен равняться сумме всех портов бэкэндов •Single Point of Failure
  • 32.
    3. Раздача Балансировка –DNS round robin: •Легкое добавление новых машин •Отсутствие single point of failure (при надежном DNS-хостинге) •Относительно легкое «изъятие» упавших серверов
  • 33.
    3. Раздача Балансировка –DNS round robin: Проблема: на время загрузки одного файла домен будет уже сохранен в DNS-кэше юзера •Не страшно если сервер/софт упал (юзер обновится/сдвинет позицию на видео) •Очень долго если нужно вывести сервер для проведения технических мероприятий
  • 34.
    3. Раздача Балансировка –DNS round robin: Проблема: на время загрузки одного файла домен будет уже сохранен в DNS-кэше юзера
  • 35.
    3. Раздача Балансировка –TODO: Балансировка на уровне плеера: список доступных серверов получаемый плеером из нескольких узловых точек.
  • 36.
    4. Поддержка • Серверныймониторинг • Мониторинг последней мили • Масштабирование при пиковых нагрузках
  • 37.
    4. Поддержка Серверный мониторинг Крометипичных задач – контроль скорости на портах и контроль используемого траффика в ДЦ •Интеграция с панелями хостинг-провайдеров через API или через граббер •Алерты на достижение критических величин объемов траффик (70% от месячного лимита на траффик) и аномальное поведение сервера по сравнению с пулом •Перебалансировка/докупка серверов
  • 38.
    4. Поддержка Мониторинг на«последней мили» - TODO: •Мониторинг и отсылка на стороне плеера соотношения времени проигрывания к системному времени •Агрегация на стороне сервера данных по регионам •Вывод из балансировки проблемных магистралей •Прозрачность жалоб пользователей
  • 39.