Для чего нужно:
Реализованный в AVReg способ распределения нагрузки на разные процессоры/ядра (далее cpu) называется «на уровне процессов» (прим: другой возможный способ - «на уровне потоков»).
Он заключается в запуске на одном сервере нескольких независимых копий процесса avregd, каждый из которых настройками в дополнительных конфигурационных файлах - профилях:
Основные достоинства данного способа вытекают из независимости процессов avregd друг от друга, что позволяет иметь/делать нижеследующие вещи:
Помимо основного и единственного конфигурационного файла 'avreg.conf', для всех приложений AVReg существует возможность определения дополнительных конфигурационных файлов - профилей.
Профили нужно разместить в каталоге
«/etc/avreg/profiles
».
Имя файла профиля должно соответствовать следующим правилам:
Совет: легко выключать профиль без удаления файла, добавив в начало его имени неразрешённый знак, например, добавить в конец имени профиля символ «~».
Для пояснения, рассмотрим оптимальный (эталонный) пример:
Размер группы выбираем 10 камер в конфигурации AVReg (= 5 физических камер).
Для создания конфигов профилей воспользуемся скриптом помощником
avreg-profile-gen.sh
(v6.3+), для более ранних систем
воспользуйтесь текстовым редактором.
# создаём _пустой_ временный каталог $ mkdir /tmp/avreg-profiles.d/ # запусукаем генератор профилей для 60 камер макс. по 10 камер в группе. $ avreg-profile-gen.sh -c 60 -g 10 /tmp/avreg-profiles.d/ # смотрим что получилось $ ls/tmp/avreg-profiles.d/ c01-10 c11-20 c21-30 c31-40 c41-50 c51-60 # что в самих файлах $ cat /tmp/avreg-profiles.d/c51-60 devlist = 51 - 60 avregd { http-port = 879 rtsp-port = 8579 } avreg-site { avregd-httpd = 'http://$_SERVER[SERVER_NAME]:879' } # копируем профили в целевой каталог $ sudo cp /tmp/avreg-profiles.d/* /etc/avreg/profiles/ # если вы копировали по ssh, проверьте правах доступа на целевые файлы $ sudo chown root:root /etc/avreg/profiles/* $ sudo chmod 0644 /etc/avreg/profiles/*
$ sudo avreg-service avreg stop
А в случае использования systemd в качестве системного init, после изменения необходимо выполнить:
$ sudo systemctl daemon-reload
С терминала:
# все сразу $ sudo avreg-service команда # только один конкретный $ sudo avreg-service команда имя_профиля # команда: start|stop|restart|reload|status
С веб-интерфейса: перейдите на страницу «Управление» наздела «Настройка и управление»
Так как настройки камер для всех процессов avregd
находятся в единой базе данных, то возможны некоторые неприятные
коллизии, связанные с невозможностью разделения (sharing) некоторых
устройств/ресурсов.
Некоторые из этих коллизий контролируются по старту демонов и, если возникло недопустимое пересечение, демон avregd завершает работу с сообщением об ошибке.
Например, если несколько профилей пересекаются по номерам камер:
% sudo service avreg start Starting AVReg surveillance system server: avregd-cams1[9916] started; ERROR: cam[01] locked another proc avregd-cams1[9916], lock file `/var/lock/avreg/DB:avreg5_db..cam01' avregd-5.1.2 error starup. See syslog for detail. avregd-cpu1-cams2 failed; failed!
Смотрим системный журнал:
% sudo tail -n 50 /var/log/daemon.log ... Apr 5 18:08:21 host19 avregd-cams2: cam[01] locked another proc avregd-cams1[9916], lock file `/var/lock/avreg/DB:avreg5_db..cam01' # вольный перевод: cam[1] заблокирована другим процессом avregd-cams1[9916], лок-файл `/var/lock/avreg/DB:avreg5_db..cam01' ... Apr 5 18:08:21 host19 avregd-cams2: CLEANUP(0): videoserv terminated
Перечислим такие «уникальные» для всей системы ресурсы: