Хранилище видео-записей органа государственной власти
Надежность хранения, стабильность сервиса, возможности неограниченного масштабирования
В нашей практике мы работаем как напрямую с заказчиками, так и по субподряду. В данном случае к нам обратился крупный системный интегратор с задачей построить видео-портал Государственной Думы. Государственная Дума проводит заседания, все эти заседания записываются и сохраняются на цифровые носители с возможностью последующего просмотра.
Задача состояла в том чтобы принять и перекодировать информацию с камер в стандартные форматы и разрешения и организовать хранилище видео-контента неограниченного объема, которое бы позволило просматривать архивные записи за любой период времени без каких-либо ограничений.
Портал называется video.duma.gov.ru и в рамках проекта мы развернули для этого портала Медиасервис, включая системы кодирования, хранения видео, раскладки, репликации и т.д.
Объем контента на портале постоянно нарастает, при этом весь контент должен быть доступен. Чтобы реализовать эти требования сервис спроектирован таким образом, что его можно неограниченно масштабировать, т.е. добавлять новые машины в кластер
При этом важно, чтобы нагрузка на сервера распределялась равномерно, для чего алгоритм раскладки по серверам не может быть «прямолинейным». Новые и поэтому наиболее популярные видео-ролики должны распределяться между всеми серверами, а не «сваливаться» на единственный "свободный" сервер.
Поэтому при добавлении нового сервера в пул должна осуществляться ребалансировка , контент распределяется таким образом, чтобы нагрузка на кластер была более-менее равномерна.
Кроме того необходимо обеспечить надежное хранение информации: при выходе из строя сервера или накопителей доступность контента должна сохраняться. Это решается за счет дублирования контента на двух и более носителях, а в случае отказа диска или сервера контент автоматически реплицируется.
Как только в пуле появляется новый сервер, он начинает участвовать в схеме резервного копирования. Внутренний компонент платформы, который мы называем Household следит за тем, чтобы реплики равномерно распределялись по серверам, для этого при появлении нового сервера реплики частично переносятся на него.
Добавление нового сервера не требует программирования. На сервер устанавливается операционная система, нужные пакеты. Сервер прописвается в конфигурации платформы, после чего его начинают видеть другие компоненты системы и работать с ним.
В 2014 году, когда система вводилась в эксплуатацию, этот процесс еще не был автоматизирован, но сейчас платформа умеет следить за наличием свободного места и нагрузкой на сервера и развертывать сервера в кластере в автоматическом режиме и по мере необходимости. Например, как только нагрузка превышает некий заданный порог, в кластер добавляется новый облачный сервер. То же происходит и с мониторингом и добавлением дискового пространства.
Работы по настройке, доработке и интеграции платформы с фронт-ендом заняли около 2-х месяцев. С момента запуска в рабочую эксплуатацию прошло около 5 лет, сервис работает стабильно, никаких проблем, требующих нашего вмешательства за это время не возникало.