Выбор аппаратного обеспечения¶
29.12.2022
Вступление¶
Как запустить 200+ камер на сервере за 30.000 рублей?
Нас часто спрашивают, а сколько камер можно добавить в Yucca на сервере с моими аппаратными ресурсам? Вопрос всегда индивидуальный и ответить на него шаблонно для всех невозможно. Многое зависит от типа камер, битрейта, процессора и прочих переменных. Поэтому мы решили собрать небольшую статистику с сервера одного из наших клиентов, со скриншотами и подробными пояснениями, чтобы каждый мог представить сколько ресурсов нужно в конкретно его случае...
Похожую статистику мы публиковали про запуск на Raspberry Pi 4
Наша инсталляция¶
И так установлена Юкка версии 0.7.2, и подключено 154 камеры, почти 4 года глубина архива, битрейт потока с камер в районе 1M (мегабит в секунду). Помимо Юкки, на этом же сервере установлен postgresql, собственно как база данных.
(Если хотите такой же дашборд, инструкция доступна по ссылке)
Какие же под это всё используются ресурсы и сколько их утилизируется?
Материнская плата (Motherboard)¶
Z8NR-D12 - это очень старое шасси, купить такое на вторичном рынке можно примерно за 20.000 рублей.
скриншот с сайта одно из известных нам спотов
В этом варианте, пожалуй, не хватает 2х блоков питания, но можно поискать аналогичные шасси к примеру от Supermicro.
Процессор (CPU)¶
Intel(R) Xeon(R) CPU X5690 @ 3.47GHz - 2 процессора по 12 потоков, в сумме получается 24. На Авито такой можно купить за 3000 рублей за штуку.
CPU - один из важнейших ресурсов, именно в него вы всегда будете упираться при увеличении количества потоков. Ведь чем больше потоков, тем больше процессов и тем больше нам нужно процессорного времени. Соответственно больше всего внимания нужно уделять даже не утилизации, как на 1 скриншоте, а LA или Load Average (если вы не знаете что это такое, то читайте тут) 2 скриншот.
И так посмотрим на утилизацию за 24 часа, тут есть пики, но средняя утилизация в районе 30%
На графике LA за сутки ситуация похожая, в районе 30% - 40%
Помним, что это показатель на 150 камер, значит заполнен сервер примерно наполовину и в теории можно добавить еще столько же камер, при условии, что камеры имеют схожий битрейт.
Мы не рекомендуем добавлять камеры на серверы, где LA уже выше единицы. При LA > 1 - это значит что очередь будет всё время расти и проблемы с обслуживанием и деградация почти неизбежны, нужно или больше процессора или ещё 1 сервер Юкки. Поэтому при большом количестве клиентов и камер в первую очередь всегда отрисовывайте ваши инсталляции на мониторинге и следите за показателями.
Оперативная память (RAM)¶
9965447-034.A00LF - серверная ECC память на Авито около 1000 рублей за плату.
В нашем случае 16 гигабайт (по 8 на сокет процессора) - хватает с 3-ым запасом и утилизируется в районе 4 гигабайт.
Диск¶
Дисковый массив - тема требующая отдельной заметки о том как делают и как не стоит делать, я расскажу как примерно рассчитать прогнозируемый объём вручную, но вы всегда можете найти онлайн калькулятор под ваш битрейт и тип массива.
Итак, на данном стенде наш клиент размещает только публичные камеры и неожиданная потеря архива с этих камер ему не критична. Поэтому если ваш архив имеет большую ценность, то не делайте так, как тут описано.
ST10000VN0004-1Z - Seagate IronWolf 10Tb NAS.
4 штуки в конфигурации Raid0 дают 37 терабайт, стоимость в районе 20.000 рублей за штуку.
$ df -h | grep yucca
/dev/md0 37T 15T 20T 43% /opt/yucca/data/alloc
$ cat /etc/mdadm/mdadm.conf
DEVICE partitions
ARRAY /dev/md0 level=raid0 num-devices=4 metadata=1.2 name=yucca:0 UUID=xxx
Конечно за счёт того, что это Raid0, мы не испытываем вообще никаких проблем с производительностью, при записи архива параллельно с 150 камер, да и с 300 проблем не будет, но и отказоустойчивость на нуле, так что тут каждый выбирает решение для себя сам.
Как посчитать сколько нужно места под архив¶
Предположим, что у нас есть 150 одинаковых камер с битрейтом потока в 2M, с них мы хотим писать архив глубиной в 14 дней:
- 2 мегабита в секунду, это 2/8 = 0,25 мегабайта
- 0.25 * 60 * 60 = 900 мегабайт в час
- 900 * 24 = 21600 мегабайт => 21,6 гигабайт в сутки с 1 камеры
- 21,6 * 14(дней) = 302,4 гигабайт за 14 дней с 1 камеры
- 302,4 * 150 = 45360 гигабайт => 45,36 терабайт
Вот такая простая калькуляция позволяет примерно посчитать сколько будет занимать наш архив. Также стоит учесть, что массивы не стоит заполнять под завязку в 99% и хотя бы 5-10% лучше держать свободным.
Выводы¶
Итак, мы имеем шасси + процессоры + оперативная память примерно за 30.000 рублей и дисковый массив за 40.000. Итого около 70.000 рублей за полноценное рабочее решение с возможностью продавать и оказывать услуги клиентам с ёмкостью под 300 камер.
Немного пофантазируем...
Лицензия на Yucca стоит 4000 рублей в месяц и мы не имеем лимитов на камеры, если у вас есть современное шасси и 10000 камер, мы вас не ограничиваем :) Средний тариф на камеру с архивом в 14 дней у провайдеров сейчас стоит ~ 500-700 рублей в месяц, то есть 150.000 рублей в месяц можно зарабатывать на таком сервере без особых затрат с окупаемостью в 1 месяц, правда если у вас уже есть 300 готовых клиентов 🙂
Спасибо всем, кто дочитал до конца!
Задать вопрос можно через формы обратной связи на сайте, написав на почту info@yucca.app или в Telegram-чате сообщества.