1. Надежная видео- (и не
только) раздача
минимальными
средствами
Евгений Потапов
2. Евгений Потапов
10 лет опыта веб-разработки
4 года опыта использования
облачных технологий
генеральный директор компании
«Сумма АйТи»
3. Disclaimer
• Мы не занимаемся видео-бизнесом – сайд-проект
• Речь может идти и не только про видео
• Мы не особо ориентируемся на географию пользователя – но пока
все довольны
• Речь не идет о видео-стримминге
5. производство и дистрибуция развлекательного видео контента. Для
интернета и ТВ.
120 000 уникальных посетителей на сайте CarambaTV.ru в сутки
18-20 миллионов просмотров видео на собственном плеере в месяц
6. Цели своего видео-CDN
• Прозрачность надежности раздачи видео
• Возможность выбора видеоформатов
• Гибкость доработки плеера и аналитики
• Прозрачность и контроль расходов
11. 1. Транскодинг – реальная жизнь
• Не было ни одного случая когда потребовалось бы
масштабирование транскодеров
• Чаще всего в процессинге одновременно вообще находится
только один файл
13. 2. Распространение видео по
серверам
lsync/rsync
•Транскодированное видео загружается на один из случайно
выбранных серверов CDN
•Серверы находятся в кольце lsync-синхронизаций в пределах
одного датацентра
•По одному из серверов в каждом датацентре также находится в
lsync-кольце
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 минуты
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.
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:
•Мониторинг и отсылка на стороне плеера соотношения времени
проигрывания к системному времени
•Агрегация на стороне сервера данных по регионам
•Вывод из балансировки проблемных магистралей
•Прозрачность жалоб пользователей