ELiS Storage

RPM-пакет elis-storage позволяет создать объектное файловое хранилище для хранения видео или иных файлов и выдачи их по HTTP или HTTPS.

Основное назначение хранилища - работа в составе видеосервиса для хранения сконвертированного видео и распространения видео в сети.

Причины появления объектового хранилища

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

Существует несколько подходов, как уменьшить стоимость обновления таких систем. Один из них - это использовать в качестве системы хранения несколько самых обычных серверов, загрузка и отдача файлов на которых осуществляется по протоколу HTTP(HTTPS).

Преимущества такого подхода:

  • использование самой обычной сети Ethernet для подключения системы хранения, нет нужды в создании сети Fibre Channel и в её администрировании;
  • при необходимости расширения занимаемого пространства просто рядом ставится ещё один сервер с дополнительным свободным местом;
  • для системы хранения пригодны самые обычные, дешёвые сервера;
  • сбои локальны: выход из строя одного сервера делает недоступными только расположенные на нём файлы, на доступность файлов на соседних серверах сбои не влияют;
  • файлы на диске лежат на самой обычной файловой системе, поэтому легко переносятся.

Архитектура

Одна инсталляция (сайт) ELiS может иметь подключенными любое количество файловых хранилищ ELiS Storage.

В любой момент может быть добавлено новое файловое хранилище.

Может возникнуть ситуация, когда одно файловое хранилище надо подключить к нескольким инсталляциям (сайтам) ELiS. В таком случае для каждой инсталляции нужно задать префикс, который обязательно должен быть установлен у каждого загружаемого в ELiS Storage файла.

У каждого сайта ELiS имеется свой секретный ключ и префикс. Эти ключ и префикс копируются с сайта на файловое хранилище. По ним будет производиться аутентификация при загрузке файлов в хранилище и при их удалении через API.

Если файловое хранилище подключается к нескольким сайтам, на нём заводятся секретные ключи и префиксы каждого из сайтов в файле конфигурации /etc/elis-storage.conf по инструкции, указанной непосредственно в файле конфигурации.

Установка пакета elis-storage совместима с установкой самого сайта ELiS. Т.е. на один физическоий сервер можно поставить и сайт и файловое хранилище.

Установка

Выберите сервер с подходящей системой хранения.

Вам нужно сервер разбить на два диска:

  • / (root) - 100 GB под операционную систему;
  • /var/www/storage - оставшееся доступное пространство в файловой системе XFS.

Установите CentOS7 в минимальной редакции.

Установите репозиторий EPEL, а затем php, php-fpm, nginx (пропустите этот шаг, если на этот сервер вы уже установили сайт ELiS).

# yum install epel-release

# yum install php php-fpm nginx

Вам нужен пакет elis-storage-*.rpm. Получите его у поставщика ПО.

Установите пакет:

# yum isntall elis-storage-*.rpm

Получите (установите) на сайте ELiS секретный ключ и префикс https://elis.example.com/admin/config/media/myvideo/settings и скопируйте их в /etc/elis-storage.conf

PHP-FPM будет настроен сразу с помощью /etc/php-fpm.d/elis-storage.conf и его настраивать не надо кроме случаев работы в низкоскоростной сети (тогда надо увеличить тайминги в конфигурации PHP-FPM и NGINX.

В NGINX надо добавить возможность работы с хранилищем. Для этого уже создан файл /etc/nginx/conf.d/elis-storage.inc и его с помощью директивы include надо подключить к существующему сайту в соответствующем файле конфигурации.

Если у вас на одном сервере установлен и ELiS Storage и сайт ELiS, значит вам надо в текущем сайте ELiS добавить конфигурацию файлового сервера.

Для этого в /etc/nginx/conf.d/elis.conf в секции server добавьте:

include conf.d/elis-storage.inc;

Если на данном сервере у вас будет размещена только файловая нода ELiS Storage, то эту же команду добавьте в основной файл конфигурации NGINX по-умолчанию /etc/nginx/nginx.conf также в секцию server:

include conf.d/elis-storage.inc;

На этом NGINX настроен.

Запустите NGINX и PHP-FPM:

# systemctl enable nginx

# systemctl enable php-fpm

Теперь ELiS Storage можно зарегистрировать на сайте ELiS в качестве файловой ноды. Для этого перейдите на сайт и создайте файловую ноду https://elis.example.com/admin/config/media/myvideo/filenode/add

В качестве IP-адреса установите IP-адрес данного сервера. В качестве протокола тот протокол, по которому сервер будет доступен. В качестве hostname установите имя сервера, под которым он будет виден в сети. В качестве базового пути надо задать префикс, если файловый сервер будет проксироваться через сайт или оставить пустым, если не будет (см. ниже).

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