Установка компонентов Сервера¶
Данный раздел содержит сведения о пошаговой настройке лицензирования и установке компонентов Сервера FindFace. Выполните приведенные ниже инструкции, придерживаясь заданного порядка.
Совет
Установка на одном физическом сервере также может быть выполнена с помощью консольного инсталлятора.
In this section:
Подготовка deb-пакетов к установке¶
Для получения установочных пакетов FindFace Enterprise Server SDK свяжитесь со своим менеджером компании «НТех лаб». Для того чтобы подготовить пакеты к установке, выполните следующие действия:
Предупреждение
На данном этапе будет автоматически создан пользователь ntech
. Во избежание конфликта убедитесь, что пользователь с таким именем отсутствует в системе.
Распакуйте пакет с компонентами на каждом из физических серверов развертывания.
sudo dpkg -i <findface-repo>.deb
Распакуйте пакеты с моделями нейронных сетей (биометрия лица, пол, возраст, эмоции). Если FindFace Enterprise Server SDK развертывается на кластере серверов, модели устанавливаются только на серверах
findface-nnapi
.sudo dpkg -i findface-data*
Добавьте ключ подписи на каждом из серверов развертывания.
sudo apt-key add /var/findface-repo/public.key
Лицензирование¶
Вы получаете файл лицензии вместе с установочными пакетами FindFace Enterprise Server SDK от менеджера «Нтех лаб». Если вы выберите лицензирование в закрытой сети, вам также будет отправлен ключ аппаратной защиты Guardant. Принцип лицензирования FindFace Enterprise Server SDK показан на схеме ниже:
Этапы лицензирования:
- Установите и настройте локальный сервер лицензий NTLS.
- Если лицензируемые компоненты (
findface-nnapi
,tntapi
,fkvideo_detector
иextraction-api
) установлены на удаленных серверах, укажите IP-адрес сервера NTLS в их файлах конфигурации.
Для того чтобы установить и настроить NTLS, выполните следующие действия:
Установите компонент NTLS:
sudo apt-get update sudo apt-get install ntls
Совет
В файле конфигурации NTLS вы можете изменить папку для хранения файла лицензии и при необходимости указать IP-адрес прокси-сервера для доступа в Интернет. Вы также можете настроить удаленный доступ к веб-интерфейсу NTLS, используемому для управления лицензией. Для того чтобы открыть файл конфигурации NTLS, выполните команду:
sudo vi /etc/ntls.cfg
If necessary, change the license folder in the
license-dir
parameter. By default, license files are stored at/ntech/license
:license-dir = /ntech/license
При необходимости раскомментируйте строку
proxy
и укажите IP-адрес прокси-сервера:proxy = http://192.168.1.1:12345
По умолчанию доступ в веб-интерфейс NTLS возможен с любого удаленного сервера (
ui = 0.0.0.0:3185
). Для того чтобы обеспечить доступ к веб-интерфейсу NTLS только с определенного IP-адреса, отредактируйте параметрui
:ui = 127.0.0.1:3185
Enable the NTLS service autostart and launch the service:
sudo systemctl enable ntls && sudo systemctl start ntls
Загрузите файл лицензии в веб-интерфейсе NTLS по адресу
http://<IP-адрес NTLS>:3185/#/
. Вы также можете использовать веб-интерфейс NTLS для продления и апгрейда лицензии.Для лицензирования в закрытой сети также нужно вставить ключ Guardant в USB-порт.
Важно
Если лицензируемые компоненты (findface-nnapi
, tntapi
, fkvideo_detector
и extraction-api
) будут установлены на удаленных серверах, обязательно укажите IP-адрес сервера NTLS в их файлах конфигурации после установки.
Установка компонентов Сервера¶
После того как deb-пакеты FindFace Enterprise Server SDK подготовлены, а лицензирование настроено, установите компоненты Сервера в соответствии с архитектурной схемой.
Установка facenapi¶
Установите и настройте компонент findface-facenapi
следующим образом:
Установите компонент.
sudo apt-get update sudo apt-get install python3-facenapi
If MongoDB is installed on a remote host, specify its IP address in the
findface-facenapi
configuration file.sudo vi /etc/findface-facenapi.ini mongo_host = '192.168.113.1'
Проверьте работоспособность компонента. Для этого вызовите приложение
findface-facenapi
, выполнив приведенную ниже команду. После вызова подождите минуту. Если ошибок не обнаружено, верните контроль над командной строкой, нажав сочетание клавишCtrl+C
.If MongoDB is installed on the same host, execute:
findface-facenapi
If MongoDB is installed on a remote host, execute:
sudo findface-facenapi --config=/etc/findface-facenapi.ini
Check if the
findface-facenapi
service autostart at system startup is disabled.systemctl list-unit-files | grep findface-facenapi
Добавьте сервис в автозагрузку и запустите его.
sudo systemctl enable findface-facenapi.service && sudo service findface-facenapi start
Make sure that the service is up and running. The command will return a service description, a status (should be Active), path and running time.
sudo service findface-facenapi status
Совет
You can view the findface-facenapi
logs by executing:
sudo tail -f /var/log/syslog | grep facenapi
Установка findface-nnapi¶
Установите и настройте компонент findface-nnapi
следующим образом:
Совет
Возможно, вам также захочется прочитать о распознавании пола, возраста и эмоций.
Установите компонент.
sudo apt-get update sudo apt-get install findface-nnapi
If NTLS is installed on a remote host, specify its IP address in the
findface-nnapi
configuration file.sudo vi /etc/findface-nnapi.ini license_ntls_server = 192.168.113.2:3133
Проверьте работоспособность компонента. Для этого вызовите приложение
findface-nnapi
, выполнив приведенную ниже команду. После вызова подождите минуту. Если ошибок не обнаружено, верните контроль над командной строкой, нажав сочетание клавишCtrl+C
.findface-nnapi
Check if the
findface-nnapi
service autostart at system startup is disabled.systemctl list-unit-files | grep findface-nnapi
Добавьте сервис в автозагрузку и запустите его.
sudo systemctl enable findface-nnapi.service && sudo service findface-nnapi start
Make sure that the service is up and running. The command will return a service description, a status (should be Active), path and running time.
sudo service findface-nnapi status
Установка findface-upload¶
Для хранения на Сервере FindFace всех обработанных исходных изображений, а также таких артефактов Сервера, как миниатюры и нормализованные изображения лиц, установите и настройте компонент findface-upload
.
Совет
Пропустите данный шаг, если вы не собираетесь хранить эти данные. В этом случае на Сервере будут храниться только биометрические образцы (в базах данных MongoDB
и Tarantool
).
Выполните следующие действия:
Установите компонент:
sudo apt-get update sudo apt-get install findface-upload
By default the original images, thumbnails and normalized images are stored at
/var/lib/ffupload/uploads/
. You can view this folder content athttp://127.0.0.1:3333/uploads/
in your browser. Make sure that this address is available.curl -I http://127.0.0.1:3333/uploads/ ##HTTP/1.1 200 OK
Важно
You will have to specify it when configuring network.
Установка tntapi¶
Компонент tntapi
соединяет базу данных Tarantool и компонент findface-facenapi
, передавая результаты поиска от базы данных в findface-facenapi
для дальнейшей обработки. Для увеличения скорости поиска на каждом сервере с базой данных Tarantool
могут быть созданы многочисленные сегменты (шарды) tntapi
. Их параллельное функционирование приводит к значительному увеличению производительности. Каждый шард может обрабатывать приблизительно до 10 000 000
лиц. Если FindFace Enterprise Server SDK развертывается на одном сервере, одного шарда, созданного по умолчанию, будет достаточно. При развертывании в кластерной среде количество шардов рассчитывается в зависимости от нескольких параметров (см. ниже).
Установка tntapi на одном сервере¶
Установите и настройте компонент findface-nnapi
следующим образом:
Install
tntapi
. Tarantool will be installed automatically along with it.sudo apt-get update sudo apt-get install findface-tarantool-server
Disable the Tarantool example service autostart and stop the service.
sudo systemctl disable tarantool@example && sudo systemctl stop tarantool@example
For a small-scale project, the
tntapi
shard created by default (tarantool@FindFace
) would suffice as 1 shard can handle up to 10,000,000 faces. Configuration settings of the default shard are defined in the file/etc/tarantool/instances.enabled/FindFace.lua
. We strongly recommend you not to add or edit anything in this file, except the maximum memory usage (memtx_memory
), the NTLS IP address required for thetntapi
licensing, and the remote access setting. The maximum memory usage should be set in bytes, depending on the number of faces the shard handles, at the rate roughly 1280 byte per face.Open the configuration file:
sudo vi /etc/tarantool/instances.enabled/FindFace.lua
Edit the value due to the number of faces the shard handles. The value
1.2*1024*1024*1024
corresponds to 1,000,000 faces:memtx_memory = 1.2 * 1024 * 1024 * 1024,
Specify the NTLS IP address if NTLS is remote:
FindFace.start(“127.0.0.1”, 8001, {license_ntls_server=“192.168.113.2:3133”})
With standalone deployment, you can access Tarantool by default only locally (
127.0.0.1
). If you want to access Tarantool from a remote host, either specify the remote host IP address in theFindFace.start
section, or change127.0.0.1
to0.0.0.0
there to allow access to Tarantool from any IP address. In the case-study below, you allow access only from192.168.113.10
:FindFace.start("192.168.113.10", 8001, {license_ntls_server=“192.168.113.2:3133”})
Now you allow access from any IP address:
FindFace.start("0.0.0.0", 8001, {license_ntls_server=“192.168.113.2:3133”})
Configure the
tntapi
shard to autostart and start the shard.sudo systemctl enable tarantool@FindFace && sudo systemctl start tarantool@FindFace
Retrieve the shard status. The command will return a service description, a status (should be Active), path and running time.
sudo systemctl status tarantool@FindFace
The
tntapi.json
file containing the tntapi shard parameters is automatically installed along withtntapi
into the/etc/
folder.Важно
You will have to uncomment the path to
tntapi.json
when configuring network.
Установка tntapi на кластере серверов¶
Установите и настройте компонент findface-nnapi
следующим образом:
Install
tntapi
on designated hosts. Tarantool will be installed automatically along it.sudo apt-get update sudo apt-get install findface-tarantool-server
Create
tntapi
shards on eachtntapi
host. To learn how to shard, let’s consider a case-study of a cluster environment containing 4 database hosts. We’ll create 4 shards on each.Важно
При создании шардов для крупных проектов соблюдайте следующие правила:
- 1
tntapi
shard can handle approximately 10,000,000 faces. - Количество шардов на одном сервере не должно превышать число физических ядер процессора минус 1.
- 1
Disable the Tarantool example service autostart and stop the service. Do so for all the 4 hosts.
sudo systemctl disable tarantool@example && sudo systemctl stop tarantool@example
Disable the shard created by default. Do so for all the 4 hosts.
sudo systemctl disable tarantool@FindFace
Напишите bash-скрипт
shard.sh
, который автоматически создаст шарды и файлы конфигурации для каждого из них. Скрипт должен быть написан для каждого из 4-х серверов. Используйте приведенный ниже скрипт как основу для своего кода. Данный скрипт создает на сервере 4 шарда, использующие порты: tntapi33001..33004
и http8001..8004
.Важно
The script below creates configuration files based on the default configuration settings stored in the file
/etc/tarantool/instances.enabled/FindFace.lua
. We strongly recommend you not to add or edit anything in the default file, except the maximum memory usage (memtx_memory
) and the NTLS IP address required for thetntapi
licensing. The maximum memory usage should be set in bytes for each shard, depending on the number of faces a shard handles, at the rate roughly 1280 byte per face.Open the configuration file:
sudo vi /etc/tarantool/instances.enabled/FindFace.lua
Edit the value due the number of faces a shard handles. The value
1.2*1024*1024*1024
corresponds to 1,000,000 faces:memtx_memory = 1.2*1024*1024*1024,
Specify the NTLS IP address if NTLS is remote:
FindFace.start(“127.0.0.1”, 8001, {license_ntls_server=“192.168.113.2:3133”})
#!/bin/sh set -e for I in `seq 1 4`; do TNT_PORT=$((33000+$I)) && HTTP_PORT=$((8000+$I)) && sed " s#/opt/ntech/var/lib/tarantool/default#/opt/ntech/var/lib/tarantool/shard_$I#g; s/listen = .*$/listen = '127.0.0.1:$TNT_PORT',/; s/\"127.0.0.1\", 8001,/\"0.0.0.0\", $HTTP_PORT,/; " /etc/tarantool/instances.enabled/FindFace.lua > /etc/tarantool/instances.enabled/FindFace_shard_$I.lua; mkdir -p /opt/ntech/var/lib/tarantool/shard_$I/snapshots mkdir -p /opt/ntech/var/lib/tarantool/shard_$I/xlogs mkdir -p /opt/ntech/var/lib/tarantool/shard_$I/index chown -R tarantool:tarantool /opt/ntech/var/lib/tarantool/shard_$I echo "Shard #$I inited" done;
Совет
Загрузите
пример скрипта
.Run the script from the home directory.
sudo sh ~/shard.sh
Проверьте, созданы ли файлы конфигурации.
ls /etc/tarantool/instances.enabled/ ##example.lua FindFace.lua FindFace_shard_1.lua FindFace_shard_2.lua FindFace_shard_3.lua FindFace_shard_4.lua
Launch all the 4 shards. Do so on each host.
for I in `seq 1 4`; do sudo systemctl enable tarantool@FindFace_shard_$I; done; for I in `seq 1 4`; do sudo systemctl start tarantool@FindFace_shard_$I; done;
Проверьте статус шардов.
sudo systemctl status tarantool@FindFace*
You should get the following output:
tarantool@FindFace_shard_3.service - Tarantool Database Server Loaded: loaded (/lib/systemd/system/tarantool@.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2017-01-10 16:22:07 MSK; 32s ago ... tarantool@FindFace_shard_2.service - Tarantool Database Server Loaded: loaded (/lib/systemd/system/tarantool@.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2017-01-10 16:22:07 MSK; 32s ago ... tarantool@FindFace_shard_1.service - Tarantool Database Server Loaded: loaded (/lib/systemd/system/tarantool@.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2017-01-10 16:22:07 MSK; 32s ago ... tarantool@FindFace_shard_4.service - Tarantool Database Server Loaded: loaded (/lib/systemd/system/tarantool@.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2017-01-10 16:22:07 MSK; 32s ago ...
Совет
You can view the
tntapi
logs by executing:sudo tail -f /var/log/tarantool/FindFace_shard_{1,2,3,4}.log
На сервере с компонентом
findface-facenapi
создайте файлtntapi_cluster.json
, содержащий адреса и порты всех шардов. Распределите доступные шарды равномерно по 1024 ячейкам в одной строке. Нажмите здесь, чтобы посмотреть, как выглядит файл для 4 серверов с 4 шардами на каждом.Совет
Вы можете создать файл
tntapi_cluster.json
следующим образом:Создайте файл с линейным списком всех шардов, каждый шард с новой строки (нажмите здесь, чтобы посмотреть пример).
sudo vi s.txt
Выполните приведенный ниже скрипт. В результате будет создан новый файл
tntapi_cluster.json
, содержащий список адресов и портов всех шардов, равномерно распределенных по 1024 ячейкам.
cat s.txt | perl -lane 'push(@s,$_); END{$m=1024; $t=scalar @s;for($i=0;$i<$m;$i++){$k=int($i*$t/$m); push(@r,"\"".$s[$k]."\"")} print "[[".join(", ",@r)."]]"; }' > tntapi_cluster.json
Move
tntapi_cluster.json
to the directory/etc/
.Важно
You will have to uncomment and specify the path to
tntapi_cluster.json
when configuring network.
Сетевые настройки¶
После установки компонентов Сервера FindFace настройте их взаимодействие друг с другом. Выполните следующие действия:
Откройте для редактирования файл конфигурации
findface-facenapi.ini
.sudo vi /etc/findface-facenapi.ini
Отредактируйте настройки в соответствии с фактическим распределением компонентов.
ffupload_url = 'http://127.0.0.1:3333' mongo_host = '127.0.0.1' nnapi_url = 'http://127.0.0.1:18088' tntapi_servers_file = '/etc/tntapi.json'
Предупреждение
Содержимое файла
findface-facenapi.ini
должно представлять собой синтаксически верный код Python.Примечание
Do not specify
ffupload_url
if thefindface-upload
component is not installed.По умолчанию, если один или несколько шардов
tntapi
будут недоступны во время идентификации лица, компонентfindface-facenapi
вернет ошибку. При необходимости раскомментируйте параметрtntapi_ignore_search_error
и присвойте ему значениеTrue
. В этом случаеfindface-facenapi
будет использовать для идентификации только доступные шардыtntapi
и укажет в ответе отношение количества доступных шардовtntapi
к их общему количеству.tntapi_ignore_search_errors = True
Restart all the FindFace Enterprise Server SDK services and nginx (for
findface-upload
) on the relevant host(s).sudo service 'findface*' restart sudo service nginx restart
Проверьте статус сервисов. Команда вернет описание сервисов, их статус (должен быть Активен), путь и длительность текущей сессии.
sudo service 'findface*' status sudo service nginx status