Типичная установка в кластере
Данный раздел посвящен развертыванию FindFace Enterprise Server в кластерной среде.
Совет
Если после прочтения данного раздела у вас остались вопросы, не стесняйтесь задать их нашим экспертам по адресу support@ntechlab.com.
Развертывание FindFace Enterprise Server в кластере может быть необходимо по следующим причинам:
Нужно распределить высокую нагрузку при обработке видео.
Требуется обработка видеопотоков от группы камер в месте их физического расположения.
Примечание
Актуально для сетей гостиниц, магазинов, при наличии нескольких проходных в одном здании и др.
Нужно распределить высокую нагрузку при извлечении биометрических образцов.
В поиске задействовано большое количество лиц, что требует реализации распределенной базы данных.
Перед тем как приступить к развертыванию, постройте архитектурную схему с учетом будущей нагрузки системы и выделенных под нее аппаратных ресурсов (см. Системные требования). Наиболее распространенной схемой является следующая:
Центральный сервер с установленными компонентами
findface-ntls,findface-sf-api,findface-video-manager,findface-upload,findface-video-worker,findface-extraction-api,findface-tarantool-server, а также сторонним программным обеспечением.Несколько дополнительных серверов для обработки видео с установленным компонентом
findface-video-worker.(При необходимости) Несколько дополнительных серверов для извлечения биометрических образцов с установленным компонентом
findface-extraction-api.(При необходимости) Дополнительные серверы базы данных с несколькими шардами Tarantool на каждом.
Инструкции в настоящем разделе приведены для описанной выше наиболее часто встречающейся схемы развертывания в кластере. В высоконагруженных системах также может потребоваться распределить обработку API-запросов, т. е. организовать несколько серверов findface-sf-api и findface-video-manager. В этом случае руководствуйтесь инструкциями в разделе Полностью настраиваемая установка.
Развертывание FindFace Enterprise Server в кластерной среде состоит из следующих этапов:
Развертывание центрального сервера
Для развертывания центрального сервера FindFace Enterprise Server выполните следующие действия:
На выделенном физическом сервере установите FindFace Enterprise Server из инсталлятора следующим образом:
Устанавливаемый продукт:
FindFace Server.Тип установки:
Single server, multiple video workers. В этом случае FindFace Enterprise Server будет установлен в качестве центрального сервера и настроен на взаимодействие с дополнительными удаленными экземплярамиfindface-video-worker.Тип ускорения
findface-video-worker(на центральном сервере): CPU или GPU, в зависимости от конфигурации оборудования.Тип ускорения
findface-extraction-api(на центральном сервере): CPU или GPU, в зависимости от конфигурации оборудования.
По завершении установки в консоль будет выведена информация, необходимая для использования FindFace Security:
Совет
Обязательно сохраните эти данные: они вам понадобятся.
############################################################################# # Installation is complete # ############################################################################# - upload your license to http://127.0.0.1:3185/ - FindFace SF-API address: http://172.20.77.78:18411/ - FindFace VideoManager address: http://172.20.77.78:18411/
Загрузите файл лицензии FindFace Enterprise Server через веб-интерфейс
findface-ntlsпо адресуhttp://<IP адрес сервера ntls>:3185.Примечание
IP-адрес сервера в ссылках на веб-интерфейсы FindFace имеет вид
127.0.0.1или <IP_адрес_в_сети>, в зависимости от того, принадлежит ли сервер к сети.Разрешите лицензируемым сервисам обращаться к серверу лицензирования
findface-ntlsс любого IP-адреса. Для этого, откройте файл конфигурации/etc/findface-ntls.cfgи установитеlisten = 0.0.0.0:3133.sudo vi /etc/findface-ntls.cfg # Listen address of NTLS server where services will connect to. # The format is IP:PORT # Use 0.0.0.0:PORT to listen on all interfaces # This parameter is mandatory and may occur multiple times # if you need to listen on several specific interfaces or ports. listen = 0.0.0.1:3133
Развертывание серверов обработки видео
На дополнительном сервере для обработки видео установите экземпляр findface-video-worker, руководствуясь пошаговыми инструкциями. Ответьте на вопросы инсталлятора следующим образом:
Устанавливаемый продукт: FindFace Video Worker.
Тип ускорения
findface-video-worker: CPU или GPU, в зависимости от конфигурации оборудования.FindFace Enterprise Server IP address: IP-адрес центрального сервера.
После этого процесс установки будет автоматически запущен. Ответы на вопросы инсталлятора будут сохранены в файл /tmp/<findface-installer-*>.json. Используйте данный файл, чтобы установить FindFace Video Worker на других серверах, не отвечая на вопросы инсталлятора повторно. Для этого запустите инсталлятор командой:
sudo ./<findface-security-and-server-xxx>.run -f /tmp/<findface-installer-*>.jsonПримечание
После установки укажите IP-адреса компонентов
findface-ntlsиfindface-video-managerв файле конфигурацииfindface-video-worker.sudo vi /etc/findface-video-worker-cpu.ini sudo vi /etc/findface-video-worker-gpu.iniВ параметре
ntls-addrукажите IP-адрес сервераfindface-ntls.ntls-addr=127.0.0.1:3133В параметре
mgr-staticукажите IP-адрес сервераfindface-video-manager, который будет обеспечиватьfindface-video-workerнастройками и списком видеопотоков для обработки.mgr-static=127.0.0.1:18811
Развертывание биометрических серверов
На дополнительном сервере для извлечения биометрических образцов установите экземпляр findface-extraction-api из консольного инсталлятора. Ответьте на вопросы инсталлятора следующим образом:
Устанавливаемый продукт:
FindFace Server.Тип установки:
Fully customized installation.Устанавливаемые компоненты FindFace Enterprise Server:
findface-extraction-apiиfindface-data. Для того чтобы их выбрать, сначала снимите выделение со всех компонентов, введя в командной строке-*, затем введите порядковые номераfindface-extraction-apiиfindface-dataчерез пробел:1 7. Введитеdoneдля сохранения выбора и перехода к следующему шагу.Тип ускорения
findface-extraction-api: CPU или GPU.Необходимость в изменении файла конфигурации
findface-extraction-api: укажите IP-адрес сервераfindface-ntls.Устанавливаемые модели нейронных сетей: CPU/GPU-модель для извлечения биометрических данных лица (обязательна для установки) и (опционально) CPU/GPU модели для распознавания пола, возраста, эмоций, очков и/или бороды. Для того чтобы выбрать нужные модели, сначала снимите установленное по умолчанию выделение всех моделей, введя в командной строке
-*, затем введите порядковые номера нужных моделей через пробел, например:8 2для выбора соответственно GPU-модели для извлечения биометрических данных и GPU-модели для распознавания возраста. Введитеdoneдля сохранения выбора и перехода к следующему шагу. Удостоверьтесь, что для каждой модели выбран правильный тип ускорения CPU или GPU: он должен совпадать с типом ускоренияfindface-extraction-api. Обратите внимание, чтоfindface-extraction-apiна CPU может работать только с CPU-моделями, в то время какfindface-extraction-apiна GPU поддерживает как CPU-, так и GPU-модели. Подробнее см. Распознавание атрибутов лица.Доступны следующие модели:
Атрибут лица
Ускорение
Пакет
биометрия лица
CPU
findface-data-grapefruit-160-cpu_3.0.0_amd64.deb, findface-data-grapefruit-480-cpu_3.0.0_amd64.deb
GPU
findface-data-grapefruit-160-gpu_3.0.0_amd64.deb, findface-data-grapefruit-480-gpu_3.0.0_amd64.deb
возраст
CPU
findface-data-age.v1-cpu_3.0.0_amd64.deb
GPU
findface-data-age.v1-gpu_3.0.0_amd64.deb
пол
CPU
findface-data-gender.v2-cpu_3.0.0_amd64.deb
GPU
findface-data-gender.v2-gpu_3.0.0_amd64.deb
эмоции
CPU
findface-data-emotions.v1-cpu_3.0.0_amd64.deb
GPU
findface-data-emotions.v1-gpu_3.0.0_amd64.deb
очки
CPU
findface-data-glasses3.v0-cpu_3.0.0_amd64.deb
GPU
findface-data-glasses3.v0-gpu_3.0.0_amd64.deb
борода
CPU
findface-data-beard.v0-cpu_3.0.0_amd64.deb
GPU
findface-data-beard.v0-gpu_3.0.0_amd64.deb
После этого процесс установки будет автоматически запущен. Ответы на вопросы инсталлятора будут сохранены в файл /tmp/<findface-installer-*>.json. Используйте данный файл, чтобы установить findface-extraction-api на других серверах, не отвечая на вопросы инсталлятора повторно.
sudo ./<findface-security-and-server-xxx>.run -f /tmp/<findface-installer-*>.json
После развертывания биометрических серверов распределите между ними нагрузку.
Распределение нагрузки между биометрическими серверами
Распределение нагрузки между несколькими биометрическими серверами выполняется через балансировщик нагрузки. Приведенная ниже пошаговая инструкция демонстрирует балансировку нагрузки с помощью NGINX в режиме round-robin для 3-х экземпляров findface-extraction-api, расположенных на различных физических серверах. Один экземпляр установлен на центральном сервере FindFace Enterprise Server (172.168.1.9), 2 других на дополнительных удаленных серверах (172.168.1.10, 172.168.1.11). Если в системе присутствует большее количество биометрических серверов, балансировка нагрузки выполняется по аналогии.
Совет
Вы можете использовать любой удобный вам балансировщик нагрузки. Руководство по его использованию ищите в соответствующей справочной документации.
Для настройки балансировки нагрузки выполните следующие действия:
Назначьте т. н. сервер шлюза для балансируемой группы биометрических серверов. Им может стать центральный сервер FindFace Enterprise Server (рекомендуется) или любой другой сервер с установленным NGINX.
Важно
Вам нужно будет указать IP-адрес шлюза при настройке распределенной сети FindFace Enterprise Server.
Совет
Вы можете установить NGINX следующим образом:
sudo apt update sudo apt install nginx
На сервере шлюза создайте новый файл конфигурации NGINX.
sudo vi /etc/nginx/sites-available/extapi
Вставьте следующий текст в созданный файл конфигурации. В директиве
upstream(upstream extapibackends) замените примерные IP-адреса на актуальные IP-адреса биометрических серверов. В директивеserverукажите как значение параметраlistenномер слушающего порта сервера шлюза. Вам потребуется указать данный порт при настройке распределенной сети FindFace Enterprise Server.upstream extapibackends { server 172.168.1.9:18666; ## ``findface-extraction-api`` on principal server server 172.168.1.10:18666; ## 1st additional extraction server server 127.168.1.11:18666; ## 2nd additional extraction server } server { listen 18667; server_name extapi; client_max_body_size 64m; location / { proxy_pass http://extapibackends; proxy_next_upstream error; } access_log /var/log/nginx/extapi.access_log; error_log /var/log/nginx/extapi.error_log; }
Включите балансировщик нагрузки в NGINX.
sudo ln -s /etc/nginx/sites-available/extapi /etc/nginx/sites-enabled/
Перезапустите NGINX.
sudo service nginx restart
На центральном сервере и каждом из дополнительных биометрических серверов откройте файл конфигурации
/etc/findface-extraction-api.ini. Замените адрес localhost в параметреlistenна адрес, который вы указали до этого в директивеupstream extapibackendsфайла конфигурации NGINX/etc/nginx/sites-available/extapi. В нашем примере адрес 1-го дополнительного биометрического сервера должен быть заменен на следующий:sudo vi /etc/findface-extraction-api.ini listen: 172.168.1.10:18666
Перезапустите
findface-extraction-apiна центральном сервере и каждом дополнительном биометрическом сервере.sudo systemctl restart findface-extraction-api.service
Балансировка нагрузки успешно настроена. Обязательно укажите актуальный IP-адрес и слушающий порт сервера шлюза при настройке распределенной сети FindFace Enterprise Server.
Организация распределенной базы данных
Компонент findface-tarantool-server соединяет базу данных Tarantool и компонент findface-sf-api, передавая результаты поиска от базы данных в findface-sf-api для дальнейшей обработки. Для увеличения скорости поиска на каждом сервере с базой данных Tarantool могут быть созданы многочисленные сегменты (шарды) findface-tarantool-server. Их параллельное функционирование приводит к значительному увеличению производительности. Каждый шард может обрабатывать приблизительно до 10 000 000 лиц. При развертывании findface-tarantool-server из инсталлятора шарды создаются автоматически с учетом аппаратной конфигурации физического сервера.
Для того чтобы распределить биометрическую базу данных, установите findface-tarantool-server на каждом сервере базы данных. Ответьте на вопросы инсталлятора следующим образом:
Устанавливаемый продукт:
FindFace Server.Тип установки:
Fully customized installation.Устанавливаемые компоненты FindFace Enterprise Server:
findface-tarantool-server. Для того чтобы его выбрать, сначала снимите выделение со всех компонентов, введя в командной строке-*, затем введите порядковый номерfindface-tarantool-server:13. Введитеdoneдля сохранения выбора и перехода к следующему шагу.
После этого процесс установки будет автоматически запущен. Ответы на вопросы инсталлятора будут сохранены в файл /tmp/<findface-installer-*>.json. Используйте данный файл, чтобы установить findface-tarantool-server на других серверах, не отвечая на вопросы инсталлятора повторно.
sudo ./<findface-security-and-server-xxx>.run -f /tmp/<findface-installer-*>.json
В результате установки шарды findface-tarantool-server будут автоматически установлены в количестве N = max (min (mem_mb // 2000, cpu_cores), 1), т. е. равном размеру оперативной памяти в Мб, разделенному на 2000, или количеству физических ядер процессора (но не менее 1 шарда).
Обязательно укажите IP-адреса и порты шардов при настройке распределенной сети FindFace Enterprise Server. Для того чтобы узнать номера портов, на каждом сервере базы данных выполните следующую команду:
sudo cat /etc/tarantool/instances.enabled/*shard* | grep -E ".start|(listen =)"`
Будет возвращен следующий результат:
listen = '127.0.0.1:33001',
FindFace.start("127.0.0.1", 8101, {
listen = '127.0.0.1:33002',
FindFace.start("127.0.0.1", 8102, {
Номера портов шардов указаны в секции FindFace.start: 8101, 8102 и т. д.
Настройка сетевого взаимодействия
После развертывания компонентов FindFace Enterprise Server настройте их взаимодействие по сети. Выполните следующие действия:
Откройте файл конфигурации
findface-sf-api:sudo vi /etc/findface-sf-api.ini
Задайте следующие параметры:
Параметр
Описание
extraction-api->extraction-apiIP-адрес и слушающий порт сервера, являющегося шлюзом для биометрических серверов с настроенной балансировкой нагрузки.
storage-api->shards->masterIP-адрес и порт мастера шарда
findface-tarantool-server. Остальные шарды прописываются по аналогии.upload_urlПуть в WebDAV NGINX, по которому в компонент
findface-uploadбудут отправляться исходные изображения, миниатюры и нормализованные изображения лиц.... extraction-api: extraction-api: http://172.168.1.9:18667 ... webdav: upload-url: http://127.0.0.1:3333/uploads/ ... storage-api: ... shards: - master: http://172.168.1.9:8101/v2/ slave: '' - master: http://172.168.1.9:8102/v2/ slave: '' - master: http://172.168.1.12:8101/v2/ slave: '' - master: http://172.168.1.12:8102/v2/ slave: '' - master: http://172.168.1.13:8102/v2/ slave: '' - master: http://172.168.1.13:8102/v2/ slave: ''
Откройте файл конфигурации
findface-facerouter. Укажите IP-адрес сервераfindface-sf-api.sudo vi /etc/findface-facerouter.py sfapi_url = 'http://localhost:18411'
Откройте файл конфигурации
findface-video-manager. В параметреrouter_urlукажите IP-адрес и порт сервераfindface-facerouterдля получения лиц, обнаруженныхfindface-video-worker.sudo vi /etc/findface-video-manager.conf ... router_url: http://127.0.0.1:18820/v0/frame
На этом установка FindFace Enterprise Server в кластерной среде будет завершена.