
669cb064051225e1133af6f9f42af6f0.ppt
- Количество слайдов: 42
Как мы делали видеораздачу для carambatv. ru
Евгений Потапов 10 лет опыта веб-разработки 4 года опыта использования облачных технологий генеральный директор компании «Сумма Ай. Ти»
Поддержка высоконагруженных веб-сайтов 140 миллионов уникальных посетителей в сутки Более тысячи серверов на поддержке
производство и дистрибуция развлекательного видео контента. Для интернета и ТВ. 120 000 уникальных посетителей на сайте Caramba. TV. ru в сутки 18 -20 миллионов просмотров видео на собственном плеере в месяц
Цели своего видео-CDN ๏ Надежная (как минимум с политической точки зрения) раздача видео ๏ Возможность выбора видеоформатов ๏ Гибкость доработки плеера и аналитики ๏ Контроль за расходами
Составляющие ๏ 1. Транскодинг ๏ 2. Распространение видео по серверам ๏ 3. Раздача видео пользователям ๏ 4. Поддержка
1. Транскодинг ๏ Админ-панель ๏ Служба очередей (принимает запросы на процессинг от админ-панели) ๏ Транскодеры (получают задания из очереди) ๏ Таймер (оценивает общее время процессинга) ๏ AWS клиент – докупает транскодеров
1. Транскодинг – до скейлинга
1. Транскодинг - скейлинг
1. Транскодинг – реальная жизнь ๏ Не было ни одного случая когда потребовалось бы масштабирование транскодеров ๏ Чаще всего в процессинге одновременно находится один файл
2. Распространение видео по серверам ๏ lsyncd/rsync ๏ TODO: торренты
2. Распространение видео по серверам lsyncd/rsync: ๏ Транскодированное видео загружается на один из случайно выбранных серверов CDN. ๏ Серверы находятся в кольце lsync- синхронизаций в пределах одного датацентра. ๏ По одному из серверов в каждом датацентре также находится в lsyncкольце
2. Распространение видео по серверам lsyncd/rsync:
2. Распространение видео по серверам lsyncd/rsync - минусы: ๏ Выпадение любого из серверов ведет к разрушению кольца в данном датацентре и, в перспективе – к нарушению распространения видео в целом ๏ С ростом числа серверов замедляется скорость распространения контента (распространение идет последовательно)
2. Распространение видео по серверам торренты - софт: ๏ трекер – opentracker ๏ клиент - transmission
2. Распространение видео по серверам торренты – тестовое окружение: master – раздающий контент сервер slave 1/slave 2 – узлы CDN-а
2. Распространение видео по серверам торренты – тестирование – без трэкера: ๏ Создаем torrent-файл для раздачи (без торрент-трекера), размещаем на мастер-сервере transmission-create -o folder. torrent folder/ ๏ Через rsync/scp раскидываем по slave- машинам ๏ Торрент подцепляется и должна начаться загрузка
2. Распространение видео по серверам торренты – тестирование – без трэкера - результат: ๏ Загрузка запустилась через 30 минут ๏ slave 1 не видел master и качал только со slave 2 ๏ Скорость нестабильна (возможно из-за ограничения)
2. Распространение видео по торренты – тестирование – без серверам трэкера – результат: синее – master->slave 1 красное – slave 1 ->slave 2
2. Распространение видео по торренты – тестирование – с серверам трэкером: ๏ На мастере запущен opentracker, торрент создан с трэкером ๏ Через rsync/scp раскидываем торрент по slave-машинам ๏ Transmission подцепляет торрент- файл
2. Распространение видео по серверам торренты – тестирование – c трэкером - результат: ๏ Загрузка запускается моментально ๏ Равномерная загрузка друг с друга ๏ Гигабайт-овый торрент роздан за 1. 5 -2 минуты
2. Распространение видео по серверам торренты – тестирование – с трэкером – результат:
2. Распространение видео по серверам Главное преимущество распространения данных через торренты– добавление новых узлов в CDN с минимальным вмешательством в текущую структуру. Требуется только положить torrentфайл на новый сервер, и по завершению синхронизации добавить его в балансировку.
3. Раздача ๏ Высокая пропускная способность площадки (от 10 гигабит в пиках) ๏ Большое количество (идеально безлимитное) включенного траффика ๏ Абюзоустойчивость (в легальных пределах) ๏ Техническая устойчивость
3. Раздача Технические требования к площадке ๏ Высокая пропускная способность площадки (площадок) ๏ Способность нарастить мощности (и в долгосрочном и в краткосрочном периоде) ๏ Недорогой траффик, недорогое железо ๏ Небольшой пинг
3. Раздача Abuse-риски при выборе площадки: ๏ Короткое время на ответ на жалобу (или вообще его отсутствие) ๏ Слабое информирование ๏ Отказ детального рассмотрения жалобы
3. Раздача Технические риски: ๏ Слабая техническая поддержка, долгое время реакции ๏ Небольшой штат ๏ «Реселлинговые» контракты, которые могут быть разорваны ๏ Небольшое количество каналов, возможно глобальное падение всего ДЦ.
3. Раздача Выбранные площадки: ๏ Softlayer как «домашняя» площадка для управления, транскодинга, dns и вспомогательных служб. ๏ CDN/streaming площадки: 100 tb-london, 100 tb-softlayer, +еще один дц.
3. Раздача Выбранные площадки: ๏ Softlayer – очень дорогой траффик. ๏ Остальные – могут упасть. ๏ Решение: способность быстро балансироваться без Single Point of Failure.
3. Раздача Балансировка: ๏ Железо? ๏ Софт? ๏ DNS?
3. Раздача Балансировка – железо: ๏ Минимум три устройства ๏ Дорого ๏ Авария на устройстве = аварии в ДЦ
3. Раздача Балансировка – software-proxy: ๏ Порт на сервере должен равняться сумме всех портов бэкэндов ๏ Single Point of Failure
3. Раздача Балансировка – DNS round robin: ๏ Легкое добавление новых машин ๏ Отсутствие single point of failure (при надежном DNS-хостинге) ๏ Относительно легкое «изъятие» упавших серверов
3. Раздача Балансировка – DNS round robin: Проблема: на время загрузки одного файла домен будет уже зарезолвлен юзером. ๏ Не страшно если сервер/софт упал (юзер обновится/сдвинет позицию на видео) ๏ Очень долго если нужно вывести сервер для проведения технических мероприятий
3. Раздача Балансировка – DNS round robin: Проблема: на время загрузки одного файла домен будет уже зарезолвлен юзером.
3. Раздача Балансировка – TODO Балансировка на уровне плеера: список доступных серверов получаемый плеером из нескольких узловых точек.
4. Поддержка ๏ Серверный мониторинг ๏ Мониторинг последней мили ๏ Масштабирование при пиковых нагрузках
4. Поддержка Серверный мониторинг Кроме типичных задач – контроль скорости на портах и контроль используемого траффика в ДЦ. ๏ Интеграция с панелями хостинг- провайдеров через API или через граббер ๏ Алерты на достижение критических величин (70% от месячного лимита на траффик) ๏ Перебалансировка/докупка серверов
4. Поддержка Мониторинг последней мили - проблема: ๏ Проблемы на магистральных каналах сильно бьют по пользователю – видео начинает дергаться, либо вообще останавливаться ๏ Недовольные люди идут в комментарии ๏ Чаще всего – проблема с одним из ДЦ а не со всеми
4. Поддержка Мониторинг последней мили: ๏ В новой системе статистики – плеер отсылает события загрузки плеера и событие запуска видео/догрузок видео, информацию о лагах ๏ Данные агрегируются по регионам. ๏ Сейчас – собираем статистику
4. Поддержка TODO – масштабирование CDN: ๏ Ждем смены системы раздачи с lsyncd на торренты ๏ После этого – создание инстансов в AWS из шаблона с торрент-клиентом и автоматическое добавление запущенных и загрузивших данные peer-ов в DNS
Евгений Потапов http: //itsumma. ru eapotapov@itsumma. ru http: //twitter. com/eapotapov
669cb064051225e1133af6f9f42af6f0.ppt