В этой статье я расскажу о принципе подбора правильной конфигурации для мультигигабитного стримминг-решения, но для начала немного рекламы :). Более месяца назад мы анонсировали новость о начале предоставления выделенных серверов в Нидерландах с гарантированным каналом 10 Гбит / с без ограничения трафика.
http://ua-hosting.com.ua/nl-servers.html — заказ 10 Гбит / с серверов доступен здесь.
Пришла пора сообщить, что это правда и реальность и в данный момент лучшее предложение на рынке, помимо этого мы первые начинаем предоставлять подобные серверы в США и, кроме того, еще больше понижаем акционные цены. Теперь у Вас есть возможность
Тут лишними будут какие-либо слова, график загрузки канала одного из клиентов говорит сам за себя:
Да, некоторым нашим клиентам и 10 Гбит / с мало :)
Но крайне важно подобрать правильную конфигурацию под Ваш проект, чтоб выделенный 10 Гбит / с канал мог использоваться в полной мере и максимально эффективно. Так, сервер в начальной конфигурации Intel Xeon E3-1230 / 8GB DDR3 / 2x500GB SATA2 / 10Gbps Unmetered зачастую не способен отдать даже 1 Гбит / с трафика, не то, что 10.
Причина — ограничение IOPS-дисков (операции чтения / записи в секунду), которое определяется типом диска и его конструкцией и о котором нужно помнить всегда. Конечно, если все Ваши файлы смогут уместится в оперативной памяти сервера в кеше — это ограничение не проблема, но зачастую оперативной памяти будет мало.
Если Вы не уверены, не знаете своей нагрузки (сколько пользователей будут скачивать / смотреть файлы одновременно) — запрашивайте замену SATA-дисков на SSD и ставьте побольше оперативной памяти, разница в цене в несколько сот долларов несущественна в сравнении с общей стоимостью аренды 10 Гбит / с решения, не экономьте. Не существует ничего более эффективного, чем SSD.
Чтоб понять это — достаточно сравнить производительность, не нужно быть техническим специалистом.
7,200 об/мин SATA-диски ~75-100 IOPS (варьируется в зависимости от того блоками какого размера считываются данные, последовательно или случайно, производится ли запись и т.п.)
15,000 об/мин SAS-диски — ~175-210 IOPS
Intel X25-M G2 MLC SSD ~8 600 IOPS
OCZ Vertex 3 SSD ~60 000 IOPS (Произвольная запись 4K)
OCZ Vertex 3 MAX IOPS SSD ~75 000 IOPS (Произвольная запись 4K)
OCZ Vertex 4 SSD ~120 000 IOPS (Произвольная запись 4K)
OCZ RevoDrive 3 X2 SSD ~200 000 IOPS (Произвольная запись 4K)
OCZ Z-Drive R4 CloudServ SSD ~500 000 IOPS PCIe
Как видим твердотельные накопители SSD вне конкуренции и за счет отсутствия двигающихся деталей способны обеспечить поразительную производительность, таким образом один SSD-диск зачастую равен по производительности нескольким сотням SATA или даже SAS-дисков, конечно, если речь идет о стримминге файлов, а не о работе с базами данных. При работе с базами данных SAS-диски могут быть эффективнее из-за особенностей архитектуры БД, а SSD быть менее производительными.
Но так как 10 Гбит / с серверы зачастую используют именно для отдачи файлов, стримминга видео, то SSD вне конкуренции. Тем более, что SSD в отличии от SATA «умирают» прогнозировано, время жизни определяется количеством операций перезаписи, которые при помощи контроллера более-менее равномерно распределяются по диску, а после «смерти» диска восстановить данные с него возможно. Таким образом, если идет в основном считывание Ваших файлов, SSD, в отличии от SATA, может жить практически «вечно». Хотя бекапы все равно делать нужно.
Для примера приведем результат генерации трафика при помощи такой конфигурации 2 x Intel Hexa-Core Xeon E5-2420 / 96GB DDR3 / 8x240GB SSD / 10Gbps Unmetered:
Проблема в том, что SSD на порядок дороже SATA и зачастую требуется пользователям разместить порой до 10 ТБ данных на одном сервере и более, физически сложно организовать хранилище такого объема данных в одном сервере на SSD и смысла мало. Распределение файлов на несколько серверов — также не всегда экономически выгодно.
В таких случаях приходится комбинировать SATA и SSD диски, используя последние, как кеш для часто запрашиваемых файлов. Но подобные варианты уже требуют специфических знаний в администрировании и настройке «кластера» с балансером нагрузки. Как показал опыт, объем SSD под кеш должен составлять не менее 10% от объема файлов на SATA, так же полезной может быть репликация файов на разные SATA-диски и, как следствие, отдача одного и того же файла разным посетителям с разных дисков. Использование RAID-массивов в данных случаях, как аппаратных, так и программных — не эффективно. Уже при трафике свыше 4 Гбит / с могут возникать проблемы в виде падения скорости отдачи определенных файлов некоторым пользователям. По этой причине диски нужно использовать раздельно.
Минус в таком решении в том, что нужно четко понимать структуру своего проекта и тенденции его развития, обдумать, какими методами обеспечить нормальный просмотр (без падения скорости на поток) в пиковые моменты и самое главное — уметь спрогнозировать эти пиковые моменты. Кроме этого, если Вы планируете еще и конвертировать видеофайлы на сторедже, под это лучше выделить отдельные диски и оснастить сервер, как можно более производительным процессором, оперативная память в пиковые часы также будет не лишней.
Неплохим вариантом для таких целей может быть 2 x Intel Octa-Core Xeon E5-2650 / 128GB RAM / 8x3Tb + 4xSSD 240 Gb / IPMI/ 10Gbps Unmetered (в случае, если стоит задача конвертировать видео) либо 2 x Intel Hexa-Core Xeon E5-2420 / 96GB DDR3 / 6x3TB SATA2 + 6x240GB SSD / IPMI / 10Gbps Unmetered в случае стримминга, но без конвертации, когда процессор не критичен. Несколько красивых графиков с вышеуказанных реальных серверов клиентов:
Теперь остался еще один вопрос — трафик. Сколько реально полосы необходимо для обеспечения стримминг-задачи? Рассчитать необходимую емкость канала очень просто, необходимо битрейт видео умножить на количество просмотров одновременно + не забыть добавить немного сверху на буферизацию и всякого рода фиктивные запросы.
Если Ваше видео имеет битрейт 1,5 Мбит / с и есть задача в его просмотре онлайн 5000 человек одновременно — Вам необходим минимальный канал 7500 Мбит / с + хотя бы 10-15% сверху для буферизации, либо предусмотреть возможность понижения качества транслируемого потока. Ну и не нужно забывать о том, что посещаемость Ваших сайтов все время меняется, все зависит от выдачи поисковых систем, лучше иметь, как минимум 30% канала в резерве.
Ну и последнее, с хорошим каналом Ваш трафик будет расти стремительно (пример на недельном графике выше для сервера SKRS433, трафик вырос в пике на гигабит за неделю), также, как и стремительно будет развиваться Ваш проект, мы предоставляем каналы наилучшей связности, Ваши пользователи это оценят и это способствует росту аудитории, причем каналы предоставляются сейчас за минимальные деньги, это оцените Вы :). Не забывайте покупать новый канал вовремя (особенно когда есть возможность приобрести канал с дополнительной скидкой во время распродажи), трафика не бывает много, даже начинающие стримминг-проекты генерируют солидный объем трафика, если предоставить такую возможность, пример ниже.
Автор: HostingManager