Подготовка к запуску#
Убедитесь в том, что вы являетесь root-пользователем перед тем, как начать запуск!
Перед запуском LUNA PLATFORM необходимо выполнить следующие действия:
1․ Распаковать дистрибутив LUNA PLATFORM
2․ Создать символическую ссылку
3․ Настроить SELinux и Firewall
5․ Выполнить установку Docker и Docker Compose
6․ Выбрать способ записи логов
7․ Авторизироваться в registry VisonLabs
8․ Настроить вычисления с помощью GPU, если планируется использовать GPU
Распаковка дистрибутива#
Дистрибутив представляет собой архив luna_v.5.134.0, где v.5.134.0 это числовой идентификатор, обозначающий версию LUNA PLATFORM.
Архив включает в себя конфигурационные файлы, требуемые для установки и использования. Он не включает в себя Docker образы сервисов, их требуется скачать из Интернета отдельно.
Переместите дистрибутив в директорию на вашем сервере перед установкой. Например, переместите файлы в директорию /root/. В ней не должно быть никакого другого дистрибутива или файлов лицензии кроме целевых.
Создайте директорию для распаковки файла дистрибутива
mkdir -p /var/lib/luna
Переместите дистрибутив в созданную директорию
mv /root/luna_v.5.134.0.zip /var/lib/luna
Установите приложение для распаковки архива при необходимости
dnf install -y unzip
Откройте папку с дистрибутивом
cd /var/lib/luna
Распакуйте файлы
unzip luna_v.5.134.0.zip
Создание символической ссылки#
Создайте символическую ссылку. Она показывает, что актуальная версия файла дистрибутива используется для запуска LUNA PLATFORM.
ln -s luna_v.5.134.0 current
SELinux и Firewall#
SELinux и Firewall необходимо настроить так, чтобы они не блокировали сервисы LUNA PLATFORM.
Конфигурация SELinux и Firewall не описываются в данном руководстве.
Если SELinux и Firewall не настроены, дальнейшая установка невозможна.
Активация лицензии#
Для активации лицензии необходимо выполнить следующие действия:
- выполнить действия из руководства по активации лицензии
- задать настройки лицензирования HASP или Guardant
Действия из руководства по активации лицензии#
1․ Перейдите в руководство по активации лицензии и выполните все необходимые шаги.
2․ Вернитесь на эту страницу, чтобы продолжить процедуру установки после успешной активации.
Важно: Активация лицензии является обязательным шагом. Без его выполнения лицензия работать не будет.
Задание настроек лицензии HASP#
Для HASP-ключа нужно задать IP-адрес сервера лицензирования. Адрес задается в дамп-файле "platform_settings.json". Содержимое стандартных настроек будет перезаписано содержимым этого файла на этапе запуска сервиса Configurator.
Откройте файл "platform_settings.json":
vi /var/lib/luna/current/extras/conf/platform_settings.json
Задайте IP-адрес сервера с вашим ключом HASP в поле "server_address":
{
"value": {
"vendor": "hasp",
"server_address": "127.0.0.1"
},
"description":"License vendor config",
"name":"LICENSE_VENDOR",
"tags":[]
},
Сохраните файл.
Обратите внимание, что если лицензия активируется с помощью ключа HASP, то должно быть указано два параметра "vendor" и "server_address". Если вы хотите изменить защиту HASP на Guardant, то необходимо добавить поле "license_id".
Задание настроек лицензии Guardant#
Для Guardant-ключа нужно задать IP-адрес сервера лицензирования и идентификатор лицензии. Настройки задаются в дамп-файле "platform_settings.json". Содержимое стандартных настроек будет перезаписано содержимым этого файла на этапе запуска сервиса Configurator.
Откройте файл "platform_settings.json":
vi /var/lib/luna/current/extras/conf/platform_settings.json
Задайте следующие данные:
- IP-адрес сервера с вашим ключом Guardant в поле "server_address"
- идентификатор лицензии в формате
0x<your_license_id>, полученный в разделе "Сохранение идентификатора лицензии" в руководстве по активацию лицензии, в поле "license_id":
{
"value": {
"vendor": "guardant",
"server_address": "127.0.0.1",
"license_id": "0x92683BEA"
},
"description":"License vendor config",
"name":"LICENSE_VENDOR",
"tags":[]
},
Сохраните файл.
Обратите внимание, что если лицензия активируется с помощью ключа Guardant, то должно быть указано три параметра "vendor", "server_address" и "license_id". Если вы хотите изменить защиту Guardant на HASP, то необходимо удалить поле "license_id".
Установка Docker и Docker Compose#
Установка Docker описана в официальной документации.
Примечание. При тестировании данной инструкции использовался Docker версии 25.0.3 и плагин Docker Compose версии 2.24.6. Не гарантируется работа с более высокими версиями.
Команды для быстрой установки приведены ниже.
Проверьте официальную документацию на наличие обновлений при возникновении каких-либо проблем с установкой.
Добавьте репозиторий Docker:
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Установите Docker и плагин Docker Compose:
dnf -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Запустите Docker:
systemctl start docker
systemctl enable docker
Проверьте статус Docker:
systemctl status docker
Выбор способа записи логов#
В LUNA PLATFORM существует два способа вывода логов:
- стандартный вывод логов (stdout);
- вывод логов в файл.
Настройки вывода логов задаются в настройках каждого сервиса в секции <SERVICE_NAME>_LOGGER.
При необходимости можно использовать оба способа вывода логов.
Для более подробной информации о системе логирования LUNA PLATFORM см. раздел "Логирование информации" в руководстве администратора.
Запись логов в stdout#
Данный способ используется по умолчанию и для него не требуется выполнять дополнительных действий.
Рекомендуется настроить ротацию логов Docker для ограничения их размеров (см. раздел "Настройка ротации логов Docker").
Запись логов в файл#
Примечание. При включении сохранения логов в файле необходимо помнить о том, что логи занимают определенное место в хранилище, а процесс логирования в файл негативно влияет на производительность системы.
Для использования данного способа необходимо выполнить следующие дополнительные действия:
- перед запуском сервисов: создать директории для логов на сервере;
- после запуска сервисов: активировать запись логов и задать расположение хранения логов внутри контейнеров сервисов LP;
- во время запуска сервисов: настроить синхронизацию директорий логов в контейнере с логами на сервере с помощью аргумента
volumeпри старте каждого контейнера.
В скрипте Docker Compose уже настроена синхронизация директорий логов, необходимо только создать директории и активировать запись логов.
См. инструкцию по включению записи логов в файлы в разделе "Запись логов на сервер".
Вычисления с использованием GPU#
Пропустите этот раздел, если не планируете использовать GPU.
Для выполнения основных вычислений в сервисах Remote SDK или Video Agent можно задействовать GPU.
Для использования GPU необходимо выполнить следующие действия:
Подготовка GPU-окружения#
Для интеграции GPU с контейнерами Docker необходимо установить NVIDIA Container Toolkit. Пример установки приведен ниже.
Определите дистрибутив:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
Добавьте репозиторий NVIDIA:
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | tee /etc/yum.repos.d/nvidia-docker.repo
Обновите кэш пакетов:
dnf clean expire-cache
Установите пакет nvidia-docker2 и зависимости:
dnf install -y nvidia-docker2
Перезапустите Docker:
systemctl restart docker
Запустите тестовый контейнер с CUDA (образ загружается из интернета и не входит в дистрибутив LP):
docker run --rm --gpus all nvcr.io/nvidia/cuda:12.4.0-base-ubi8 nvidia-smi
См. документацию NVIDIA для дополнительной информации.
Настройка GPU-ресурсов#
Для выделения GPU-ресурсов сервисам Remote SDK и Video Agent необходимо добавить секцию deploy в конфигурацию Docker Compose.
Доступны два способа:
Вариант 1 — через аргумент --gpu и отдельный файл
При использовании скрипта start_platform.sh можно указать флаг --gpu.
В этом случае будет подключен файл /var/lib/luna/current/example-docker/docker-compose.gpu.yml со следующим содержимым:
services:
remote-sdk:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
video-agent:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
Пояснения к параметрам:
driver— драйвер для зарезервированных устройств (например, nvidia).count— количество GPU, которые будут выделены (значениеallзарезервирует все доступные GPU).capabilities— список возможностей, поддерживаемых драйвером. Для GPU должно содержать gpu. Параметр обязателен.
Файл можно отредактировать для изменения параметров.
Вариант 2 — прямая правка основного docker-compose.yml
Откройте файл:
vi /var/lib/luna/current/example-docker/docker-compose.yml
Добавьте секцию deploy в нужный сервис, например:
remote-sdk:
image: ${DOCKER_URL}/luna-remote-sdk:${LUNA_REMOTE_SDK_TAG}
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
restart: always
...
Пояснения к параметрам:
driver— драйвер для зарезервированных устройств (например, nvidia).count— количество GPU, которые будут выделены (значениеallзарезервирует все доступные GPU).capabilities— список возможностей, поддерживаемых драйвером. Для GPU должно содержать gpu. Параметр обязателен.
Для дополнительной информации см. следующую документацию:
https://docs.docker.com/compose/gpu-support/#enabling-gpu-access-to-service-containers.
GPU-ускорение оптимизировано для сценариев с высокой нагрузкой (тысячи запросов в секунду). Оно выполняет пакетную обработку изображений, что снижает вычислительные затраты на одно изображение, но увеличивает задержку обработки отдельных кадров. Не рекомендуется для задач с малым потоком данных, где критична минимальная задержка отклика.
Авторизация в registry#
При запуске контейнеров необходимо указать ссылку на образ, необходимый для запуска контейнера. Этот образ загружается из VisionLabs registry. Перед этим необходима авторизация.
Логин и пароль можно запросить у представителя VisionLabs.
Введите логин
docker login dockerhub.visionlabs.ru --username <username>
После выполнения команды будет запрошен ввод пароля. Введите пароль.
В команде
docker loginможно вводить логин и пароль одновременно, однако это не гарантирует безопасность, т.к. пароль можно будет увидеть в истории команд.