Skip to content

Before upgrade#

Make sure that you are the root user before upgrade!

Before upgrading the LUNA PLATFORM, you must perform the following actions:

  1. Introduce yourself with accounts migration notes.
  2. Create backups.
  3. Delete old symbolic link.
  4. Unpack the distribution of the new version of LUNA PLATFORM.
  5. Create new symbolic link.
  6. Change group and owner for new directories.
  7. Move Image Store buckets.
  8. Configure SELinux and Firewall if not previously configured.
  9. Create log directories for new services, if logging to a file was previously used.
  10. Update license.
  11. Install Docker.
  12. Set up GPU computing if you plan to use GPU.
  13. Login to VisionLabs registry if authorization was not previously performed.
  14. Remove LUNA PLATFORM 4 containers.

Accounts migration notes#

All accounts created using the Admin service will be automatically migrated. The administrator account will be assigned the type "admin", and accounts created by requesting the resource "/accounts" will be assigned the type "advanced_user". The email address will be used as login and password. The name of the organization will be written in the "description" field.

Old account New account
Organization name: VisionLabs login: example@visionlabs.ai
E-mail address: example@visionlabs.ai password: example@visionlabs.ai
Account id: e8531a5b-a429-4980-8d04-b38d8c220409 description: VisionLabs
account_id: e8531a5b-a429-4980-8d04-b38d8c220409
account_type: admin

In order to retain the ability to use the data created earlier by specifying the "account_id" in the "Luna-Account-Id" header, it is necessary in the account creation request specify "login", "password", "account_type" and the old identifier "account_id" in the "Luna-Account-Id" header of the request. Thus, the old "account_id" will be linked to the account being created.

Examples of linking account and creating new account are given in the "Account creation" section.

Backups creation#

Create backups for all the databases used with LUNA PLATFORM before performing the migration procedures. You can restore your data if any problems occur during the migration.

It is recommended to create backups for Image Store buckets.

Backups creation for databases and buckets is not described in this document.

Go to the "luna" directory.

cd /var/lib/luna

Delete the "current" symbolic link.

rm -f current

Distribution unpacking#

The distribution package is an archive luna_v.5.59.0, where v.5.59.0 is a numerical identifier, describing the current LUNA PLATFORM version.

The archive includes configuration files, required for installation and exploitation. It does not include Docker images for the services. They should be downloaded from the Internet.

Move the distribution package to the directory on your server before the installation. For example, move the files to /root/ directory. The directory should not contain any other distribution or license files except the target ones.

Move the distribution to the created directory.

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

Install the unzip archiver if it is necessary.

yum install -y unzip

Go to the folder with distribution.

cd /var/lib/luna

Unzip files.

unzip luna_v.5.59.0.zip

Create a symbolic link.

The link indicates that the current version of the distribution file is used to run LUNA PLATFORM.

ln -s luna_v.5.59.0 current

Changing group and owner for directories#

LP services are launched inside the containers by the "luna" user. Therefore, it is required to set permissions for this user to use the mounted volumes.

Go to the LP "example-docker" directory.

cd /var/lib/luna/current/example-docker/

Create a directory to store settings.

mkdir luna_configurator/used_dumps

Set permissions for the user with UID 1001 and group 0 to use the mounted directories.

chown -R 1001:0 luna_configurator/used_dumps

Move Image Store buckets#

LUNA PLATFORM 5 is supposed to store buckets in the root directory /var/lib/luna/ to simplify the process of subsequent updates.

Create a directory to store Image Store buckets.

mkdir -p /var/lib/luna/image_store

Move the contents of the Image Store bucket directory to the new bucket storage directory.

mv /var/lib/luna/luna_v.4.5.4/example-docker-compose/image_store/* /var/lib/luna/image_store

Set permissions for the user with UID 1001 and group 0 to use the mounted directories.

chown -R 1001:0 /var/lib/luna/image_store

SELinux and Firewall#

You must configure SELinux and Firewall so that they do not block LUNA PLATFORM services.

SELinux and Firewall configurations are not described in this guide.

If SELinux and Firewall are not configured, the installation cannot be performed.

Create log directory for new services#

Skip this section if no logs were previously stored on the server.

In the version of LUNA PLATFORM 5, new services have appeared for which you need to create directories with logs.

See "Logging to server" section if you have not previously used logging to a file, but want to enable it.

Following are the commands to create directories for all existing services. These commands will create and assign permissions only to missing directories.

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 /tmp/logs/lambda
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 /tmp/logs/lambda

If you need to use the Python Matcher Proxy service, then you need to additionally create the /tmp/logs/python-matcher-proxy directory and set its permissions.

License update#

To update the license, follow these steps:

Actions from License activation manual#

Open the license activation manual and follow the necessary steps.

Note: This action is mandatory. The license will not work without following the steps to activate the license from the corresponding manual.

Docker installation#

The Docker installation is described in the official documentation.

Note: Docker version 25.0.3 was used when testing this instruction. It is not guaranteed to work with higher versions of Docker.

Quick installation commands are listed below.

Check the official documentation for updates if you have any problems with the installation.

Install dependencies:

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

Add repository:

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

Install Docker:

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

Launch Docker:

systemctl start docker
systemctl enable docker

Check Docker status:

systemctl status docker

Calculations using GPU#

You can use GPU for the general calculations performed by Remote SDK.

Skip this section if you are not going to utilize GPU for your calculations.

You need to install NVIDIA Container Toolkit to use GPU with Docker containers. The example of the installation is given below.

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

Check the NVIDIA Container toolkit operating by running a base CUDA container (this container is not provided in the LP distribution and should be downloaded from the Internet):

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

See the NVIDIA documentation for additional information.

Attributes extraction on the GPU is engineered for maximum throughput. The input images are processed in batches. This reduces computation cost per image but does not provide the shortest latency per image.

GPU acceleration is designed for high load applications where request counts per second consistently reach thousands. It won’t be beneficial to use GPU acceleration in non-extensively loaded scenarios where latency matters.

Login to registry#

When launching containers, you should specify a link to the image required for the container launching. This image will be downloaded from the VisionLabs registry. Before that, you should login to the registry.

Login and password can be requested from the VisionLabs representative.

Enter login .

After running the command, you will be prompted for a password. Enter password.

In the docker login command, you can enter the login and password at the same time, but this does not guarantee security because the password can be seen in the command history.

Remove LUNA PLATFORM 4 containers#

Use the following command to stop and delete the default LUNA PLATFORM 4.5.3 containers.

You should remove all the containers of LUNA PLATFORM services if you have started a different number of containers or they have other names.

docker container rm -f admin api sender tasks tasks-worker events luna-matcher luna-detector luna-extractor licenses faces_2 faces_1 image-store configurator influxdb

It is also recommended to remove NGINX or edit its settings, as this instruction does not involve scaling using NGINX.

docker container rm -f nginx