Я ищу рекомендации по аппаратным характеристикам сервера, который должен быть веб-кешем для пользователей, насчитывающих около 2000 одновременных подключений. Клиенты просматривают сегментированное HTTP-видео с битрейтом от 150 кбит / с до 2 Мбит / с. Большая часть видео является «живым», что означает сегменты по 2-10 секунд каждый, из которых около 100 хранятся одновременно. Есть также несколько предварительно записанных видео фиксированной длины. Как мне выполнить расчет подготовки для такого сервера: какой жесткий диск (SSD?), Сколько сетевых карт, сколько оперативной памяти и т. Д.? Я подумываю использовать Varnish в Linux, всю оперативную память, которую я могу достать, 2 процессора с 6-8 ядрами каждый.
Сможет ли Varnish обмениваться объектами между сессиями? Другими словами, является ли ваша архитектура такой, что объект, загружаемый клиентом видеопотока, является /somestream/1h42m0s-1h42m10s/
, в отличие от /somestream/for/joeuser
? В этом случае, исходя из того, что вы описываете, я бы пропустил SSD и просто выбрал тонну оперативной памяти; Varnish на самом деле не нуждается в дисковом хранилище ни для чего, если настроен с malloc
бассейн. Не забудьте отказаться swappiness
. Если, с другой стороны, Varnish просто передает каждый запрос бэкэнду, то в лучшем случае все, что вы получаете от этого, - это защита от SYN-флуда.
Я видел, как Varnish с радостью выталкивает несколько гигабитных битов, но убедитесь, что все, что выше Varnish, знает, как справиться с таким трафиком. Некоторые брандмауэры (имена отредактированы для защиты виновных) едва ли могут обрабатывать 100 Мбит / с, не говоря уже о том виде трафика (4 Гбит / с), о котором вы говорите, если каждое из этих соединений загружает свое соединение на скорости 2 Мбит / с. Для сетевой карты вам, вероятно, подойдет даже встроенный порт 10 Гбит; если вам нужно, вы также можете делать глупые вещи по объединению каналов с GigE, но зачем беспокоиться? Просто возьмите порт 10G (или три) и займитесь этим.
Для самого сервера вам совсем не нужно много ЦП, но нужно максимально использовать ОЗУ. Если хотите, вставьте туда пару быстрых дисков, но единственная причина, по которой они там есть, - для загрузки. Varnish - очень и очень тонкий сервер. Вы можете пойти на многоуровневое кеширование и попытаться выгрузить видео на жесткий диск, как только они выйдут из ОЗУ, но почему? Они уже кэшированы на диск на ваших контент-серверах; не похоже, что диски на сервере Varnish как-то волшебным образом лучше. Потратьте эти деньги на еще больше оперативной памяти. Серьезно, вы не должны моргнуть глазом на 64 или 96 ГБ, учитывая типы пропускной способности, о которых вы говорите.
Совет, не имеющий отношения к делу, если вы используете диск в какой-либо момент на этих серверах потоковой передачи, вам обязательно следует выбрать твердотельные накопители (или даже более экзотические варианты, такие как FusionIO). Для потоковых приложений, где вы перепрыгиваете по всему диску, когда люди передают разные части одного и того же файла, SSD не просто немного лучше; они, по сути, ваш единственный рациональный выбор.