Как сделать единое хранилище из нескольких физических серверов с прозрачным доступом к файлам?
Добрый день.
Идет разработка проекта, в котором предполагается запись больших объемов видеофайлов (800-1000ТБ/год). Такой объем на одном сервере держать не получится, поэтому он будет хранится на нескольких десятках физических серверов в одном дата-центре. Бэкэнд проекта - NodeJS. Соответственно, встал вопрос, как из этих физических серверов сделать единое хранилище данных с прозрачным доступом (чтение/запись) к файлам.
Процесс генерации видео следующий: идет видеопоток через Webrtc, обрабатывается медиа-сервером и пишется в файл webm, затем через ffmpeg переводится в mp4 и сохраняется окончательно на диск (средний размер файла ~500МБ). Перед этим программно в модуле NodeJS каждое видео получает некий ID, который достоверно ставит в соответствие имя и путь к файлу с контекстом сессии, в которой данное конкретное видео было записано (время, место, действующие лица, прикрепленные документы и т.д.). Затем через какое-то время (не часто - недели/месяцы) к видеофайлам может быть обращение на предмет просмотра видео, это происходит через обычный плеер на сайте. Так вот вопрос в том, через какой программный интерфейс создать единое хранилище из нескольких физических серверов, чтобы можно было по этим самым ID и пути обращаться к видеофайлам для их записи(создания) и чтения(воспроизведения), абстрагируясь от того, на каком конкретном сервере эти файлы расположены?
До вчерашнего дня в качестве основного решения присматривались к Elliptics от Яндекса, но один грамотный человек сказал, что для нашей задачи это overhead и необоснованно избыточно. Посоветовал посмотреть в сторону filefog и pkgcloud, что мы сейчас и делаем.
Но может быть у кого-то есть реальный практический опыт решения такого вопроса, поэтому надеюсь на любые советы.
Выбор огромен: glusterfs(файловый доступ),openstack swift(swift api/s3 api), ceph(s3 api/swift api/блочный доступ/файловый доступ(cephfs))
ИМХО наиболее удобный и гибкий вариант использовать ceph и s3 api