Введение#
В данном документе приводится пример шагов, необходимых для обновления с предыдущей сборки на новую сборку LUNA PLATFORM.
В данном руководстве также приведены команды, необходимые для обновления с версий 5.2.0 и выше на актуальную сборку. Обратите внимание, что начиная с версий 5.2.0 могли произойти критические изменения, такие как обновления порогов, версий нейронных сетей, прекращение поддержки FaceDetV1 и FaceDetV2 и другие (см. полный перечень критических изменений в разделе "Ключевые изменения предыдущих версий"). Такое изменение как обновление порогов может давать другой результат при выполнении оценивания, нежели в старой сборке. Данные команды помечены соответствующим образом. Будьте внимательны и не выполняйте лишних действий если обновляетесь с версии LUNA PLATFORM 5.56.0.
Для успешного обновления нужно выполнить действия из разделов "Подготовка к обновлению" и "Запуск сервисов". В разделе "Дополнительная информация" приводится полезная информация по описанию параметров запуска сервисов, командах Docker и информация по запуску сервиса Python Matcher Proxy для использования плагинов сравнения.
Данное руководство написано с предположением, что:
- предыдущая минорная версия LUNA PLATFORM уже установлена, и требуемое окружение на сервере готово к работе.
- LP 5 установлена в соответствии с руководством по установке, и используются пути по умолчанию. В противном случае следует внести изменения вручную в процессе обновления.
Данный документ включает в себя пример развертывания LUNA PLATFORM. LUNA PLATFORM разворачивается в минимальной рабочей конфигурации для использования в демонстрационных целях. Данная конфигурация не является достаточной для реальной эксплуатации системы в продуктивном контуре.
Все описываемые команды необходимо исполнять в оболочке Bash (когда команды запускаются напрямую на сервере) или в программе для работы с сетевыми протоколами (в случае удаленного подключения к серверу), например, Putty.
Подготовка к обновлению#
Убедитесь в том, что вы являетесь root-пользователем перед тем, как начать обновление!
Перед обновлением необходимо выполнить следующие действия:
- Ознакомиться с ключевыми изменениями предыдущих версий, если выполняется обновление с версии, отличной от версии LUNA PLATFORM 5.56.0
- Создать резервные копии
- Подготовиться к смене версии нейронной сети для извлечения биометрических шаблонов, если это необходимо
- Удалить старую символическую ссылку
- Распаковать дистрибутив новой версии LUNA PLATFORM
- Создать новую символическую ссылку
- Изменить группу и владельца для новых директорий
- Выполнить перенос данных, если выполняется обновление с версии 5.38.3 и ниже
- Сохранить пользовательские настройки сервиса Configurator, если они изменялись
- Настроить SELinux и Firewall, если ранее не были настроены
- Создать директории с логами, если ранее использовалась запись логов в файлы
- Активировать лицензию, если это необходимо
- Настроить вычисления с помощью GPU, если планируется использовать GPU
- Авторизироваться в registry VisonLabs, если ранее не была выполнена авторизация
- Удалить старые контейнеры
Ключевые изменения предыдущих версий#
Примечание. При обновлении LUNA PLATFORM с предыдущей версии, пропустите данный раздел.
Ниже перечислены ключевые изменения предыдущих версий, на которые надо обратить внимание при выполнении обновления со старых версий LUNA PLATFORM. Для некоторых из этих изменений требуется выполнить обязательные действия, иначе LUNA PLATFORM может не запуститься или функционировать некорректно.
В таблице ниже перечислены не все изменения. См. подробную информацию о всех изменениях в примечаниях к выпуску LUNA PLATFORM.
Версия | Изменения | Обязательные действия |
---|---|---|
5.53.0 | Обновлен образ VisionLabs для PostgreSQL с 12 версии на 16 версию. | Если ранее использовался данный образ, то необходимо самостоятельно выполнить миграцию согласно официальной документации. |
5.46.0 | Функционал для работы с нейронными сетями (детекция, эстимация и извлечение) перенесен из сервиса Handlers в новый сервис Remote SDK. | - |
Из контейнера Remote SDK удалена 105ая модель нейронной сети для извлечения биометрических шаблонов тел. Теперь по умолчанию используется 110ая модель нейронной сети для извлечения биометрических шаблонов тел. | Ознакомиться с информацией, описанной в разделе "Подготовка к смене версии нейронной сети", и выполнить определенные действия перед запуском Remote SDK, т.к. изменилась версия по умолчанию. | |
5.45.1 | Значение по умолчанию настройки "score_threshold" в секции "LUNA_HANDLERS_FACE_DETECTOR_SETTINGS" сервиса Configurator изменено с 0.42 до 0.5. | Проверить логику распознавания лиц, если используется значение "score_threshold", отличное от значения по умолчанию. |
5.40.0 | В командах запуска контейнеров PostgreSQL, InfluxDB и Image Store теперь прописываются пути директорий для монтирования, расположенные в корневом каталоге /var/lib/luna/<db_or_bucket_folder> , в отличие от предыдущих версий, где пути прописывались для определенной версии LUNA PLATFORM /var/lib/luna/current/example-docker/<db_or_bucket_folder> . Это позволяет не переносить данные при каждом обновлении. |
Перенести старые данные PostgreSQL, InfluxDB и Image Store в корневой каталог (см. "Перенос данных"), а затем удалить и заново создать контейнеры, прописав новые пути директорий для монтирования. |
5.38.3 | Значение по умолчанию настройки "score_threshold" в секции "LUNA_HANDLERS_BODY_DETECTOR_SETTINGS" сервиса Configurator изменено с 0.3 до 0.5. | Проверить логику распознавания тел, если используется значение "score_threshold", отличное от значения по умолчанию. |
Значение по умолчанию настройки "redetect_face_target_size" в секции "LUNA_HANDLERS_FACE_DETECTOR_SETTINGS" сервиса Configurator изменено с 45 до 64. | Проверить логику распознавания лиц, если используется значение "redetect_face_target_size", отличное от значения по умолчанию. | |
5.36.5 | Адрес сервера лицензирования теперь нужно задавать в настройках Configurator перед запуском контейнера Licenses. | Выполнить действия, описанные в разделе "Задание адреса сервера лицензирования с помощью Configurator". |
5.35.0 | Прекращена поддержка старых сервисов Индексирования и поиска по индексу. | - |
5.34.0 | Из контейнера Handlers удалены 54, 56 и 57 модели нейронных сетей для извлечения биометрических шаблонов. | Ознакомиться с информацией, описанной в разделе "Подготовка к смене версии нейронной сети", и выполнить определенные действия перед запуском Handlers, если использовалась одна из перечисленных моделей. |
Из контейнера Handlers удалены 104 и 106 модели нейронных сетей для извлечения биометрических шаблонов. Теперь по умолчанию используется модель 107. | Ознакомиться с информацией, описанной в разделе "Подготовка к смене версии нейронной сети", и выполнить определенные действия перед запуском Handlers, т.к. изменилась версия по умолчанию. | |
Прекращена поддержка сервиса Liveness V1. | - | |
5.30.0 | Обновлены библиотеки вендора для HASP ключа и HASP утилита (c 111186 на 30147). | Обновить сервис HASP и выписать новую лицензию (см. "Активация лицензионного ключа"). |
Изменен механизм создания и управления аккаунтами. | Выполнить действия, помеченные фразой Внимание! Миграция аккаунтов (только версии 5.2.0...5.28.0) | |
5.28.0 | Значение по умолчанию настройки "score_threshold" в секции "FACE_DETECTOR_V3" сервиса Configurator изменено с 0.89 до 0.42. | Проверить логику распознавания лиц, если используется значение "score_threshold", отличное от значения по умолчанию. |
5.26.0 | Наличие маски на подбородке с этой версии относится к состоянию "missing". В предыдущих версиях оно относилось к состоянию "medical_mask". | Проверить логику работы оценки масок. |
5.24.0 | Прекращена поддержка БД Vertica для сервиса Events. | - |
5.23.0 | Обновлены пороги по умолчанию (рекомендуемые) для следующих проверок в группе проверок “face_quality” и ресурсе “/iso”: "mouth_occluded" (старые значения: min=0, max=0.3; новые значения: min=0, max=0.5) и "mouth_open" (старые значения: min=0, max=0.64; новые значения: min=0, max=0.5) | Проверить логику работы "mouth_occluded" и "mouth_open", если использовались значения по умолчанию. |
5.14.0 | Обновлён алгоритм Liveness V2. Пороги по умолчанию для “liveness_threshold” и “quality_threshold” теперь равняются “0.5”. Рекомендуемый порог “liveness_threshold” теперь равен “0.5” вместо “0.88”. | Проверить логику работы алгоритма Liveness V2. |
5.6.0 | Теперь по умолчанию используется модель 59 нейронной сети для извлечения биометрических шаблонов. | Ознакомиться с информацией, описанной в разделе "Подготовка к смене версии нейронной сети", и выполнить определенные действия перед запуском Handlers, т.к. изменилась версия по умолчанию. |
Из контейнера Handlers удалена 101 модель нейронной сети извлечения биометрических шаблонов тел. Теперь по умолчанию используется модель 104. | Ознакомиться с информацией, описанной в разделе "Подготовка к смене версии нейронной сети", и выполнить определенные действия перед запуском Handlers, т.к. изменилась версия по умолчанию. | |
5.3.0 | Изменена логика запуска сервисов LUNA PLATFORM внутри контейнеров. Теперь приложения запускаются не от пользователя root, а от пользователя luna. | - |
Прекращена поддержка детекторов FaceDetV1 и FaceDetV2. | - |
Создание резервных копий#
Рекомендуется создать следующие резервные копии:
- резервные копии всех баз данных, используемых с LUNA PLATFORM;
- резервную копию бакетов Image Store;
- резервную копию настроек сервисов LUNA PLATFORM.
Создание резервных копий позволит восстановить в случае возникновения каких-либо проблем в процессе миграции.
Ниже приведены команды создания резервных копий для версий v.5.40.0 и выше. Если вы обновляетесь более низкой версии, то к расположению директорий с данными LP необходимо добавлять путь до распакованной предыдущей версии LP, например, для создания резервной копии базы данных PostgreSQL для версии v.5.38.1 необходимо выполнить следующую команду:
cp -r /var/lib/luna/luna_v.5.38.1/example-docker/postgresql /var/lib/luna/BACKUP_postgresql
Копия базы данных PostgreSQL#
Создайте резервную копию БД PostgreSQL с помощью следующей команды:
cp -r /var/lib/luna/postgresql /var/lib/luna/BACKUP_postgresql
Копия базы данных InfluxDB#
Создайте резервную копию БД InfluxDB с помощью следующей команды:
cp -r /var/lib/luna/influx /var/lib/luna/BACKUP_influx
Копия бакетов Image Store#
Создайте резервную копию бакетов с помощью следующей команды:
cp -r /var/lib/luna/image_store /var/lib/luna/BACKUP_image_store
Дамп-файл с настройками сервисов#
Пользовательские значения настроек сервисов LUNA PLATFORM (всех, кроме сервиса Configurator) автоматически мигрируются с помощью механизма миграции сервиса Configurator, описанном в разделе "Миграция базы данных Configurator".
Если миграция сервиса по каким-либо причинам затерла пользовательскую настройку или пользователь просто хочет хранить старые настройки сервисов для различных версий LP, то можно создать дамп-файл.
Чтобы создать дамп-файл, используйте следующие команды (можно выполнить из любой директории на сервере):
wget -O /var/lib/luna/BACKUP_settings_dump.json 127.0.0.1:5070/1/dump
или
curl 127.0.0.1:5070/1/dump > /var/lib/luna/BACKUP_settings_dump.json
Данный файл не будет использован в процессе нормальной установки LUNA PLATFORM. Чтобы применить сохраненные настройки, нужно использовать скрипт db_create.py
с аргументом командной строки--dump-file
(за которым следует имя созданного дамп-файла): base_scripts/db_create.py --dump-file settings_dump.json
. Применить дамп-файл можно только к пустой базе данных с созданными таблицами. См. подробную информацию в разделе "Дамп-файл с настройками LP" руководства администратора.
Подготовка к смене версии нейронной сети#
В некоторых сборках LUNA PLATFORM удаляются модели нейронных сетей для извлечения биометрических шаблонов лиц и тел, а также меняются настройки использования моделей по умолчанию. См. раздел "Ключевые изменения предыдущих версий" для подробной информации о данных изменениях.
Если выполняется обновление с версий 5.2.0 и выше и в предыдущей сборке в настройках "DEFAULT_FACE_DESCRIPTOR_VERSION" или "DEFAULT_HUMAN_DESCRIPTOR_VERSION" была указана какая-то из удаленных моделей, то запуск сервиса Remote SDK запустится с ошибкой, если не выполнить дополнительные действия.
Доступные модели нейронных сетей для извлечения БШ в текущей сборке LUNA PLATFORM:
Объект, из которого извлекается БШ | Модели нейронных сетей | Модель по умолчанию |
---|---|---|
Лицо | 59, 60, 62 | 59 |
Тело | 107, 110 | 110 |
Необходимо выполнить одно из дополнительных действий в зависимости от следующих сценариев работы:
Продолжение использования отсутствующих нейронных сетей
Запросите у VisionLabs старую модель нейронной сети и подготовьте её к переносу в новый контейнер Remote SDK после его запуска (см. инструкцию по переносу в разделе "Использование модели нейросети не из поставки" руководства администратора).
Переход на новую версию нейронной сети с продолжением использования старых биометрических шаблонов
- выполните задачу Additional extraction перед началом обновления (см. раздел "Задача Additional extraction" в руководстве администратора). Это позволит преобразовать старые шаблоны на новую версию нейронной сети.
- укажите новую версию нейронной сети в настройках "DEFAULT_FACE_DESCRIPTOR_VERSION" или "DEFAULT_HUMAN_DESCRIPTOR_VERSION" перед запуском сервиса Remote SDK (см. раздел "Смена модели нейронной сети для извлечения биометрических шаблонов").
Переход на новую версию нейронной сети с прекращением использования старых биометрических шаблонов
Укажите новую версию нейронной сети в настройках "DEFAULT_FACE_DESCRIPTOR_VERSION" или "DEFAULT_HUMAN_DESCRIPTOR_VERSION" перед запуском сервиса Remote SDK (см. раздел "Смена модели нейронной сети для извлечения биометрических шаблонов").
Если не требуется использовать извлечение биометрических шаблонов тел, то можно отключить использование нейронной сети с помощью команды
--env=EXTEND_CMD="--enable-body-descriptor-estimator=0"
при запуске контейнера Remote SDK (см. подробную информацию в разделе "Включение/отключение некоторых эстиматоров и детекторов" руководства администратора).
Удаление символической ссылки#
Удалите символическую ссылку в директорию предыдущей минорной версии с помощью следующей команды:
rm -f /var/lib/luna/current
Распаковка дистрибутива#
Дистрибутив представляет собой архив luna_v.5.57.0, где v.5.57.0 это числовой идентификатор, обозначающий версию LUNA PLATFORM.
Архив включает в себя конфигурационные файлы, требуемые для установки и использования. Он не включает в себя Docker образы сервисов, их требуется скачать из Интернета отдельно.
Переместите дистрибутив в директорию на вашем сервере перед установкой. Например, переместите файлы в директорию /root/
. В ней не должно быть никакого другого дистрибутива или файлов лицензии кроме целевых.
Переместите дистрибутив в директорию c LUNA PLATFORM.
mv /root/luna_v.5.57.0.zip /var/lib/luna
Установите приложение для распаковки архива при необходимости
yum install -y unzip
Откройте папку с дистрибутивом
cd /var/lib/luna
Распакуйте файлы
unzip luna_v.5.57.0.zip
Создание символической ссылки#
Создайте символическую ссылку. Она показывает, что актуальная версия файла дистрибутива используется для запуска LUNA PLATFORM.
ln -s luna_v.5.57.0 current
Изменение группы и владельца для директорий#
Сервисы LP запускаются внутри контейнеров пользователем "luna". Таким образом, требуется установить разрешения для данного пользователя на работу с примонтированными директориями.
Откройте директорию LP "example-docker":
cd /var/lib/luna/current/example-docker/
Создайте директорию для хранения настроек:
mkdir luna_configurator/used_dumps
Установите для пользователя с UID 1001 и группой 0 разрешения на работу с примонтированными директориями.
chown -R 1001:0 luna_configurator/used_dumps
Перенос данных (версии 5.38.3 и ниже)#
Примечание. Выполняйте данные действия только если выполняется обновлении с версии 5.38.3 и ниже, т.к. начиная с версии LUNA PLATFORM v.5.40.0, в командах запуска контейнеров PostgreSQL, InfluxDB и Image Store прописываются пути директорий для монтирования, расположенные в корневом каталоге /var/lib/luna/<db_or_bucket_folder>
, в отличие от предыдущих версий, где пути прописывались для определенной версии LUNA PLATFORM /var/lib/luna/current/example-docker/<db_or_bucket_folder>
. Таким образом, в новых версиях не нужно переносить данные.
Переместите данные со своей версии в директорию /var/lib/luna/
. Ниже приведены примеры команд для версии 5.38.3.
Перенос бакетов Image Store#
Скопируйте директорию "image_store" со всеми бакетами:
mv /var/lib/luna/luna_v.5.38.3/example-docker/image_store /var/lib/luna/
Установите права пользователя luna:
chown -R 1001:0 /var/lib/luna/image_store
Перенос данных PostgreSQL#
Скопируйте директорию "data":
mv /var/lib/luna/luna_v.5.38.3/example-docker/postgresql /var/lib/luna/
Перенос данных InfluxDB#
Следующий шаг необходим если используется InfluxDB в Docker-контейнере.
Скопируйте директорию "influx" со всеми бакетами:
mv /var/lib/luna/luna_v.5.38.3/example-docker/influx /var/lib/luna/
Начиная с версии 5.9.0, по умолчанию используется InfluxDB версии 2. Эта версия позволяет визуализировать данные мониторинга с помощью Grafana. При необходимости можно перенести данные из базы данных InfluxDB версии 1 в базу данных InfluxDB версии 2. См. документацию InfluxDB.
Сохранение пользовательских настроек сервиса Configurator#
Примечание. Пропустите данный шаг, если настройки Configurator не изменялись.
Настройки сервиса Configurator не мигрируются автоматически, в отличие от настроек всех остальных сервисов.
Если предыдущая версия LP использовалась с настройками сервиса Configurator, отличных от настроек по умолчанию, нужно создать резервную копию файла конфигурации "luna_configurator_postgres.conf" в отдельной директории на сервере.
cp /var/lib/luna/<your_previous_lp_version>/example-docker/luna_configurator/configs/luna_configurator_postgres.conf /var/lib/luna/BACKUP_luna_configurator_postgres.conf
Эта резервная копия должна быть примонтирована к запускаемому контейнеру сервиса Configurator.
Если вы не уверены, менялись ли настройки сервиса Configurator, то можете сравнить созданную резервную копию с настройками Configurator из текущей поставки с помощью следующей команды:
diff /var/lib/luna/current/example-docker/luna_configurator/configs/luna_configurator_postgres.conf /var/lib/luna/BACKUP_luna_configurator_postgres.conf
SELinux и Firewall#
SELinux и Firewall необходимо настроить так, чтобы они не блокировали сервисы LUNA PLATFORM.
Конфигурация SELinux и Firewall не описываются в данном руководстве.
Если SELinux и Firewall не настроены, дальнейшая установка невозможна.
Создание директории логов для новых сервисов#
Пропустите этот раздел в случае, если ранее логи не сохранялись на сервере.
В новой версии LUNA PLATFORM могли появиться новые сервисы, для которых нужно создать директории с логами. Это зависит от версии, с которой выполняется обновление. Например, в версии 5.30.0 появился сервис Accounts.
См. раздел "Запись логов на сервер" если вы ранее не использовали запись логов в файл, но хотите включить её.
Ниже приведены команды для создания директорий для всех существующих сервисов. Данные команды создадут и присвоят права только отсутствующим директориям.
mkdir -p /tmp/logs/configurator /tmp/logs/image-store /tmp/logs/accounts /tmp/logs/faces /tmp/logs/licenses /tmp/logs/events /tmp/logs/python-matcher /tmp/logs/handlers /tmp/logs/remote-sdk /tmp/logs/tasks /tmp/logs/tasks-worker /tmp/logs/sender /tmp/logs/api /tmp/logs/admin /tmp/logs/backport3 /tmp/logs/backport4
chown -R 1001:0 /tmp/logs/configurator /tmp/logs/image-store /tmp/logs/accounts /tmp/logs/faces /tmp/logs/licenses /tmp/logs/events /tmp/logs/python-matcher /tmp/logs/handlers /tmp/logs/remote-sdk /tmp/logs/tasks /tmp/logs/tasks-worker /tmp/logs/sender /tmp/logs/api /tmp/logs/admin /tmp/logs/backport3 /tmp/logs/backport4
Если необходимо использовать сервис Python Matcher Proxy, то нужно дополнительно создать директорию /tmp/logs/python-matcher-proxy
и установить ей разрешения.
Активация лицензии#
Для активации/обновления лицензии необходимо выполнить следующие действия:
- выполнить действия из руководства по активацию лицензии
- задать настройки лицензирования HASP или Guardant перед запуском контейнера Licenses
Действия из руководства по активации лицензии#
Откройте руководство по активации лицензии и выполните необходимые шаги.
Примечание. Это действие является обязательным. Лицензия не будет работать без выполнения шагов по активации лицензии из соответствующего руководства.
Вычисления с помощью GPU#
Для основных вычислений, выполняемых сервисом Remote SDK, можно использовать GPU.
Пропустите данный раздел, если не собираетесь использовать GPU для вычислений.
Для использования GPU с Docker-контейнерами необходимо установить NVIDIA Container Toolkit. Пример установки приведен ниже.
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | tee /etc/yum.repos.d/nvidia-docker.repo
yum install -y nvidia-container-toolkit
systemctl restart docker
Проверьте работу NVIDIA Container toolkit, запустив базовый контейнер CUDA (он не входит в дистрибутив LP, его необходимо загрузить из Интернета):
docker run --rm --gpus all nvidia/cuda:11.4.3-base-centos7 nvidia-smi
Для дополнительной информации см. следующую документацию:
https://github.com/NVIDIA/nvidia-docker#centos-7x8x-docker-ce-rhel-7x8x-docker-ce-amazon-linux-12.
Извлечение атрибутов на GPU разработано для максимальной пропускной способности. Выполняется пакетная обработка входящих изображений. Это снижает затраты на вычисления для изображения, но не обеспечивает минимальную задержку для каждого изображения.
GPU-ускорение разработано для приложений с высокой нагрузкой, где количество запросов в секунду достигает тысяч. Нецелесообразно использовать ускорение GPU в сценариях с небольшой нагрузкой, когда задержка начала обработки имеет значение.
Авторизация в registry#
При запуске контейнеров необходимо указать ссылку на образ, необходимый для запуска контейнера. Этот образ загружается из VisionLabs registry. Перед этим необходима авторизация.
Логин и пароль можно запросить у представителя VisionLabs.
Введите логин
docker login dockerhub.visionlabs.ru --username <username>
После выполнения команды будет запрошен ввод пароля. Введите пароль.
В команде
docker login
можно вводить логин и пароль одновременно, однако это не гарантирует безопасность, т.к. пароль можно будет увидеть в истории команд.
Удаление старых контейнеров#
Перед запуском контейнеров текущей минорной версии необходимо остановить все контейнеры, относящиеся к предыдущей минорной версии LUNA PLATFORM, а также контейнеры сторонних приложений.
Необходимо также удалить контейнеры PostgreSQL и InfluxDB для того, чтобы пересоздать их с новыми примонтированными директориями (см. "Перенос данных").
Для удаления контейнера используйте следующую команду:
docker container rm -f [container_name]
где [container_name]
это имя контейнера сервиса docker или ID.
Например, для удаления контейнеров LP используйте следующую команду:
docker container rm -f luna-configurator luna-backport3 luna-backport4 luna-sender luna-tasks luna-handlers luna-remote-sdk luna-python-matcher luna-events luna-licenses luna-faces luna-image-store luna-ui-3 luna-ui-4 luna-admin luna-api luna-tasks-worker luna-accounts
Для удаления контейнеров PostgreSQL и InfluxDB используйте следующую команду:
docker container rm -f postgres influxdb
Если выполняется обновление с версии 5.38.3 и ниже, то необходимо обязательно удалить контейнеры PostgreSQL и InfluxDB.
Чтобы посмотреть имена контейнеров или их ID, используйте следующую команду:
docker ps -a
Также рекомендуется удалить старые образы контейнеров для освобождения места. Можно использовать следующую команду для удаления всех неиспользуемых образов.
Если на сервере достаточно места, рекомендуется выполнить это действие только после успешного запуска новой версии LP.
Данная команда удаляет все неиспользуемые образы, а не только образы, относящиеся к LP.
docker image prune -a -f
Запуск сервисов#
В данном разделе приведены примеры:
- Миграции таблиц баз данных
- Создания бакетов
- Запуска контейнеров
Сервисы LUNA PLATFORM должны запускаться в следующем порядке:
- Базы данных, балансировщики, HASP сервис и прочие сторонние сервисы
- Configurator
- Image Store
- Accounts
- Licenses
- Faces
- Events
- Python Matcher
- Python Matcher Proxy. Сервис отключен по умолчанию.
- Remote SDK
- Handlers
- Tasks
- Sender
- API
- Admin
Сервис Lambda (отключен по умолчанию) можно запустить после сервисов Licenses и Configurator.
Следующие сервисы используются, когда требуется обеспечить совместимость с запросами формата LUNA PLATFORM 3:
Следующие сервисы используются, когда требуется обеспечить совместимость с запросами формата LUNA PLATFORM 4:
Рекомендуется запускать контейнеры один за другим и ожидать отображения статуса контейнера "up" (команда docker ps
).
Некоторые из этих сервисов не являются обязательными к запуску и можно отключить их использование. Рекомендуется использовать сервисы Events, Tasks, Sender и Admin по умолчанию. См. раздел "Использование необязательных сервисов" для более подробной информации.
При запуске каждого сервиса используются определенные параметры, например, --detach
, --network
и др. См. раздел "Описание параметров запуска" для получения более подробной информации о всех параметрах запуска сервисов LUNA PLATFORM и баз данных.
См. раздел "Команды Docker" для получения более подробной информации о работе с контейнерами.
Настройка мониторинга#
Для мониторинга сервисов LUNA PLATFORM требуется наличие запущенной базы данных Influx 2.0.8-alpine. Ниже приведены команды по запуску контейнера InfluxDB.
Дополнительную информацию см. в разделе "Мониторинг" в руководстве администратора.
При необходимости можно настроить визуализацию данных мониторинга с помощью сервиса LUNA Dashboards, включающего в себя настроенную систему визуализации данных Grafana. Кроме того, можно запустить инструмент для расширенной работы с логами Grafana Loki. См. инструкцию по запуску LUNA Dashboards и Grafana Loki в разделе "Визуализация мониторинга и логов с помощью Grafana".
Миграция InfluxDB с версии 1#
При необходимости можно обновиться с версии InfluxDB OSS 1.
Процесс миграции InfluxDB с версии 1 не описывается в данной документации. В InfluxDB предоставлены встроенные инструменты для миграции с версии 1 на версию 2. См. документацию:
https://docs.influxdata.com/influxdb/v2.0/upgrade/v1-to-v2/docker/
InfluxDB OSS 2#
Примечание. Убедитесь, что старый контейнер InfluxDB удален.
Используйте команду docker run
со следующими параметрами:
docker run \
-e DOCKER_INFLUXDB_INIT_MODE=setup \
-e DOCKER_INFLUXDB_INIT_BUCKET=luna_monitoring \
-e DOCKER_INFLUXDB_INIT_USERNAME=luna \
-e DOCKER_INFLUXDB_INIT_PASSWORD=password \
-e DOCKER_INFLUXDB_INIT_ORG=luna \
-e DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=kofqt4Pfqjn6o0RBtMDQqVoJLgHoxxDUmmhiAZ7JS6VmEnrqZXQhxDhad8AX9tmiJH6CjM7Y1U8p5eSEocGzIA== \
-v /etc/localtime:/etc/localtime:ro \
-v /var/lib/luna/influx:/var/lib/influxdb2 \
--restart=always \
--detach=true \
--network=host \
--name influxdb \
dockerhub.visionlabs.ru/luna/influxdb:2.0.8-alpine
Если необходимо задать пользовательские настройки БД Influx (например, задать IP-адрес и порт при запуске InfluxDB на отдельном сервере), то необходимо изменить в их настройках каждого сервиса LUNA PLATFORM. См. раздел "Задание пользовательских настроек InfluxDB" для подробной информации.
Запуск сторонних сервисов#
В данном разделе описывается запуск баз данных и очередей сообщений в Docker-контейнерах. Они должны быть запущены перед сервисами LP.
PostgreSQL#
Миграция с PostgreSQL 12 на PostgreSQL 16#
В LUNA PLATFORM v.5.53.0 обновился образ VisionLabs для PostgreSQL с 12 версии на 16 версию.
Если ранее использовался данный образ, то необходимо самостоятельно выполнить миграцию согласно официальной документации. При необходимости можно продолжить использовать PostgreSQL 12, указав образ "postgis-vlmatch:12" в команде запуска контейнера.
Монтирование данных PostgreSQL 12 из директории "/var/lib/luna/postgres" в контейнер для PostgreSQL 16 приведет к ошибке.
Запуск контейнера PostgreSQL#
Используйте следующую команду для запуска PostgreSQL.
Убедитесь, что старый контейнер PostgreSQL удален.
docker run \
--env=POSTGRES_USER=luna \
--env=POSTGRES_PASSWORD=luna \
--shm-size=1g \
-v /var/lib/luna/postgresql/data/:/var/lib/postgresql/data/ \
-v /var/lib/luna/current/example-docker/postgresql/entrypoint-initdb.d/:/docker-entrypoint-initdb.d/ \
-v /etc/localtime:/etc/localtime:ro \
--name=postgres \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/postgis-vlmatch:16
-v /var/lib/luna/current/example-docker/postgresql/entrypoint-initdb.d/:/docker-entrypoint-initdb.d/ \
- скрипт "docker-entrypoint-initdb.d" включает в себя команды для создания баз данных сервисов.
-v /var/lib/luna/current/example-docker/postgresql/data/:/var/lib/postgresql/data/
- эта команда позволяет монтировать директорию "data" в контейнер PostgreSQL. Директория на сервере и директория в контейнере будут синхронизированы. Данные PostgreSQL из контейнера будут сохраняться в эту директорию.
--network=host
- при необходимости изменить порт для PostgreSQL, следует изменить эту строку на -p 5440:5432
. Здесь первый порт 5440
- локальный, а 5432
- порт в контейнере.
Все базы данных для сервисов LP следует создавать вручную, если используется уже установленный PostgreSQL.
Redis#
Если у вас уже установлен Redis, пропустите этот шаг.
Используйте следующую команду для запуска Redis.
docker run \
-v /etc/localtime:/etc/localtime:ro \
--name=redis \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/redis:7.2
Configurator#
Использование необязательных сервисов#
Следующие сервисы необязательны для LP:
- Events
- Image Store
- Tasks
- Sender
- Handlers
- Python Matcher Proxy (отключен по умолчанию)
- Lambda (отключен по умолчанию)
Эти сервисы можно отключить при отсутствии необходимости в них.
Используйте секцию "ADDITIONAL_SERVICES_USAGE" в настройках сервиса API в сервисе Configurator, чтобы отключить ненужные сервисы.
Можно использовать файл сброса, предоставленный в комплекте поставки, для включения/отключения сервисов перед запуском сервиса Configurator.
vi /var/lib/luna/current/extras/conf/platform_settings.json
Отключение какого-либо из сервисов имеет определенные последствия. См. подробную информацию в разделе "Отключаемые сервисы" руководства администратора.
Миграция базы данных Configurator#
Миграция из предыдущей сборки LP в сборку LP v.5.57.0 описана в данном разделе.
Следующая инструкция для миграции базы данных сервиса Configurator предполагает, что в базе данных уже установлена ревизия миграции настроек. Ревизия устанавливается с помощью скрипта configs.migrate head
. Этот скрипт включен в руководство по установке LP, начиная со сборки 5.1.1. Если установка выполнялась в соответствии с руководством, дополнительных действий не понадобится. Миграция настроек выполнится автоматически.
При отсутствии ревизии следует заново создать структуру базы данных. См. руководство по установке LP 5, раздел "Создание таблиц баз данных сервиса Configurator". Затем следует задать все необходимые настройки вручную.
Миграция с версии 5.1.0 описана в руководстве по обновлению в пакете дистрибутива версии 5.1.1. Обновить базу данных сервиса Configurator можно с помощью этой инструкции и комплекта поставки версии 5.1.1. В противном случае потребуется создать заново структуру базы данных для сервиса Configurator и задать все необходимые настройки вручную. См. руководство по установке LP 5, раздел "Создание таблиц баз данных сервиса Configurator".
Миграции из предыдущих версий (сборки до v.5.1.0) LP не приводятся. Следует вручную перенести все требуемые настройки в базу данных сервиса Configurator сборки 5.1.1.
При обновлении базы данных сервиса Configurator с существующими настройками сервисов, необходимо выполнить миграцию структуры базы данных, при которой также выполнится миграция сохраненных настроек всех сервисов LP, кроме настроек сервиса Configurator.
Примечание по миграции настроек сервиса Configurator описано в следующем разделе.
Используйте команду docker run
со следующими параметрами для создания таблиц базы данных сервиса Configurator.
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /var/lib/luna/current/example-docker/luna_configurator/configs/luna_configurator_postgres.conf:/srv/luna_configurator/configs/config.conf \
--network=host \
-v /tmp/logs/configurator:/srv/logs \
--rm \
--entrypoint bash \
dockerhub.visionlabs.ru/luna/luna-configurator:v.2.1.89 \
-c "alembic upgrade head; cd /srv/luna_configurator/configs/configs/; python3 -m configs.migrate --config /srv/luna_configurator/configs/config.conf head;"
alembic upgrade head;
- обновляет структуру существующей базы данных.
python3 -m configs.migrate head;
- выполняет миграции настроек в базе данных сервиса Configurator и устанавливает ревизию для миграции. Ревизия потребуется в процессе обновления на новую сборку LP5.
Запуск контейнера Configurator#
Примечание. Настройки сервиса Configurator не мигрируются автоматически, в отличие от настроек всех остальных сервисов. Если в предыдущей версии LP изменялись настройки сервиса Configurator и необходимо сохранить пользовательские значения, то в команде ниже необходимо заменить путь /var/lib/luna/current/example-docker/luna_configurator/configs/luna_configurator_postgres.conf
на путь с резервной копией настроек сервиса Configurator /var/lib/luna/BACKUP_luna_configurator_postgres.conf
(см. раздел "Сохранение пользовательских настроек сервиса Configurator").
Используйте команду docker run
со следующими параметрами для запуска Configurator:
docker run \
--env=PORT=5070 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /var/lib/luna/current/example-docker/luna_configurator/configs/luna_configurator_postgres.conf:/srv/luna_configurator/configs/config.conf \
-v /tmp/logs/configurator:/srv/logs \
--name=luna-configurator \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-configurator:v.2.1.89
На данном этапе можно активировать запись логов в файл, если необходимо сохранять их на сервере (см. раздел "Запись логов на сервер").
Image Store#
Запуск контейнера Image Store#
Примечание. Если вы не собираетесь использовать сервис Image Store, не запускайте этот контейнер и отключите использование сервиса в сервисе Configurator. См. раздел "Использование необязательных сервисов".
Используйте следующую команду для запуска сервиса Image Store:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5020 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /var/lib/luna/image_store/:/srv/local_storage/ \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/image-store:/srv/logs \
--name=luna-image-store \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-image-store:v.3.10.6
-v /var/lib/luna/image_store/:/srv/local_storage/
- данные из указанной директории добавляются в Docker-контейнер, когда он запущен. Все данные из указанной директории Docker-контейнера сохраняются в данную директорию.
Если директория с бакетами LP уже создана, укажите ее вместо
/var/lib/luna/image_store/
.
Создание бакетов#
Бакеты используются для хранения данных в Image Store. Сервис Image Store должен быть запущен перед выполнением команд.
При обновлении с предыдущей версии рекомендуется запустить команды создания бакетов еще раз. Это гарантирует создание всех необходимых бакетов.
Если в процессе запуска приведенных выше команд появляется ошибка со статус-кодом 13006, это означает, что бакет уже создан.
Бакеты в LP можно создавать двумя способами.
Запустить приведенные ниже скрипты для создания бакетов
Запустите данный скрипт для создания основных бакетов:
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/api:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-api:v.6.24.0 \
python3 ./base_scripts/lis_bucket_create.py -ii --luna-config http://localhost:5070/1
Если вы собираетесь использовать сервис Tasks, используйте следующую команду, чтобы дополнительно создать "task-result" в сервисе Image Store:
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/tasks:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-tasks:v.3.20.0 \
python3 ./base_scripts/lis_bucket_create.py -ii --luna-config http://localhost:5070/1
Если вы собираетесь использовать портреты, используйте следующую команду, чтобы дополнительно создать "portraits".
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/api:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-backport3:v.0.10.6 \
python3 ./base_scripts/lis_bucket_create.py -ii --luna-config http://localhost:5070/1
Использовать прямые запросы для создания требуемых бакетов
Для следующих запросов требуется утилита curl.
Бакет "visionlabs-samples" используется для хранения биометрических образцов лиц. Этот бакет требуется для использования LP.
curl -X POST http://127.0.0.1:5020/1/buckets?bucket=visionlabs-samples
Бакет "portraits" используется для хранения портретов. Этот бакет требуется для использования Backport 3.
curl -X POST http://127.0.0.1:5020/1/buckets?bucket=portraits
Бакет "visionlabs-bodies-samples" используется для хранения биометрических образцов тел. Этот бакет требуется для использования LP.
curl -X POST http://127.0.0.1:5020/1/buckets?bucket=visionlabs-bodies-samples
Бакет "visionlabs-image-origin" используется для хранения исходных изображений. Этот бакет требуется для использования LP.
curl -X POST http://127.0.0.1:5020/1/buckets?bucket=visionlabs-image-origin
Бакет "visionlabs-objects" используется для хранения объектов. Этот бакет требуется для использования LP.
curl -X POST http://127.0.0.1:5020/1/buckets?bucket=visionlabs-objects
Бакет "task-result" для сервиса Tasks. Не используйте его, если не собираетесь использовать этот сервис.
curl -X POST http://127.0.0.1:5020/1/buckets?bucket=task-result
Accounts#
Создание таблиц базы данных Accounts#
Внимание! Миграция аккаунтов (только версии 5.2.0...5.28.0). Выполните нижеописанные действия только если в версиях LUNA PLATFORM 5.2.0...5.28.0 не использовался сервис Admin. Если раньше использовался сервис Admin, выполните команду из раздела "Миграция базы данных Accounts".
Используйте следующую команду для создания таблиц базы данных Accounts:
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/accounts:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-accounts:v.0.2.6 \
python3 ./base_scripts/db_create.py --luna-config http://localhost:5070/1
Миграция базы данных Accounts#
Необходимо выполнить скрипты миграции для обновления структуры базы данных Accounts.
Рекомендуется создать резервную копию базы данных перед тем, как принимать какие-либо изменения.
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/accounts:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-accounts:v.0.2.6 \
alembic -x luna-config=http://127.0.0.1:5070/1 upgrade head
В LUNA PLATFORM 5.30.0 изменилась база данных, хранящая информацию об аккаунтах. В версиях LUNA PLATFORM 5.2.0...5.28.0 информация хранилась в БД Admin (БД
luna_admin
), а в версиях 5.30.0 и выше информация хранится в БД Accounts (БДluna_accounts
). Если выполняется обновление с версий 5.2.0...5.28.0 на текущую версию, то вышеописанный скрипт преобразует базу данныхluna_admin
для работы с новыми аккаунтами (название базы данных останется старым).
Запуск контейнера Accounts#
Используйте следующую команду для запуска сервиса Accounts:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5170 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/accounts:/srv/logs \
--name=luna-accounts \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-accounts:v.0.2.6
Licenses#
Примечание. Для использования триальной лицензии необходимо запускать сервис Licenses на том же сервере, на котором она используется.
Задание настроек лицензии с помощью Configurator#
Выполните действия по заданию настроек для HASP-ключа или Guardant-ключа.
Задание настроек лицензии HASP#
Примечание. Выполняйте данные действия только если используется лицензия HASP. См. раздел "Задание настроек лицензии Guardant", если используется ключ Guardant.
Для задания адреса сервера лицензирования нужно выполнить следующие действия:
-
перейдите в интерфейс сервиса Configurator
http://<configurator_server_ip>:5070/
-
введите в поле "Setting name" значение "LICENSE_VENDOR" и нажмите "Apply Filters"
-
задайте IP-адрес сервера с вашим ключом HASP в поле "server_address" в формате "127.0.0.1".
-
нажмите "Save"
Обратите внимание, что если лицензия активируется с помощью ключа HASP, то должно быть указано два параметра "vendor" и "server_address". Если вы хотите изменить защиту HASP на Guardant, то необходимо добавить поле "license_id".
Задание настроек лицензии Guardant#
Примечание. Выполняйте данные действия только если используется ключ Guardant. См. раздел "Задание настроек лицензии HASP", если используется ключ HASP.
Для задания адреса сервера лицензирования нужно выполнить следующие действия:
-
перейдите в интерфейс сервиса Configurator
http://<configurator_server_ip>:5070/
-
введите в поле "Setting name" значение "LICENSE_VENDOR" и нажмите "Apply Filters"
-
задайте IP-адрес сервера с вашим ключом Guardant в поле "server_address"
-
задайте идентификатор лицензии в формате
0x<your_license_id>
, полученный в разделе "Сохранение идентификатора лицензии" руководства по активации лицензии, в поле "license_id" -
нажмите "Save"
Обратите внимание, что если лицензия активируется с помощью ключа Guardant, то должно быть указано три параметра "vendor", "server_address" и "license_id". Если вы хотите изменить защиту Guardant на HASP, то необходимо удалить поле "license_id".
Запуск контейнера Licenses#
Используйте следующую команду для запуска сервиса:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5120 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/licenses:/srv/logs \
--name=luna-licenses \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-licenses:v.0.9.14
Faces#
Миграция базы данных Faces#
Необходимо выполнить скрипты миграции для обновления структуры базы данных Faces.
Рекомендуется создать резервную копию базы данных перед тем, как принимать какие-либо изменения.
Запустите следующую команду для выполнения миграции базы данных Faces.
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/faces:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-faces:v.4.10.6 \
alembic -x luna-config=http://127.0.0.1:5070/1 upgrade head
Запуск контейнера Faces#
Используйте следующую команду для запуска сервиса:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5030 \
--env=WORKER_COUNT=2 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/faces:/srv/logs \
--name=luna-faces \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-faces:v.4.10.6
Events#
Миграция базы данных Events#
Для обновления структуры базы данных Events необходимо выполнить скрипты миграции.
Рекомендуется создать резервную копию базы данных перед тем, как применять какие-либо изменения.
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/events:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-events:v.4.11.7 \
alembic -x luna-config=http://127.0.0.1:5070/1 upgrade head
Запуск контейнера Events#
Примечание. Если вы не собираетесь использовать сервис Events, не запускайте этот контейнер и отключите использование сервиса в сервисе Configurator. См. раздел "Использование необязательных сервисов".
Используйте следующую команду для запуска сервиса:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5040 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/events:/srv/logs \
--name=luna-events \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-events:v.4.11.7
Сервисы Python Matcher#
Для задач сравнения можно использовать либо только сервис Python Matcher, либо дополнительно использовать сервис Python Matcher Proxy, который перенаправляет запросы сравнения либо сервису Python Matcher либо плагинам сравнения. В данном разделе описывается использование Python Matcher без Python Matcher Proxy.
Необходимо использовать сервис Python Matcher Proxy только если собираетесь использовать плагины сравнения. Использование Python Matcher Proxy и запуск соответствующего docker-контейнера описаны в разделе "Использование Python Matcher c Python Matcher Proxy".
См. описание и использование плагинов сравнения в руководстве администратора.
Использование Python Matcher без Python Matcher Proxy#
Сервис Python Matcher со сравнением посредством базы данных Faces включен по умолчанию при запуске.
Сервис Python Matcher со сравнением посредством Events также включен по умолчанию. Его можно отключить, указав "USE_LUNA_EVENTS = 0" в разделе "ADDITIONAL_SERVICES_USAGE" настроек Configurator (см. раздел "Использование необязательных сервисов"). Таким образом, сервис Events не будет использоваться для LUNA PLATFORM.
Python Matcher, который производит сравнение с помощью библиотеки сравнений, включается когда "CACHE_ENABLED" установлен как "true" в настройке "DESCRIPTORS_CACHE".
Для сервисов Python Matcher и Python Matcher Proxy загружается одно изображение.
Запуск контейнера Python Matcher#
Используйте следующую команду для запуска сервиса:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5100 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/python-matcher:/srv/logs \
--name=luna-python-matcher \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-python-matcher:v.1.8.6
Remote SDK#
Смена модели нейронной сети для извлечения биометрических шаблонов#
В данной версии LUNA PLATFORM произошли следующие изменения, касающиеся моделей нейронных сетей для извлечения биометрических шаблонов тел:
- 105ая модель была удалена из контейнера Remote SDK;
- дефолтная модель была изменена со 107ой на 110ую.
Если ранее использовалась 105ая модель, то запуск сервис Remote SDK завершится ошибкой если не выполнить одно из действий, описанных в разделе "Подготовка к смене версии нейронной сети".
Если ранее использовалась 107ая модель, то запуск сервиса Remote SDK не завершится ошибкой, однако поскольку данная модель считается устаревшей, то рекомендуется обновить модель до 110ой в настройке "DEFAULT_HUMAN_DESCRIPTOR_VERSION", а затем выполнить задачу "Additional extraction" после запуска сервиса Admin.
Пример действий для смены модели нейронной сети в Configurator:
- откройте пользовательский интерфейс Configurator
http://<configurator_server_ip>:5070
; - введите название настройки "DEFAULT_HUMAN_DESCRIPTOR_VERSION" в поле "Setting name" и нажмите "Apply Filters";
- установите модель нейронной сети "110" в настройке "DEFAULT_HUMAN_DESCRIPTOR_VERSION";
- сохраните изменения, нажав кнопку "Save".
Запуск контейнера Remote SDK#
Вы можете запустить сервис Remote SDK, используя CPU (задано по умолчанию) или GPU.
По умолчанию сервис Remote SDK запускается со всеми включенными эстиматорами и детекторами. При необходимости можно отключить использование некоторых эстиматоров или детекторов при запуске контейнера Remote SDK. Отключение ненужных эстиматоров позволяет экономить оперативную память или память GPU, поскольку при старте сервиса Remote SDK выполняется проверка возможности выполнения указанных оценок и загрузка нейронных сетей в память. При отключении эстиматора или детектора можно также удалить его нейронную сеть из контейнера Remote SDK. См. подробную информацию в разделе "Включение/отключение некоторых эстиматоров и детекторов" руководства администратора.
Запустите сервис Remote SDK, используя одну из следующих команд в соответствии с используемым процессором.
Запуск Remote SDK с использованием CPU#
Используйте следующую команду для запуска сервиса:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5220 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/remote-sdk:/srv/logs \
--network=host \
--name=luna-remote-sdk \
--restart=always \
--detach=true \
dockerhub.visionlabs.ru/luna/luna-remote-sdk:v.0.4.4
Запуск Remote SDK с использованием GPU#
Сервис Remote SDK не использует GPU по умолчанию. Если вы собираетесь использовать GPU, то следует включить его использование для сервиса Remote SDK в сервисе Configurator.
Если необходимо использовать GPU сразу для всех эстиматоров и детекторов, то необходимо использовать параметр "global_device_class" в секции "LUNA_REMOTE_SDK_RUNTIME_SETTINGS". Все эстиматоры и детекторы будут использовать значение данного параметра, если в параметре "device_class" их собственных настроек выставлено значение "global" (по умолчанию).
Если необходимо использовать GPU для определенного эстиматора или детектора, то необходимо использовать параметр "device_class" в секциях вида "LUNA_REMOTE_SDK_
См. раздел "Вычисления с помощью GPU" для получения дополнительных требований к использованию GPU.
Используйте следующую команду для запуска сервиса Remote SDK с помощью GPU:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5220 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
--gpus device=0 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/remote-sdk:/srv/logs \
--network=host \
--name=luna-remote-sdk \
--restart=always \
--detach=true \
dockerhub.visionlabs.ru/luna/luna-remote-sdk:v.0.4.4
--gpus device=0
- параметр указывает используемое устройство GPU и позволяет использовать GPU. Один GPU используется для одного экземпляра Remote SDK. Использование множества GPU для одного экземпляра невозможно.
Запуск облегченной версии Remote SDK#
Можно запустить облегченную версию сервиса Remote SDK, содержащую только конфигурационные файлы без нейронных сетей. Предполагается, что пользователь сам добавит в контейнер необходимые ему нейронные сети.
Запуск облегченной версии сервиса Remote SDK предназначен для продвинутых пользователей.
Для успешного запуска контейнера Remote SDK с пользовательским набором нейронных сетей нужно выполнить следующие действия:
- запросить у VisionLabs требуемые нейронные сети
- поместить нейронные сети в папку с установленной LUNA PLATFORM
- присвоить соответствующие права для файлов нейронных сетей
- смонтировать файлы нейронных сетей в папку
/srv/fsdk/data
контейнера Remote SDK - с помощью аргументов переменной "EXTEND_CMD" явно указать какие из нейронных сетей должны использоваться
Обратите внимание, что с помощью флага "enable-all-estimators-by-default" для переменной "EXTEND_CMD" можно выключить по умолчанию использование всех нейронных сетей (эстиматоров), а затем с помощью специальных флагов явно указывать какие нейронные сети должны быть использованы. Если не указывать данный флаг или выставить значение "--enable-all-estimators-by-default=1", то сервис Remote SDK будет пытаться найти в контейнере все нейронные сети. Если какая-то из нейронных сетей не будет найдена, то сервис Remote SDK не запустится.
Список доступных аргументов для запуска:
Аргумент | Описание |
---|---|
--enable-all-estimators-by-default | включить все эстиматоры по умолчанию |
--enable-human-detector | одновременный детектор |
--enable-face-detector | детектор лиц |
--enable-body-detector | детектор тел |
--enable-face-landmarks5-estimator | эстиматор 5 контрольных точек лица |
--enable-face-landmarks68-estimator | эстиматор 68 контрольных точек лица |
--enable-head-pose-estimator | эстиматор положения головы |
--enable-liveness-estimator | эстиматор OneShotLiveness |
--enable-fisheye-estimator | эстиматор бочообразной дисторсии (эффекта FishEye) |
--enable-face-detection-background-estimator | эстиматор фона изображения |
--enable-face-warp-estimator | эстиматор биометрического образца лица |
--enable-body-warp-estimator | эстиматор биометрического образца тела |
--enable-quality-estimator | эстиматор качества изображения |
--enable-image-color-type-estimator | эстиматор типа цвета по лицу |
--enable-face-natural-light-estimator | эстиматор естественности освещения |
--enable-eyes-estimator | эстиматор глаз |
--enable-gaze-estimator | эстиматор направления взгляда |
--enable-mouth-attributes-estimator | эстиматор атрибутов рта |
--enable-emotions-estimator | эстиматор эмоций |
--enable-mask-estimator | эстиматор маски |
--enable-glasses-estimator | эстиматор очков |
--enable-eyebrow-expression-estimator | эстиматор бровей |
--enable-red-eyes-estimator | эстиматор красных глаз |
--enable-headwear-estimator | эстиматор головного убора |
--enable-basic-attributes-estimator | эстиматор базовых атрибутов |
--enable-face-descriptor-estimator | эстиматор извлечения биометрического шаблона лица |
--enable-body-descriptor-estimator | эстиматор извлечения биометрического шаблона тела |
--enable-body-attributes-estimator | эстиматор атрибутов тел |
--enable-people-count-estimator | эстиматор количества людей |
--enable-deepfake-estimator | эстиматор Deepfake |
См. подробную информацию включении и выключении определенных эстиматоров в разделе "Включение/отключение некоторых эстиматоров и детекторов" руководства администратора.
Ниже приведен пример команды для присвоения прав файлу нейронной сети:
chown -R 1001:0 /var/lib/luna/current/<neural_network_name>.plan
Пример команды запуска контейнера Remote SDK с монтированием нейронных сетей для детекции лиц и извлечения биометрических шаблонов лиц:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5220 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
--env=EXTEND_CMD="--enable-all-estimators-by-default=0 --enable-face-detector=1 --enable-face-descriptor-estimator=1" \
-v /var/lib/luna/current/cnn59b_cpu-avx2.plan:/srv/fsdk/data/cnn59b_cpu-avx2.plan \
-v /var/lib/luna/current/FaceDet_v3_a1_cpu-avx2.plan:/srv/fsdk/data/FaceDet_v3_a1_cpu-avx2.plan \
-v /var/lib/luna/current/FaceDet_v3_redetect_v3_cpu-avx2.plan:/srv/fsdk/data/FaceDet_v3_redetect_v3_cpu-avx2.plan \
-v /var/lib/luna/current/slnet_v3_cpu-avx2.plan:/srv/fsdk/data/slnet_v3_cpu-avx2.plan \
-v /var/lib/luna/current/LNet_precise_v2_cpu-avx2.plan:/srv/fsdk/data/LNet_precise_v2_cpu-avx2.plan \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/remote-sdk:/srv/logs \
--network=host \
--name=luna-remote-sdk \
--restart=always \
--detach=true \
dockerhub.visionlabs.ru/luna/luna-remote-sdk:v.0.4.4
Handlers#
Примечание. Если вы не собираетесь использовать сервис Handlers, не запускайте этот контейнер и отключите использование сервиса в сервисе Configurator. См. раздел "Использование необязательных сервисов".
Миграция базы данных Handlers#
Необходимо выполнить скрипты миграции для обновления структуры базы данных Handlers.
Рекомендуется создать резервную копию базы данных перед внесением любых изменений.
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/handlers:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-handlers:v.3.4.6 \
alembic -x luna-config=http://127.0.0.1:5070/1 upgrade head
Запуск контейнера Handlers#
Используйте следующую команду для запуска сервиса:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5090 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/handlers:/srv/logs \
--name=luna-handlers \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-handlers:v.3.4.6
Tasks#
Примечание. Если вы не собираетесь использовать сервис Tasks, не запускайте контейнер Tasks и контейнер Tasks Worker. Отключите сервис Tasks в сервисе Configurator. См. раздел "Использование необязательных сервисов".
Миграция базы данных Tasks#
Необходимо выполнить скрипты миграции для обновления структуры базы данных Tasks.
Рекомендуется создать резервную копию базы данных перед тем, как вносить какие-либо изменения.
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/tasks:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-tasks:v.3.20.0 \
alembic -x luna-config=http://127.0.0.1:5070/1 upgrade head
Запуск контейнеров Tasks и Tasks Worker#
Образ сервиса Tasks включает в себя сервисы Tasks и Tasks Worker ("рабочие процессы сервиса Tasks"). Они оба должны быть запущены.
Необходимо создать бакет "task-result" для сервиса Tasks перед запуском сервиса. Создание бакетов описано в разделе "Создание бакетов".
Если необходимо использовать задачу Estimator с использованием сетевого диска, то необходимо предварительно смонтировать директорию с изображениями с сетевого диска в специальные директории контейнеров Tasks и Tasks Worker. См. подробную информацию в разделе "Задача Estimator" в руководстве администратора.
Запуск контейнера Tasks worker#
Используйте следующую команду для запуска сервиса:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5051 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
--env=SERVICE_TYPE="tasks_worker" \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/tasks-worker:/srv/logs \
--name=luna-tasks-worker \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-tasks:v.3.20.0
Запуск контейнера Tasks#
Используйте следующую команду для запуска сервиса:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5050 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/tasks:/srv/logs \
--name=luna-tasks \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-tasks:v.3.20.0
Sender#
Запуск контейнера Sender#
Примечание. Если вы не собираетесь использовать сервис Sender, не запускайте этот контейнер и отключите этот сервис в Configurator. См. раздел "Использование необязательных сервисов".
Используйте следующую команду для запуска сервиса:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5080 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/sender:/srv/logs \
--name=luna-sender \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-sender:v.2.10.6
API#
Запуск контейнера API#
Используйте следующую команду для запуска сервиса:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5000 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
--name=luna-api \
--restart=always \
--detach=true \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/api:/srv/logs \
--network=host \
dockerhub.visionlabs.ru/luna/luna-api:v.6.24.0
Создание аккаунта с помощью сервиса API#
Аккаунт создается с помощью HTTP-запроса к ресурсу "create account".
Аккаунт также можно создать с помощью сервиса Admin. Данный способ требует наличия существующих логина и пароль (или логина и пароля по умолчанию) и позволяет создать аккаунты типа "admin". См. подробную информацию в разделе "Сервис Admin" руководства администратора.
Для создания аккаунта с помощью запроса к сервису API необходимо указать следующие обязательные данные:
- login — электронный адрес
- password — пароль
- account_type — тип аккаунта ("user" или "advanced_user")
Создайте аккаунт, используя свои аутентификационные данные.
Внимание! Миграция аккаунтов (только версии 5.2.0...5.28.0). Если необходимо сохранить возможность использования "account_id", который использовался в качестве заголовка "Luna-Account-Id" в версиях 5.2.0...5.28.0 (без создания аккаунта в сервисе Admin), то необходимо дополнительно указать нужный идентификатор в заголовке "Luna-Account-Id".
Пример CURL-запроса к ресурсу "create account":
curl --location --request POST 'http://127.0.0.1:5000/6/accounts' \
--header 'Content-Type: application/json' \
--header 'Luna-Account-Id: <your_old_account_id>' \
--data '{
"login": "user@mail.com",
"password": "password",
"account_type": "user",
"description": "description"
}'
Необходимо заменить аутентификационные данные из примера на свои.
См. подробную информацию об аккаунтах в разделе "Аккаунты и типы авторизации" руководства администратора.
Для работы с токенами необходимо наличие аккаунта.
Admin#
Запуск контейнера Admin#
Примечание. Если вы не собираетесь использовать сервис Admin, не запускайте этот контейнер.
Используйте следующую команду для запуска сервиса:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5010 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/admin:/srv/logs \
--name=luna-admin \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-admin:v.5.5.6
Данные о количестве выполненных запросов сохраняются в бакете luna-admin
базы данных Influx. Для включения сохранения этих данных требуется выполнить следующую команду:
docker exec -it luna-admin python3 ./base_scripts/influx2_cli.py create_usage_task --luna-config http://127.0.0.1:5070/1
Backport 3#
В данном разделе описывается запуск сервиса Backport 3.
Сервис не обязателен для использования LP5 и требуется только для эмуляции LP 3 API.
Миграция базы данных Backport 3#
Необходимо выполнить скрипты миграции для обновления структуры базы данных Backport 3.
Рекомендуется создать резервную копию базы данных перед применением каких-либо изменений.
Используйте следующую команду для миграции базы данных Backport 3.
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/backport3:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-backport3:v.0.10.6 \
alembic -x luna-config=http://127.0.0.1:5070/1 upgrade head
Миграция аккаунтов и токенов#
Внимание! Миграция аккаунтов (только версии 5.2.0...5.28.0). Используйте следующую команду для миграции аккаунтов и токенов из предыдущей версии Backport 3:
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/backport3:/srv/logs \
--rm \
--network=host \
--entrypoint bash dockerhub.visionlabs.ru/luna/luna-backport3:v.0.10.6 -c "cd ./base_scripts/migrate_accounts/ && pip3 install -r requirements-postgres.txt && python3 ./run.py --backport_db_url postgres://luna:luna@127.0.0.1:5432/luna_backport3 --accounts_db_url postgres://luna:luna@127.0.0.1:5432/luna_admin"
python3 ./run.py
- запуск скрипта миграции и аккаунтов и токенов
--backport_db_url postgres://luna:luna@127.0.0.1:5432/luna_backport3
- флаг указания адреса БД luna_backport3
--accounts_db_url postgres://luna:luna@127.0.0.1:5432/luna_admin
- флаг указания адреса БД luna_admin
После выполнения скрипта, все аккаунты Backport 3 будут мигрированы и сохранены в БД сервиса Accounts. Все мигрированные аккаунты будут иметь тип "user". Поля "password", "email" и "organization_name" перенесутся из таблицы "account" БД Backport 3 в таблицу "account" БД Account под новыми именами - "password", "login" и "description" соответственно. Токены останутся храниться в БД Backport3, однако их идентификатор также будет занесен в БД Accounts, где автоматически будут выставлены необходимые разрешения.
Запуск контейнера Backport 3#
Используйте следующую команду для запуска сервиса:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5140 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
--name=luna-backport3 \
--restart=always \
--detach=true \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/backport3:/srv/logs \
--network=host \
dockerhub.visionlabs.ru/luna/luna-backport3:v.0.10.6
User Interface 3#
User Interface 3 используется только с сервисом Backport 3.
Запуск контейнера User Interface 3#
Используйте следующую команду для запуска сервиса:
docker run \
--env=PORT=4100 \
--env=LUNA_API_URL=http://127.0.0.1:5140 \
--name=luna-ui-3 \
--restart=always \
--detach=true \
--network=host \
-v /etc/localtime:/etc/localtime:ro \
dockerhub.visionlabs.ru/luna/luna3-ui:v.0.5.10
--env=LUNA_API_URL
- URL сервиса Backport 3.
--env=PORT
- порт сервиса User Interface 3.
Backport 4#
В данном разделе описывается запуск сервиса Backport 4.
Этот сервис необязателен для использования LP5 и требуется только для эмуляции LP 4 API.
Запуск контейнера Backport 4#
Используйте следующую команду для запуска сервиса:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5130 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
--name=luna-backport4 \
--restart=always \
--detach=true \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/backport4:/srv/logs \
--network=host \
dockerhub.visionlabs.ru/luna/luna-backport4:v.1.4.6
User Interface 4#
User Interface 4 используется только с сервисом Backport 4.
Запуск контейнера User Interface 4#
Примечание. Перед запуском контейнера User Interface 4 необходимо наличие аккаунта типа user. Его логин и пароль в формате Base64 будут использованы для работы с пользовательским интерфейсом.
Используйте следующую команду для запуска сервиса:
docker run \
--env=PORT=4200 \
--env=LUNA_API_URL=http://<server_external_ip>:5130 \
--env=BASIC_AUTH=dXNlckBtYWlsLmNvbTpwYXNzd29yZA== \
--name=luna-ui-4 \
--restart=always \
--detach=true \
--network=host \
-v /etc/localtime:/etc/localtime:ro \
dockerhub.visionlabs.ru/luna/luna4-ui:v.0.1.5
--env=PORT
- задает порт для запуска User Interface 4.
--env=BASIC_AUTH
- задает авторизацию типа Basic для аккаунта, данные которого отображаются в пользовательском интерфейсе.
--env=LUNA_API_URL
- задает URL сервиса Backport 4.
-
Необходимо использовать внешний IP сервиса, а не локальный хост.
-
Необходимо указать порт сервиса Backport 4 (5130 задан по умолчанию).
Lambda#
Работа с сервисом Lambda возможна только при разворачивании сервисов LUNA PLATFORM в Kubernetes. Для использования необходимо самостоятельно развернуть сервисы LUNA PLATFORM в Kubernetes или обратиться за консультацией к специалистам VisionLabs. Используйте команды ниже в качестве справочной информации.
Примечание. Если вы не собираетесь использовать сервис Lambda, не запускайте этот контейнер.
Включите использование сервиса Lambda (см. раздел "Использование необязательных сервисов").
Подготовка Docker registry#
Необходимо подготовить registry для хранения образов Lambda. Перенесите базовые образы и образ Kaniko executor в свой registry с помощью нижеперечисленных команд.
Загрузите образы из удаленного репозитория в локальное хранилище образов:
docker pull dockerhub.visionlabs.ru/luna/lpa-lambda-base-fsdk:v.0.0.45
docker pull dockerhub.visionlabs.ru/luna/lpa-lambda-base:v.0.0.45
docker pull dockerhub.visionlabs.ru/luna/kaniko-executor:latest
Добавьте новые имена образам, заменив new-registry
на свои. Имена базовых образов в пользовательском реестре должны быть такими же, как и в реестре dockerhub.visionlabs.ru/luna
.
docker tag dockerhub.visionlabs.ru/luna/lpa-lambda-base-fsdk:v.0.0.45 new-registry/lpa-lambda-base-fsdk:v.0.0.45
docker tag dockerhub.visionlabs.ru/luna/lpa-lambda-base:v.0.0.45 new-registry/lpa-lambda-base:v.0.0.45
docker tag dockerhub.visionlabs.ru/luna/kaniko-executor:latest new-registry/kaniko-executor:latest
Отправьте локальные образы в свой удаленный репозиторий, заменив new-registry
на свои.
docker push new-registry/lpa-lambda-base-fsdk:v.0.0.45
docker push new-registry/lpa-lambda-base:v.0.0.45
docker push new-registry/kaniko-executor:latest
Миграция базы данных Lambda#
Необходимо выполнить скрипты миграции для обновления структуры базы данных Lambda.
Рекомендуется создать резервную копию базы данных перед внесением любых изменений.
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/lambda:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-lambda:v.0.2.4 \
alembic -x luna-config=http://127.0.0.1:5070/1 upgrade head
Запуск контейнера Lambda#
Используйте следующую команду для запуска сервиса:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5210 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/lambda:/srv/logs \
--name=luna-lambda \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-lambda:v.0.2.4
Дополнительная информация#
В данном разделе приводится следующая дополнительная информация:
- Визуализация монтиторинга и логов с помощью Grafanа
- Полезные команды для работы с Docker
- Описание параметров запуска сервисов LUNA PLATFORM и создания баз данных
- Действия по включению сохранения логов сервисов LP в файлы
- Настройка ротации логов Docker
- Задание пользовательских настроек InfluxDB
- Использование сервиса Python Matcher с сервисом Python Matcher Proxy
Визуализация монтиторинга и логов с помощью Grafana#
Визуализация мониторинга выполняется за счет сервиса LUNA Dashboards, который содержит в себе платформу для визуализации данных мониторинга Grafana с настроенными дашбордами LUNA PLATFORM.
При необходимости можно отдельно установить настроенные дашборды для Grafana. См. дополнительную информацию в разделе "LUNA Dashboards" в руководстве администратора.
Вместе с Grafana можно использовать систему агрегации логов Grafana Loki, позволяющую гибко работать с логами LUNA PLATFORM. Для доставки логов LUNA PLATFORM в Grafana Loki используется агент Promtail (дополнительную информацию см. в разделе "Grafana Loki" в руководстве администратора).
LUNA Dashboards#
Примечание. Для работы с Grafana необходимо использовать InfluxDB версии 2.
Примечание. Перед обновлением убедитесь, что старый контейнер LUNA Dashboards удален.
Запуск контейнера LUNA Dashboards#
Используйте команду docker run
со следующими параметрами для запуска LUNA Dashboards:
docker run \
--restart=always \
--detach=true \
--network=host \
--name=grafana \
-v /etc/localtime:/etc/localtime:ro \
dockerhub.visionlabs.ru/luna/luna-dashboards:v.0.0.9
Для использования веб-интерфейса Grafana нужно перейти по адресу "http://IP_ADDRESS:3000", при условии, что контейнеры LUNA Dashboards и InfluxDB были запущены.
Grafana Loki#
Примечание. Для запуска Grafana Loki требуется наличие запущенного сервиса LUNA Dashboards.
Примечание. Перед обновлением убедитесь, что старые контейнеры Grafana Loki и Promtail удалены.
Запуск контейнера Grafana Loki#
Используйте команду docker run
со следующими параметрами для запуска Grafana Loki:
docker run \
--name=loki \
--restart=always \
--detach=true \
--network=host \
-v /etc/localtime:/etc/localtime:ro \
dockerhub.visionlabs.ru/luna/loki:2.7.1
Запуск контейнера Promtail#
Используйте команду docker run
со следующими параметрами для запуска Promtail:
docker run \
-v /var/lib/luna/current/example-docker/logging/promtail.yml:/etc/promtail/luna.yml \
-v /var/lib/docker/containers:/var/lib/docker/containers \
-v /etc/localtime:/etc/localtime:ro \
--name=promtail \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/promtail:2.7.1 \
-config.file=/etc/promtail/luna.yml -client.url=http://127.0.0.1:3100/loki/api/v1/push -client.external-labels=job=containerlogs,pipeline_id=,job_id=,version=
-v /var/lib/luna/current/example-docker/logging/promtail.yml:/etc/promtail/luna.yml
- монтирование конфигурационного файла в контейнер Promtail
-config.file=/etc/promtail/luna.yml
- флаг с адресом конфигурационного файла
-client.url=http://127.0.0.1:3100/loki/api/v1/push
- флаг с адресом развернутой Grafana Loki
-client.external-labels=job=containerlogs,pipeline_id=,job_id=,version=
- статические метки для добавления ко всем логам, отправляемым в Grafana Loki
Команды Docker#
Показать контейнеры#
Чтобы показать список запущенных Docker-контейнеров, используйте команду:
docker ps
Чтобы показать все имеющиеся Docker-контейнеры, используйте команду:
docker ps -a
Копировать файлы в контейнер#
Можно переносить файлы в контейнер. Используйте команду docker cp
для копирования файла в контейнер.
docker cp <file_location> <container_name>:<folder_inside_container>
Вход в контейнер#
Можно входить в отдельные контейнеры с помощью следующей команды:
docker exec -it <container_name> bash
Для выхода из контейнера используйте следующую команду:
exit
Имена образов#
Можно увидеть все имена образов с помощью команды
docker images
Удаление образа#
Если требуется удаление образа:
- запустите команду
docker images
- найдите требуемый образ, например dockerhub.visionlabs.ru/luna/luna-image-store
- скопируйте соответствующий ID образа из IMAGE ID, например, "61860d036d8c"
- укажите его в команде удаления:
docker rmi -f 61860d036d8c
Удалите все существующие образы:
docker rmi -f $(docker images -q)
Остановка контейнера#
Контейнер можно остановить с помощью следующей команды:
docker stop <container_name>
Остановить все контейнеры:
docker stop $(docker ps -a -q)
Удаление контейнера#
Если необходимо удалить контейнер:
- запустите команду "docker ps"
- остановите контейнер (см. Остановка контейнера)
- найдите требуемый образ, например:
dockerhub.visionlabs.ru/luna/luna-image-store
- скопируйте соответствующий ID контейнера из столбца CONTAINER ID, например, "23f555be8f3a"
- укажите его в команде удаления:
docker container rm -f 23f555be8f3a
Удалить все контейнеры:
docker container rm -f $(docker container ls -aq)
Проверка логов сервисов#
Чтобы показать логи сервиса, используйте команду:
docker logs <container_name>
Описание параметров запуска#
При запуске Docker-контейнера для какого-либо из сервисов LUNA PLATFORM необходимо задать дополнительные параметры, требуемые для работы этого сервиса.
Параметры, требуемые для конкретного контейнера, описаны в разделе, посвященном запуску этого контейнера.
Все параметры, приведенные в примере запуска сервиса, необходимы для корректного запуска и работы сервиса.
Параметры запуска сервисов#
Пример команды запуска контейнеров сервисов LP:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=<Port_of_the_launched_service> \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/<service>:/srv/logs/ \
--name=<service_container_name> \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/<service-name>:<version>
Следующие параметры используются при запуске контейнеров сервисов LP:
-
docker run
- команда для запуска выбранного образа в качестве нового контейнера. -
dockerhub.visionlabs.ru/luna/<service-name>:<version>
- позволяет задать образ, требуемый для запуска контейнера.
Ссылки для загрузки требуемых образов контейнера доступны в описании запуска соответствующего контейнера.
-
--network=host
- указывает, что отсутствует симуляция сети и используется серверная сеть. При необходимости изменить порт для сторонних контейнеров следует заменить эту строку на-p 5440:5432
. Здесь первый порт5440
- это локальный порт, а5432
- это порт, используемый в контейнере. Пример приведен для PostgreSQL. -
--env=
- задает переменные окружения, требуемые для запуска контейнера (см. раздел "Аргументы сервисов"). -
--name=<service_container_name>
- задает имя запускаемого контейнера. Имя должно быть уникальным. Если уже существует контейнер с таким же именем, произойдет ошибка. -
--restart=always
- определяет политику перезагрузки. Daemon всегда перезагружает контейнер вне зависимости от кода завершения. -
--detach=true
- позволяет запустить контейнер в фоновом режиме. -
-v
- позволяет загружать содержимое серверной папки в объем контейнера. Таким образом содержимое синхронизируется. Загружаются следующие общие данные: -
/etc/localtime:/etc/localtime:ro
- задает текущий часовой пояс, используемый системой контейнера. -
/tmp/logs/<service>:/srv/logs/
- позволяет копировать папку с записями (логами) сервиса на сервер в директорию/tmp/logs/<service>
. Директорию для хранения логов можно изменить при желании.
Аргументы сервисов#
Каждый сервис в LUNA PLATFORM имеет свои собственные аргументы запуска. Эти аргументы можно передать через:
- задание флага для скрипта запуска (
run.py
) соответствующего сервиса - установку отдельных переменных окружения (
--env
) в командной строке Docker
Некоторые аргументы можно передать только через задание флага. Для сервисов Handlers и Remote SDK доступна возможность использовать переменную окружения "EXTEND_CMD" для явной передачи флагов. См. пример использования переменной "EXTEND_CMD" в разделе "Запуск облегченной версии Remote SDK".
Например, с использованием флага --help
можно получить список всех доступных аргументов. Пример передачи аргумента для сервиса API может выглядеть следующим образом:
docker run --rm dockerhub.visionlabs.ru/luna/luna-api:v.6.24.0 python3 /srv/luna_api/run.py --help
Список основных аргументов:
Флаг в строке запуска |
Переменная окружения |
Описание |
|
|
Порт, на котором сервис будет ожидать подключений. |
|
|
Количество "рабочих процессов" для сервиса. |
|
|
Суффикс, добавляемый к именам файлов логов (при включенном параметре записи логов в файл). |
|
|
Включение автоматической перезагрузки конфигураций. См. раздел "Автоматическая перезагрузка конфигураций" в руководстве администратора LUNA PLATFORM 5. |
|
|
Период проверки конфигураций (по умолчанию 10 секунд). См. раздел "Автоматическая перезагрузка конфигураций" в руководстве администратора LUNA PLATFORM 5. |
|
|
Адрес сервиса Configurator для загрузки настроек. Для
|
|
Нет |
Путь до конфигурационного файла с настройками сервиса. |
|
Нет |
Тег указанной настройки в Configurator. При задании данной настройки
будет использовано значение тегированной настройки. Пример:
Примечание. Необходимо заранее присвоить тег соответствующим настройкам в Configurator. Примечание. Работает только с флагом |
Перечень аргументов может отличаться в зависимости от сервиса.
Также доступна возможность переопределить настройки сервисов при их старте с помощью переменных окружения.
Для переопределения настроек используется префикс VL_SETTINGS
. Примеры:
--env=VL_SETTINGS.INFLUX_MONITORING.SEND_DATA_FOR_MONITORING=0
. Использование переменной окружения из данного примера установит значение настройки "SEND_DATA_FOR_MONITORING" для секции "INFLUX_MONITORING" равным "0".--env=VL_SETTINGS.OTHER.STORAGE_TIME=LOCAL
. Для несоставных настроек (настроек, которые расположены в секции "OTHER" в конфигурационном файле) необходимо указать префикс "OTHER". Использование переменной окружения из данного примера установит значение настройки "STORAGE_TIME" (если сервис использует данную настройку) на значение "LOCAL".
Параметры создания баз данных#
Пример команды запуска контейнеров для миграции баз данных или их создания:
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/<service>:/srv/logs/ \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/<service-name>:<version> \
python3 ./base_scripts/db_create.py --luna-config http://localhost:5070/1
Следующие параметры используются при запуске контейнеров для миграции баз данных или их создания:
--rm
- этот параметр указывает, удаляется ли контейнер после завершения обработки всех заданных скриптов.
python3 ./base_scripts/db_create.py
- этот параметр содержит версию Python и скрипт db_create.py
, запускаемый в контейнере. Этот скрипт используется для создания структуры базы данных.
--luna-config http://localhost:5070/1
- этот параметр указывает, откуда запущенный скрипт должен получать конфигурации. По умолчанию конфигурации запрашиваются сервисами от сервиса Configurator.
Запись логов на сервер#
Чтобы включить сохранение логов на сервер, необходимо:
- создать директории для логов на сервере;
- активировать запись логов и задать расположение хранения логов внутри контейнеров сервисов LP;
- настроить синхронизацию директорий логов в контейнере с логами на сервере с помощью аргумента
volume
при старте каждого контейнера.
Создание директории логов#
Ниже приведены примеры команд для создания директорий для хранения логов и присвоения им прав для всех сервисов LUNA PLATFORM.
mkdir -p /tmp/logs/configurator /tmp/logs/image-store /tmp/logs/accounts /tmp/logs/faces /tmp/logs/licenses /tmp/logs/events /tmp/logs/python-matcher /tmp/logs/handlers /tmp/logs/remote-sdk /tmp/logs/tasks /tmp/logs/tasks-worker /tmp/logs/sender /tmp/logs/api /tmp/logs/admin /tmp/logs/backport3 /tmp/logs/backport4
chown -R 1001:0 /tmp/logs/configurator /tmp/logs/image-store /tmp/logs/accounts /tmp/logs/faces /tmp/logs/licenses /tmp/logs/events /tmp/logs/python-matcher /tmp/logs/handlers /tmp/logs/remote-sdk /tmp/logs/tasks /tmp/logs/tasks-worker /tmp/logs/sender /tmp/logs/api /tmp/logs/admin /tmp/logs/backport3 /tmp/logs/backport4
Если необходимо использовать сервис Python Matcher Proxy, то нужно дополнительно создать директорию /tmp/logs/python-matcher-proxy
и установить ей разрешения.
Активация записи логов#
Активация записи логов сервисов LP#
Для активации записи логов в файл необходимо задать настройки log_to_file
и folder_with_logs
в секции <SERVICE_NAME>_LOGGER
настроек каждого сервиса.
Автоматический способ (перед/после запуска Configurator)
Для обновления настроек ведения логов можно использовать файл настроек logging.json
, предоставленный в комплекте поставки.
Выполните следующую команду после запуска сервиса Configurator:
docker cp /var/lib/luna/current/extras/conf/logging.json luna-configurator:/srv/luna_configurator/used_dumps/logging.json
Обновите настройки записи логов с помощью скопированного файла.
docker exec -it luna-configurator python3 ./base_scripts/db_create.py --dump-file /srv/luna_configurator/used_dumps/logging.json
Ручной способ (после запуска Configurator)
Перейдите в интерфейс сервиса Configurator (127.0.0.1:5070
) и задайте путь расположения логов в контейнере в параметре folder_with_logs
для всех сервисов, чьи логи необходимо сохранить. Например, можно использовать путь /srv/logs
.
Установите параметр log_to_file
как true
чтобы активировать запись логов в файл.
Активация записи логов сервиса Configurator (перед/после запуска Configurator)#
Настроек сервиса Configurator нет в пользовательском интерфейсе Configurator, они расположены в следующем файле:
/var/lib/luna/current/example-docker/luna_configurator/configs/luna_configurator_postgres.conf
Следует изменить параметры логирования в этом файле перед запуском сервиса Configurator или перезапустить его после внесения изменений.
Задайте путь расположения логов в контейнере в параметре FOLDER_WITH_LOGS = ./
файла. Например, FOLDER_WITH_LOGS = /srv/logs
.
Установите параметр log_to_file
как true
чтобы активировать запись логов в файл.
Монтирование директорий с логами при старте сервисов#
Директория с логами монтируется с помощью следующего аргумента при старте контейнера:
-v <server_logs_folder>:<container_logs_folder> \
где <server_logs_folder>
директория, созданная на этапе создания директории логов, а <container_logs_folder>
директория, созданная на этапе активации записи логов.
Пример команды запуска сервиса API с монтированием директории с логами:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5000 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
--name=luna-api \
--restart=always \
--detach=true \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/api:/srv/logs \
--network=host \
dockerhub.visionlabs.ru/luna/luna-api:v.6.24.0
Примеры команд запуска контейнеров в данной документации содержат эти аргументы.
Настройка ротации логов Docker#
Чтобы ограничить размер логов, генерируемых Docker, можно настроить автоматическую ротацию логов. Для этого необходимо добавить в файл /etc/docker/daemon.json
следующие данные:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "5"
}
}
Это позволит Docker хранить до 5 файлов логов на контейнер, при этом каждый файл будет ограничен 100 Мб.
После изменения файла необходимо перезапустить Docker:
systemctl reload docker
Вышеописанные изменения являются значениями по умолчанию для любого вновь созданного контейнера, они не применяются к уже созданным контейнерам.
Задание пользовательских настроек InfluxDB#
Для InfluxDB OSS 2 доступны следующие настройки:
"send_data_for_monitoring": 1,
"use_ssl": 0,
"flushing_period": 1,
"host": "127.0.0.1",
"port": 8086,
"organization": "<ORGANIZATION_NAME>",
"token": "<TOKEN>",
"bucket": "<BUCKET_NAME>",
"version": <DB_VERSION>
Можно обновить настройки InfluxDB для сервисов LP в сервисе Configurator, выполнив следующие действия:
- откройте следующий файл:
vi /var/lib/luna/current/extras/conf/influx2.json
- задайте необходимые данные;
- сохраните изменения;
- скопируйте файл в контейнер InfluxDB:
docker cp /var/lib/luna/current/extras/conf/influx2.json luna-configurator:/srv/
- обновите настройки в сервисе Configurator.
docker exec -it luna-configurator python3 ./base_scripts/db_create.py --dump-file /srv/influx2.json
Также можно вручную обновить настройки в пользовательском интерфейсе сервиса Configurator.
Настройки сервиса Configurator задаются отдельно.
- откройте файл с настройками Configurator:
vi /var/lib/luna/current/example-docker/luna_configurator/configs/luna_configurator_postgres.conf
- задайте необходимые данные;
- сохраните изменения;
- перезапустите Configurator:
docker restart luna-configurator
Использование Python Matcher с Python Matcher Proxy#
Как было сказано ранее, вместе с сервисом Python Matcher можно дополнительно использовать сервис Python Matcher Proxy, который будет перенаправлять запросы сравнения либо сервису Python Matcher, либо плагинам сравнения. Использование плагинов может значительно ускорить выполнение запросов на сравнение. Например, с помощью плагинов возможно организовать хранение необходимых для выполнения операций сравнения данных и дополнительных полей объектов в отдельном хранилище, что позволит ускорить доступ к данным по сравнению с использованием стандартной БД LUNA PLATFORM.
Для использования сервиса Python Matcher с Python Matcher Proxy необходимо дополнительно запустить соответствующий контейнер, а затем выставить определенную настройку в сервисе Configurator. Выполняйте нижеперечисленные действия только если собираетесь использовать плагины сравнения.
См. описание и использование плагинов сравнения в руководстве администратора.
Запуск контейнера Python Matcher Proxy#
Используйте следующую команду для запуска сервиса:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5110 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
--env=SERVICE_TYPE="proxy" \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/python-matcher-proxy:/srv/logs \
--name=luna-python-matcher-proxy \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-python-matcher:v.1.8.6
После запуска контейнера необходимо выставить следующее значение в сервисе Configurator.
ADDITIONAL_SERVICES_USAGE = "luna_matcher_proxy":true