Перейти к содержанию

Подготовка к запуску#

Убедитесь в том, что вы являетесь root-пользователем перед тем, как начать запуск!

Перед запуском LUNA PLATFORM необходимо выполнить следующие действия:

  1. Распаковать дистрибутив LUNA PLATFORM
  2. Создать символическую ссылку
  3. Настроить SELinux и Firewall
  4. Активировать лицензию
  5. Выполнить установку Docker
  6. Выполнить установку Docker Compose
  7. Выбрать способ записи логов
  8. Авторизироваться в registry VisonLabs
  9. Настроить вычисления с помощью GPU, если планируется использовать GPU

Распаковка дистрибутива#

Дистрибутив представляет собой архив luna_v.5.86.0, где v.5.86.0 это числовой идентификатор, обозначающий версию LUNA PLATFORM.

Архив включает в себя конфигурационные файлы, требуемые для установки и использования. Он не включает в себя Docker образы сервисов, их требуется скачать из Интернета отдельно.

Переместите дистрибутив в директорию на вашем сервере перед установкой. Например, переместите файлы в директорию /root/. В ней не должно быть никакого другого дистрибутива или файлов лицензии кроме целевых.

Переместите дистрибутив в директорию c LUNA PLATFORM.

mv /root/luna_v.5.86.0.zip /var/lib/luna

Установите приложение для распаковки архива при необходимости

yum install -y unzip

Откройте папку с дистрибутивом

cd /var/lib/luna

Распакуйте файлы

unzip luna_v.5.86.0.zip

Создайте символическую ссылку. Она показывает, что актуальная версия файла дистрибутива используется для запуска LUNA PLATFORM.

ln -s luna_v.5.86.0 current

SELinux и Firewall#

SELinux и Firewall необходимо настроить так, чтобы они не блокировали сервисы LUNA PLATFORM.

Конфигурация SELinux и Firewall не описываются в данном руководстве.

Если SELinux и Firewall не настроены, дальнейшая установка невозможна.

Активация лицензии#

Для активации лицензии необходимо выполнить следующие действия:

Действия из руководства по активации лицензии#

Откройте руководство по активации лицензии и выполните необходимые шаги.

Примечание. Это действие является обязательным. Лицензия не будет работать без выполнения шагов по активации лицензии из соответствующего руководства.

Задание настроек лицензии 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 описана в официальной документации.

Примечание. При тестировании данной инструкции использовался Docker версии 25.0.3. Не гарантируется работа с более высокими версиями Docker.

Команды для быстрой установки приведены ниже.

Проверьте официальную документацию на наличие обновлений при возникновении каких-либо проблем с установкой.

Установите зависимости:

yum install -y yum-utils device-mapper-persistent-data lvm2

Добавьте репозиторий:

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Установите Docker:

yum -y install docker-ce docker-ce-cli containerd.io

Запустите Docker:

systemctl start docker
systemctl enable docker

Проверьте статус Docker:

systemctl status docker

Установка Docker Compose#

Примечание. При тестировании данной инструкции использовался Docker Compose версии 2.24.6. Не гарантируется работа с более высокими версиями Docker Compose.

Загрузите бинарный файл Docker Compose:

curl -L "https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Установите разрешения на выполнение:

chmod +x /usr/local/bin/docker-compose

Создайте символическую ссылку:

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Выбор способа записи логов#

В LUNA PLATFORM существует два способа вывода логов:

  • стандартный вывод логов (stdout);
  • вывод логов в файл.

Настройки вывода логов задаются в настройках каждого сервиса в секции <SERVICE_NAME>_LOGGER.

При необходимости можно использовать оба способа вывода логов.

Для более подробной информации о системе логирования LUNA PLATFORM см. раздел "Логирование информации" в руководстве администратора.

Запись логов в stdout#

Данный способ используется по умолчанию и для него не требуется выполнять дополнительных действий.

Рекомендуется настроить ротацию логов Docker для ограничения их размеров (см. раздел "Настройка ротации логов Docker").

Запись логов в файл#

Примечание. При включении сохранения логов в файле необходимо помнить о том, что логи занимают определенное место в хранилище, а процесс логирования в файл негативно влияет на производительность системы.

Для использования данного способа необходимо выполнить следующие дополнительные действия:

  • перед запуском сервисов: создать директории для логов на сервере;
  • после запуска сервисов: активировать запись логов и задать расположение хранения логов внутри контейнеров сервисов LP;
  • во время запуска сервисов: настроить синхронизацию директорий логов в контейнере с логами на сервере с помощью аргумента volume при старте каждого контейнера.

В скрипте Docker Compose уже настроена синхронизация директорий логов, необходимо только создать директории и активировать запись логов.

См. инструкцию по включению записи логов в файлы в разделе "Запись логов на сервер".

Вычисления с помощью GPU#

Для основных вычислений, выполняемых сервисом Remote SDK, можно использовать GPU.

Пропустите данный раздел, если не собираетесь использовать GPU для вычислений.

Для использования GPU необходимо установить Docker Compose v1.28.0+.

Для использования 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

После обновления списка пакетов установите пакет nvidia-docker2 и зависимости:

yum clean expire-cache
yum install -y nvidia-docker2
systemctl restart docker

Проверьте работу NVIDIA Container toolkit, запустив базовый контейнер CUDA (он не входит в дистрибутив LP, его необходимо загрузить из Интернета):

docker run --rm --gpus all nvidia/cuda:11.4.3-base-centos7 nvidia-smi

См. документацию NVIDIA для дополнительной информации.

Далее необходимо дополнительно добавить секцию deploy в поле remote-sdk в файл docker-compose.yml.

vi /var/lib/luna/current/example-docker/docker-compose.yml
 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 — в данном поле указывается драйвер для зарезервированного устройства(устройств);

count — в данном поле задается количество графических процессоров, которые должны быть зарезервированы (при условии, что хост содержит такое количество графических процессоров);

capabilities — данное поле выражает как общие, так и специфические возможности драйвера. Его необходимо задать, иначе будет возвращена ошибка при развертывании сервиса.

Для дополнительной информации см. следующую документацию:

https://docs.docker.com/compose/gpu-support/#enabling-gpu-access-to-service-containers.

Извлечение атрибутов на GPU разработано для максимальной пропускной способности. Выполняется пакетная обработка входящих изображений. Это снижает затраты на вычисления для изображения, но не обеспечивает минимальную задержку для каждого изображения.

GPU-ускорение разработано для приложений с высокой нагрузкой, где количество запросов в секунду достигает тысяч. Нецелесообразно использовать ускорение GPU в сценариях с небольшой нагрузкой, когда задержка начала обработки имеет значение.

Авторизация в registry#

При запуске контейнеров необходимо указать ссылку на образ, необходимый для запуска контейнера. Этот образ загружается из VisionLabs registry. Перед этим необходима авторизация.

Логин и пароль можно запросить у представителя VisionLabs.

Введите логин .

После выполнения команды будет запрошен ввод пароля. Введите пароль.

В команде docker login можно вводить логин и пароль одновременно, однако это не гарантирует безопасность, т.к. пароль можно будет увидеть в истории команд.