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 установите имя сервера, под которым он будет виден в сети. В качестве базового пути надо задать префикс, если файловый сервер будет проксироваться через сайт или оставить пустым, если не будет (см. ниже).
Все, на этом файловое хранилище введено в эксплуатацию. Чтобы пректарить загрузку в это хранилище новых файлов в связи с исчерпанием места, надо перейти к редактированию файловой ноды и снять опцию возможности загрузки файлов на сервер.