Если новый стример добавляется вторым в кластер, то, вероятнее всего, в настройках мастера указан IP-адрес 127.0.0.1
, который необходимо изменить:
IP-адрес
изменить значение 127.0.0.1
на значение IP-адреса сервера, на котором запущен мастер и который находится в той же сети (внутренней или внешней), в которой находится новый стример.IP
вместо 127.0.0.1
указать тот же IP-адрес, который в предыдущем пункте был указан для мастера в поле IP-адрес
master.conf
поменять все вхождения 127.0.0.1
на тот IP-адрес, который в предыдущем пункте был указан для мастера в поле IP-адрес
service cctv-master restart
streamer.conf
поменять все вхождения 127.0.0.1
на тот IP-адрес, который в предыдущем пункте был указан для мастера в поле IP-адрес
service cctv-streamer restart
Пример итоговых настроек:
После выполнения указанных действий необходимо убедиться, что у стримера в административной панели на странице Обзор
указан статус OK
.
Для добавления в существующий кластер нового стримера необходимо в административной панели открыть страницу добавления нового стримера и заполнить форму:
wget https://fpst.ru/files/utils/installstreamer
chmod +x installstreamer
sudo ./installstreamer ССЫЛКА_НА_ДИСТРИБУТИВ_ФОРПОСТ
/data/cctv/etc/streamer.conf
, заменив 127.0.0.1
в параметрах addr
и master
на IP-адрес, который ранее был указан в форме добавления стримераservice cctv-streamer restart
После выполнения указанных действий необходимо убедиться, что у нового стримера в административной панели на странице Обзор
указан статус OK
.
Новый мастер запускается на том же сервере, на котором уже запущен предыдущий мастер.
В административной панели открыть раздел Кластеры
и нажать кнопку Добавить
, далее заполнив форму:
На сервере, на котором уже запущен мастер, необходимо:
NEW_MASTER_FOLDER
- заменить на требуемое название, например master2
):mkdir /data/NEW_MASTER_FOLDER
mkdir /data/NEW_MASTER_FOLDER/log
mkdir /data/NEW_MASTER_FOLDER/run
mkdir /usr/local/etc/NEW_MASTER_FOLDER
ln -s /usr/local/etc/NEW_MASTER_FOLDER /data/NEW_MASTER_FOLDER/etc
chown cctv:cctv /data/NEW_MASTER_FOLDER/log
chown cctv:cctv /data/NEW_MASTER_FOLDER/run
/data/NEW_MASTER_FOLDER/etc/master.conf
:{
addr: ["NEW_MASTER_IP", NEW_MASTER_STREAMER_PORT, NEW_MASTER_WEB_PORT],
portal: "NEW_MASTER_IP",
zabbix: ["ZABBIX_SERVER_IP", NEW_MASTER_ZABBIX_PORT],
db: { host: "localhost", schema: "cctv", user: "cctv", pass: "DB_CCTV_PASS" },
lock: ["NEW_MASTER_LOCK_NAME", "NEW_MASTER_LOCK_KEY"],
serialno: "NEW_MASTER_LOCK_SERIAL",
pidfile: "/data/NEW_MASTER_FOLDER/run/master.orig.pid",
outlog: "/data/NEW_MASTER_FOLDER/log/master.out.log",
errlog: "/data/NEW_MASTER_FOLDER/log/master.err.log",
disable_translation_ip_check: true,
}
где:
NEW_MASTER_FOLDER
- название папки нового мастера
NEW_MASTER_IP
- IP-адрес, который был выше указан в административной панели при добавлении нового мастера
NEW_MASTER_WEB_PORT
- Порт мастера, к которому будет подключаться веб-портал и который был выше указан в административной панели при добавлении нового мастера
NEW_MASTER_STREAMER_PORT
- Порт мастера, к которому при запуске будет с другого сервера подключаться стример (например 3088)
ZABBIX_SERVER_IP
- IP-адрес Zabbix-сервера, подключения от которого будет принимать мастер
NEW_MASTER_ZABBIX_PORT
- Порт мастера, на котором он будет принимать подключения от Zabbix-сервера (например 3085)
DB_CCTV_PASS
- Пароль для подключения мастера к БД (см. master.conf
первого мастера)
NEW_MASTER_LOCK_NAME, NEW_MASTER_LOCK_KEY, NEW_MASTER_LOCK_SERIAL
- Параметры лицензионного ключа
/etc/init.d/cctv-master
, например, в файл /etc/init.d/cctv-master2
DESC="Cctv master"
на DESC="Cctv master2"
/data/cctv/
на /data/NEW_MASTER_FOLDER/
update-rc.d cctv-master2 defaults
service cctv-master2 start
/etc/logrotate.d/cctv
следующую секцию (заменив NEW_MASTER_FOLDER
):/data/NEW_MASTER_FOLDER/log/master.err.log /data/NEW_MASTER_FOLDER/log/master.out.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
nodateext
create 644 cctv cctv
sharedscripts
postrotate
if [ -r /data/NEW_MASTER_FOLDER/run/master.orig.pid ]
then
kill -HUP `head -n 1 /data/NEW_MASTER_FOLDER/run/master.orig.pid`
fi
endscript
}
Для запуска стримера в новом кластере необходимо:
streamer.conf
указать: master: ["NEW_MASTER_IP", NEW_MASTER_STREAMER_PORT],
service cctv-streamer restart
Внутри кластера новые камеры подключаются к стримерам по круговому циклу: каждая новая камера подключается к следующему стримеру.
Автоматический перенос камер с одного стримера на другие стримеры происходит, если на стримере не хватает места для записи камер. Также автоматический перенос камер происходит, если стример выходит из строя. Чтобы отключить автоматический перенос камер между стримерами, необходимо в конфигурационный файл мастера master.conf
добавить параметры:
streamer_restart_timeout: 2592000,
streamer_space_timeout: 2592000,
Если необходимо принудительно переадресовать часть камер на другой стример, то можно воспользоваться скриптом change-camera-streamer:
./change-camera-streamer --src-streamer-id <стример, с которого нужно перенести камеры> --dst-streamer-id <стример, на который нужно перенести камеры> --count <количество камер для переноса>
Скачать скрипт change-camera-streamer можно по ссылке: https://fpst.ru/files/utils/change-camera-streamer
Скрипт пытается перенести запись указанного числа камер с одного стримера на другой. Попытка переноса записи включает в себя проверку доступности камеры, наличия свободного пространства и других параметров. Если попытка переноса камеры успешна, то запись со старого стримера будет отключена. Это может занять некоторое время, в течение которого запись будет вестись на оба стримера.
Также можно перенести камеру с одного стримера на другой, если в административной панели на странице камеры в адресной строке браузере поменять в конце строки /view.html
на /setstreamer/<ID нового стримера>
и перейти по этой ссылке.
Перенос камер между стримерами возможен только для камер, у которых включена запись.
Чтобы отключить запись камер на стример, необходимо:
./change-camera-streamer --src-streamer-id <стример, с которого нужно перенести камеры> --dst-streamer-id <стример, на который нужно перенести камеры> --count <количество камер для переноса>
Скачать скрипт change-camera-streamer можно по ссылке: https://fpst.ru/files/utils/change-camera-streamer
service cctv-master restart
Для подключения к существующему серверу, на котором уже работает стример, дополнительного хранилища, необходимо на этом сервере запустить дополнительный стример.
В инструкции ниже необходимо заменять N
на число, которое равно количеству уже запущенных на сервере стримеров плюс 1. Например, если на сервере уже работает один стример и необходимо на сервере запустить второй стример, то N=2
.
За основу настроек дополнительного стримера необходимо взять настройки предыдущего стримера, запущенного на этом сервере. Например, если на сервере уже работает один стример, то за основу необходимо взять настройки этого стримера.
В административной панели необходимо открыть страницу добавления нового стримера и заполнить форму, использую за основу параметры со страницы редактирования предыдущего стримера:
N
необходимо заменить)На сервере стримера выполнить следующие действия:
N
:mkdir /data/cctvN
mkdir /data/cctvN/log
mkdir /data/cctvN/run
mkdir /usr/local/etc/cctvN
ln -s /usr/local/etc/cctvN /data/cctvN/etc
mkdir /data/cctvN/data
cp /data/cctv/data/cctv-bg.jpg /data/cctvN/data/
chown cctv:cctv /data/cctvN/log
chown cctv:cctv /data/cctvN/run
MOUNT_POINT_DIR
:mkdir MOUNT_POINT_DIR/archive
chown cctv:cctv MOUNT_POINT_DIR/archive
N
:cp /data/cctv/etc/streamer.conf /data/cctvN/etc/
N
(в качестве текстового редактора вместо mcedit
можно использовать другой редактор):mcedit /data/cctvN/etc/streamer.conf
MOUNT_POINT_DIR
:arch_dir: "MOUNT_POINT_DIR/archive",
name: "cctvN",
pidfile
, outlog
и errlog
, заменив N
:pidfile: "/data/cctvN/run/streamer.orig.pid",
outlog: "/data/cctvN/log/streamer.out.log",
errlog: "/data/cctvN/log/streamer.err.log",
N
:cp /etc/init.d/cctv-streamer /etc/init.d/cctv-streamerN
N
(в качестве текстового редактора вместо mcedit
можно использовать другой редактор):mcedit /etc/init.d/cctv-streamerN
N
:cctv-streamer
на cctv-streamerN
/cctv/
на /cctvN/
N
и выполнив команду:update-rc.d cctv-streamerN defaults
chkconfig cctv-streamerN on
N
:/data/cctvN/log/streamer.err.log /data/cctvN/log/streamer.out.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
nodateext
create 644 cctv cctv
sharedscripts
postrotate
if [ -r /data/cctvN/run/streamer.orig.pid ]
then
kill -HUP `head -n 1 /data/cctvN/run/streamer.orig.pid`
fi
endscript
}
При смене IP-адреса сервера стримера, необходимо:
streamer.conf
в параметре addr
cctv-streamer
командой:service cctv-streamer restart
ВНЕШНИЙ_IP_АДРЕС_СТРИМЕРА
и ID_СТРИМЕРА
):UPDATE Streamer SET LinkIP = inet_aton('ВНЕШНИЙ_IP_АДРЕС_СТРИМЕРА') WHERE ID = ID_СТРИМЕРА;
wget https://fpst.ru/files/utils/send-to-master
chmod 755 send-to-master
IP_АДРЕС_МАСТЕРА
и ПОРТ_МАСТЕРА
):./send-to-master IP_АДРЕС_МАСТЕРА ПОРТ_МАСТЕРА '{op:"update_vpn_streamer_list"}'
IP_АДРЕС_МАСТЕРА=127.0.0.1
ПОРТ_МАСТЕРА=2089
select c.MasterID, c.IsActive, count(c.ID) from Camera c left join VpnCameraStreamer v on c.ID = v.CameraID join Master m on c.MasterID = m.ID where c.VpnStreamerID is not null and c.ParentID is null and c.LightParentID is null and v.ConfigUpdate < m.LinkConfigUpdate group by c.MasterID, c.IsActive;
Чтобы перенести Форпост со старого сервера на новый, необходимо выполнить следующие действия:
service cctv-master stop
service cctv-streamer stop
service apache2 stop
mysql cctv
и выполнить SQL-запрос drop database cctv;
/var/lib/cctv
/data/cctv/etc/master.conf
/data/cctv/etc/streamer.conf
(кроме параметра https
)/var/www/cctv-portal/protected/config/local.php
(из заменяемого файла на новом сервере сохранить параметр db
)/var/www/cctv-portal/protected/runtime/config.php
/var/www/cctv-portal/protected/runtime/decor.php
service cctv-master stop
service cctv-streamer stop
service apache2 stop
mysqldump --skip-lock-tables -B cctv | gzip -c - > cctv-`date '+%Y%m%d-%H%M'`.sql.gz
Traffic
и создать ее вручную при импорте дампа:mysqldump --ignore-table=cctv.Traffic --skip-lock-tables -B cctv | gzip -c - > cctv-`date '+%Y%m%d-%H%M'`.sql.gz
service mysql stop
mysql -e"CREATE DATABASE cctv DEFAULT CHARACTER SET utf8;"
mysql cctv < ИМЯ_ФАЙЛА_ДАМПА
cd /var/www/cctv-portal
chgrp -R www-data images assets protected/runtime protected/config/local.php
chmod 775 images images/partner images/partner/camera images/screenshot assets protected/runtime
chmod 640 protected/config/local.php
service apache2 start
/data/cctv/etc/master.conf
все вхождения 127.0.0.1
поменять на тот IP-адрес нового сервера, к которому будет подключаться стример со старого сервераservice cctv-master start
/data/cctv/etc/streamer.conf
в параметре master
поменять IP-адрес старого сервера на адрес нового сервераservice cctv-streamer start
ОК
Чтобы видеоаналитику для камеры выполнял один сервер-стример, а запись архивов - другой сервер-стример, необходимо выполнить следующие действия: