Обновление FindFace Security до 4.2¶
Предупреждение
Начиная с версии 4.1, FindFace Security использует новую версию Tarantool. Биометрическая база данных из предыдущих версий FindFace Security (4.0 и более ранних) НЕСОВМЕСТИМА с FindFace Security 4.2. При обновлении продукта до 4.2 обязательно используйте функцию резервного копирования / восстановления (см. полный алгоритм ниже).
Для обновления FindFace Security с любой предыдущей версии до 4.2 выполните следующие действия:
Откройте файл конфигурации
findface-security
. Сохраните для последующего использования значения следующих параметров:EXTERNAL_ADDRESS
,SECRET_KEY
,VIDEO_DETECTOR_TOKEN
,ROUTER_URL
.sudo vi /etc/ffsecurity/config.py EXTERNAL_ADDRESS = "http://172.20.77.58" ... # use pwgen -sncy 50 1|tr "'" "." to generate your own unique key SECRET_KEY = 'c8b533847bbf7142102de1349d33a1f6' FFSECURITY = { 'VIDEO_DETECTOR_TOKEN': '381b0f4a20495227d04185ab02f5085f', ... 'ROUTER_URL': 'http://172.20.77.58', ... }
Остановите сервис
findface-security
.sudo systemctl stop findface-security*
Создайте резервную копию биометрической базы данных на основе Tarantool в любой выбранной директории, например,
/etc/findface_dump
.Совет
Подробнее см. Резервное копирование и восстановление хранилищ данных.
mkdir -p /etc/findface_dump cd /etc/findface_dump sudo findface-storage-api-dump -config /etc/findface-sf-api.ini
Установите apt-репозиторий с новой версией FindFace Security, используя консольный инсталлятор согласно инструкции в этом разделе.
Установите пакет
pgbouncer
следующим образом:sudo apt update sudo apt install -y pgbouncer
Предоставьте надежный пароль пользователю
ntech
(9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3
в примере ниже). Внесите учетные данные в список пользователейpgbouncer
.echo '"ntech" "9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3"' | sudo tee -a /etc/pgbouncer/userlist.txt
Настройте
pgbouncer
. Откройте файл/etc/pgbouncer/pgbouncer.ini
и добавьте базу данныхffsecurity
в разделdatabases
. Настройте другие параметры, как показано в примере ниже.sudo vi /etc/pgbouncer/pgbouncer.ini [databases] ffsecurity = dbname=ffsecurity host=localhost port=5432 user=ntech ... ; ip address or * which means all ip-s listen_addr = 127.0.0.1 listen_port = 5439 ... ; any, trust, plain, crypt, md5 auth_type = plain ... ; When server connection is released back to pool: ; session - after client disconnects ; transaction - after transaction finishes ; statement - after statement finishes pool_mode = transaction ... ; total number of clients that can connect max_client_conn = 16384 ... ;; Syslog settings syslog = 1 ;syslog_facility = daemon ;syslog_ident = pgbouncer
Скопируйте пароль пользователя
ntech
(9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3
в примере). В PostgreSQL установите скопированный пароль для ролиntech
. Откройте интерактивный терминал PostgreSQL. Появится строкаpostgres=#
. После знака#
введите следующую команду:ALTER ROLE ntech PASSWORD ‘<скопированный пароль>’
.sudo -u postgres psql postgres=# ALTER ROLE ntech PASSWORD '9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3';
Через интерактивный терминал PostgreSQL создайте базу данных
ffcounter
в PostgreSQL.postgres=# CREATE DATABASE ffcounter WITH OWNER ntech ENCODING 'UTF-8' LC_COLLATE='C.UTF-8' LC_CTYPE='C.UTF-8' TEMPLATE template0;
Создайте и настройте
pgbouncer.service
.sudo touch /etc/systemd/system/pgbouncer.service sudo vi /etc/systemd/system/pgbouncer.service
Вставьте следующий код:
[Unit] Description=Pgbouncer service After=postgresql.service Before=findface-security.service [Service] User=postgres Group=postgres ExecStart=/usr/sbin/pgbouncer "/etc/pgbouncer/pgbouncer.ini" [Install] WantedBy=multi-user.target
Добавьте
pgbouncer.service
в автозагрузку и перезапустите сервис:sudo systemctl enable pgbouncer.service sudo systemctl restart pgbouncer.service
Установите из репозитория новые сервисы FindFace Security в соответствии с текущей архитектурной схемой.
CPU-версия:
sudo apt update sudo apt install ffsecurity ffsecurity-ui findface-extraction-api findface-ntls findface-sf-api findface-tarantool-server findface-upload findface-video-manager findface-video-worker-cpu findface-counter
GPU-версия:
sudo apt update sudo apt install ffsecurity ffsecurity-ui findface-extraction-api-gpu findface-ntls findface-sf-api findface-tarantool-server findface-upload findface-video-manager findface-video-worker-gpu findface-gpudetector-data findface-counter
Важно
Для FindFace Security 4.2 на GPU необходимы драйверы
nvidia-440
иcuda 10.2
. Убедитесь, что установлены правильные версии драйверов.Важно
В какой-то момент вам будет предложено выбрать, какую версию конфигурационного файла
findface-security
использовать. Выберите вариантInstall the packages maintainer’s version
.Добавьте сервис
findface-counter
в автозагрузку.sudo systemctl enable findface-counter
Откройте файл конфигурации
findface-security
и вставьте в него сохраненные значения параметровEXTERNAL_ADDRESS
,SECRET_KEY
,VIDEO_DETECTOR_TOKEN
иROUTER_URL
. Заполните разделDATABASES
по аналогии:’PORT’: 5439, ‘USER’: ‘ntech’, ‘PASSWORD’: ‘9T3g1nXy9yx3y8MIGm9fbef3dia8UTc’
(пароль из/etc/pgbouncer/userlist.txt
).sudo vi /etc/ffsecurity/config.py ... # Database is used by FindFace Security to store cameras, # camera groups, watchlists and so on. Only PostgreSQL is supported. DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'DISABLE_SERVER_SIDE_CURSORS': True, 'NAME': 'ffsecurity', 'PORT': 5439, 'USER': 'ntech', 'PASSWORD': '9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3', } } ... # Use pwgen -sncy 50 1|tr "'" "." to generate your own unique key SECRET_KEY = '002231ccb690586f4d33e98322c591bb' ... SERVICE_EXTERNAL_ADDRESS = 'http://172.20.77.58' # EXTERNAL_ADDRESS is used to access objects created inside FFSecurity via external links. EXTERNAL_ADDRESS = 'http://172.20.77.58' ... # findface-video-worker authorization token 'VIDEO_DETECTOR_TOKEN': '8977e1b0067d43f6c908d0bf60363255', ... # findface-video-worker face posting address, # it must be set to either FFSecurity EXTERNAL_ADDRESS (by default) # or findface-facerouter url (in some specific cases) 'ROUTER_URL': 'http://127.0.0.1:80',
Измените структуру базы данных Tarantool с помощью файла
tnt_schema.lua
из новой версии.sudo findface-security make_tnt_schema | sudo tee /etc/ffsecurity/tnt_schema.lua
Остановите шарды
findface-tarantool-server
. Очистите директории с данными для всех активных шардов.sudo systemctl stop 'tarantool@*' sudo rm /opt/ntech/var/lib/tarantool/shard-*/{index,snapshots,xlogs}/*
Перейдите в директорию с файлами конфигурации Tarantool
/etc/tarantool/instances.enabled/
. В каждый файл конфигурации*.lua
добавьте определениеmeta_indexes
, как показано в примере ниже.sudo vi /etc/tarantool/instances.enabled/*.lua FindFace.start("127.0.0.1", 8001, { license_ntls_server="127.0.0.1:3133", meta_indexes=meta_indexes, meta_scheme = meta_scheme })
Перезапустите шарды
findface-tarantool-server
.TNT=$(ls /etc/tarantool/instances.enabled/ | cut -c 7,8,9) for i in $TNT; do sudo systemctl restart tarantool@shard-$i.service ; done
Восстановите базу данных Tarantool из резервной копии.
cd /etc/findface_dump for x in *.json; do sudo findface-storage-api-restore -config /etc/findface-sf-api.ini < "$x"; done
Перезагрузите сервисы.
sudo systemctl restart findface-security.service sudo systemctl restart findface-ntls findface-extraction-api findface-video-worker* findface-video-manager findface-sf-api findface-counter
Перенесите схему базы данных из FindFace Security в PostgreSQL, заново создайте группы пользователей с предустановленными правами и первого пользователя с правами администратора.
sudo findface-security migrate sudo findface-security create_groups sudo findface-security create_default_user
Перезапустите PostgreSQL.
На Ubuntu 16.04:
sudo systemctl restart postgresql@9.5-main.service
На Ubuntu 18.04:
sudo systemctl restart postgresql@10-main.service