Перейти к содержанию

Выбор аппаратного обеспечения

29.12.2022

Вступление

Как запустить 200+ камер на сервере за 30.000 рублей?

grafana_node

Нас часто спрашивают, а сколько камер можно добавить в Yucca на сервере с моими аппаратными ресурсам? Вопрос всегда индивидуальный и ответить на него шаблонно для всех невозможно. Многое зависит от типа камер, битрейта, процессора и прочих переменных. Поэтому мы решили собрать небольшую статистику с сервера одного из наших клиентов, со скриншотами и подробными пояснениями, чтобы каждый мог представить сколько ресурсов нужно в конкретно его случае...

Похожую статистику мы публиковали про запуск на Raspberry Pi 4

Наша инсталляция

И так установлена Юкка версии 0.7.2, и подключено 154 камеры, почти 4 года глубина архива, битрейт потока с камер в районе 1M (мегабит в секунду). Помимо Юкки, на этом же сервере установлен postgresql, собственно как база данных.

ycc_main ycc_admin grafana_ycc (Если хотите такой же дашборд, инструкция доступна по ссылке)

Какие же под это всё используются ресурсы и сколько их утилизируется?

Материнская плата (Motherboard)

Z8NR-D12 - это очень старое шасси, купить такое на вторичном рынке можно примерно за 20.000 рублей.

motherboard скриншот с сайта одно из известных нам спотов

В этом варианте, пожалуй, не хватает 2х блоков питания, но можно поискать аналогичные шасси к примеру от Supermicro.

Процессор (CPU)

Intel(R) Xeon(R) CPU X5690 @ 3.47GHz - 2 процессора по 12 потоков, в сумме получается 24. На Авито такой можно купить за 3000 рублей за штуку.

CPU - один из важнейших ресурсов, именно в него вы всегда будете упираться при увеличении количества потоков. Ведь чем больше потоков, тем больше процессов и тем больше нам нужно процессорного времени. Соответственно больше всего внимания нужно уделять даже не утилизации, как на 1 скриншоте, а LA или Load Average (если вы не знаете что это такое, то читайте тут) 2 скриншот.

И так посмотрим на утилизацию за 24 часа, тут есть пики, но средняя утилизация в районе 30% cpu_util

На графике LA за сутки ситуация похожая, в районе 30% - 40% cpu_la

Помним, что это показатель на 150 камер, значит заполнен сервер примерно наполовину и в теории можно добавить еще столько же камер, при условии, что камеры имеют схожий битрейт.

Мы не рекомендуем добавлять камеры на серверы, где LA уже выше единицы. При LA > 1 - это значит что очередь будет всё время расти и проблемы с обслуживанием и деградация почти неизбежны, нужно или больше процессора или ещё 1 сервер Юкки. Поэтому при большом количестве клиентов и камер в первую очередь всегда отрисовывайте ваши инсталляции на мониторинге и следите за показателями.

Оперативная память (RAM)

9965447-034.A00LF - серверная ECC память на Авито около 1000 рублей за плату.

В нашем случае 16 гигабайт (по 8 на сокет процессора) - хватает с 3-ым запасом и утилизируется в районе 4 гигабайт.

grafana_ram

Диск

Дисковый массив - тема требующая отдельной заметки о том как делают и как не стоит делать, я расскажу как примерно рассчитать прогнозируемый объём вручную, но вы всегда можете найти онлайн калькулятор под ваш битрейт и тип массива.

Итак, на данном стенде наш клиент размещает только публичные камеры и неожиданная потеря архива с этих камер ему не критична. Поэтому если ваш архив имеет большую ценность, то не делайте так, как тут описано.

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-чате сообщества.