|
На уровне системы существует реестр кластеров RestFS, с которыми может работать система.
По умолчанию в реестре кластеров RestFS есть кластер default, который мапится в URL: http://system.restfs.ecss:9990
Имя кластера RestFS может быть любым, кроме Кластер RestFS с именем default не может быть удален. |
На уровне системы команды по управлению/мониторингу RestFS располагаются по пути /restfs.
На уровне виртуальной АТС — /domain/<DOMAIN>/restfs/.
Для запуска RestFS в режиме одной ноды достаточно поставить пакет ecss-restfs и запустить сервис restfs.
sudo systemctl start ecss-restfs.service |
По умолчанию сервис ожидает HTTP-запросы на порту 9990 и работает с каталогом /var/lib/ecss/restfs.
Для того чтобы обеспечить репликацию данных между серверами кластера, необходимо настроить glusterfs-server. В качестве примера приведена система ECSS-10, работающая в кластере, со следующими настройками:
Запуск RestFS в режиме кластераДля запуска RestFS в режиме кластера достаточно, чтобы пакет ecss-restfs был установлен и запущен на обеих нодах. Команда для запуска сервиса ecss-restfs.
Запуск RestFS в случае недоступности других участников кластераВ применяемой концепции glusterfs все сервера равнозначны. Однако раздел volume не активируется при отсутствии кворума. Это защитный механизм, который характерен для всех распределенных fault-tollerant систем и призван защитить систему от split-brain. Если включение второго сервера невозможно, либо затягивается на длительное время, то можно вручную перевести volume в рабочий режим, выполнив команду:
Проблемы связанные с возникновением split-brainВ случае недоступности одной из нод кластера, могут возникнуть проблемы с файлами. После восстановления работы, они будут находиться в сплите, из-за чего саморучно придется запускать синхронизацию между нодами. Для того, чтобы решить данную проблему, потребуется воспользоваться ключом cluster.favorite-child-policy. При его включение, все файлы находящиеся в сплите будут автоматически с синхронизированы между собой, по заданному правилу. Включить данный параметр можно командой:
Правка настроек glusterfs-server.service unitДля настройки управления glusterfs service через systemctl выполните команду:
Должно открыться окно текстового редактора. Внесите туда следующие параметры:
Сохраните изменения и выполните команду:
|
Данный сервис запускается в определенное время и конвертирует файлы с расширением "wav" в "mp3".
Для настройки данного сервиса необходимо выставить нужные опции в файлах:
/etc/ecss/ecss-restfs/crawler-dirs |
WORKDIR — рабочий(е) каталог(и), в котором(ых) происходит поиск файлов с расширением "wav" (если указывается несколько папок, то необходимо названия указать в кавычках, например, "dir1 dir2 dir3");
EXCLUDED_PATH — каталоги, которые необходимо исключить из обработки, например, "dir1 dir2 dir3", путь указывается, относительно WORKDIR.
/etc/ecss/ecss-restfs/crawler-conf |
Файл содержит параметры, передаваемые конвертору:
crawler FFMPEG_OPT -i in_file FFMPEG_OUT_OPT out_file |
По умолчанию стоят флаги:
Флаг -i <file> — указывает на входной файл.
Последним аргументом передаётся выходной файл:
/lib/systemd/system/ecss-restfs-crawler.timer |
Для настройки таймера смотри man systemd.timer.
Поле OnCalendar — содержит время запуска.
/lib/systemd/system/ecss-restfs-crawler.service |
Данный файл содержит следующие параметры:
Также можно расширять данные конфигурации, см. команду man systemd.
Конфигурацию проводить с помощью systemctl edit <name>.
Дополнительные возможности конвертера ffmpeg можно узнать выполнив команду: man ffmapeg.
Для корректной работы tts Text-to-Speech через Yandex сервис требуются сделать следующие шаги:
|
Для добавления дополнительного профиля Яндекс.Облако нужно отправить http-запрос:
curl localhost:9990/generate?OAuth=<OAuth_токен>&folderId=<folderId> |
Для немедленного обновления IAM-токена нужно отправить следующий http-запрос:
curl localhost:9990/generate?OAuth=<OAuth_токен>&folderId=<folderId>&update_key=True |
В системе ECSS-10 реализованы сервисы, которые в процессе своей работы формируют данные и сохраняют их на дисковое пространство. Такими сервисами являются:
Данные сервисы генерируют файлы и работают с дисковыми хранилищами.
Под распределенным хранилищем подразумевается возможность сохранять записанные файлы на разные хосты.

Рисунок 1 — Пример распределенного хранилища
Каждое хранилище состоит из следующих элементов:
RestFS — компонент обеспечивающий интерфейс прикладного программирования HTTP API для работы с файлами.
GlusterFS — распределенная файловая система, обеспечивающая надежное хранилище (необязательный компонент для систем без резервирования).
Количество распределенных хранилищ не ограничено, возможно совмещение всех хранилищ на одном хосте. В базу данных сохраняется полный URI для записанного файла, поэтому, например, при прослушивании записи разговора из web-интерфейса, система обратится на сервер, идентифицируемый данным URI в базе данных.
Распределенная файловая система glusterfs автоматически реплицирует файлы между нодами кластера. Таким образом, в кластерном варианте работы сервиса при проблемах с одним из серверов сервис автоматически будет делать попытку записи файла на другой сервер, либо его считывания с другого сервера.
Дисковое хранилище может работать в двух режимах:
В данном режиме все типы данных (записи разговоров, факсы, файлы голосовой почты) отправляются в одно файловое хранилище. Для настройки данного режима достаточно настроить сервис RestFS.
В данном режиме все типы данных (записи разговоров, факсы, файлы голосовой почты) отправляются в разные файловые хранилища.
Распределенный режим предполагает, что пакет ecss-restfs, обеспечивающий программный интерфейс HTTP API, будет установлен на несколько хостов. Перед установкой пакета необходимо убедиться, что имя хоста "hostname", на который ставится пакет, не равно ecss1 или ecss2. В противном случае может возникнуть конфликт с нодами restfs, которые запущены на хостах системы ECSS-10 локально.
Установите пакет restfs, для этого выполните следующую команду:
sudo aptitude install ecss-restfs |
Произведите изменения в конфигурационных файлах.
Необходимо настроить параметр MYSQL_IP в файле ecss-cocon-mysql
/etc/dnsmasq.d/ecss-cocon-mysql: address=/cocon.mysql.ecss/<MYSQL_IP> |
и параметры ECSS_1_IP и ECSS_2_IP в файле ecss-broker
/etc/dnsmasq.d/ecss-broker: address=/primary.broker.ecss/<ECSS_1_IP> address=/secondary.broker.ecss/<ECSS_2_IP> |
где
Перезапустите сервисы dnsmasq и ecss-restfs.
Для этого выполните следующую команду:
sudo systemctl restart ecss-ds.service ecss-restfs.service |
Сконфигурируйте соотношение выделенных имен для хранилища на DNS сервере (при использовании DNS сервера), либо в локальных файлах /etc/hosts, находящихся на хостах медиа-сервера и web-конфигуратора (в случае, если DNS сервер не используется).
Пример для варианта с /etc/hosts:
IP-REC1-STORAGE rec.media-storage.ecss IP-REC2-STORAGE rec.media-storage.ecss IP-FAX1-STORAGE fax.media-storage.ecss IP-FAX2-STORAGE fax.media-storage.ecss IP-VOICEMAIL1-STORAGE voicemail.media-storage.ecss IP-VOICEMAIL2-STORAGE voicemail.media-storage.ecss |
где
Скорректируйте значение указателей ресурса URI для обращения к хранилищу.
По умолчанию для данных параметров установлено значение system. В этом случае сетевой адрес хранилища для всех трех сервисов одинаков, его значение устанавливается командами /system/system-restfs-host и /system/system-restfs-port.
Для установки значения указателя ресурса URI для каждого из сервисов используется своя команда:
/domain/DOMAIN_NAME/properties/set call_record_server_peer <URI>
/domain/DOMAIN_NAME/properties/set fax_server_peer <URI>
/domain/DOMAIN_NAME/properties/set voicemail_server_peer <URI>
где
Примеры команд для настройки сетевого хранилища на выделенном сервере с URI media-storage.ecss:
/domain/DOMAIN_NAME/properties/set call_record_server_peer rec.media-storage.ecss:9990 /domain/DOMAIN_NAME/properties/set fax_server_peer fax.media-storage.ecss:9990 /domain/DOMAIN_NAME/properties/set voicemail_server_peer voicemail.media-storage.ecss:9990 |
После выполнения настройки ресурса хоста все данные, формируемые сервисами, будут записываться на сервера, идентифицируемые теми URI, которые были указаны в командах настройки.
Для предотвращения ситуаций переполнения разделов хранилища нужно настроить пороги генерации предупреждений и аварийных сообщений о переполнении раздела (см. Пороги использования ресурсов). При достижении настроенного порога система автоматически сообщит об этом.
Для предотвращения переполнения разделов хранилища на уровне каждого кластера RestFS есть подсистема, которая позволяет автоматически удалять файлы по определенным правилам Команды уровня autocleaner.