Infrastructure configuration

Note: If you have changed the configuration or changed the operating status of any component involved in this document while LiCO is running, the following command must be executed to restart LiCO:

systemctl restart lico

Cluster configuration

The following part of the infrastructure configuration in the /etc/lico/lico.ini should be modified:

[LICO]
DOMAIN = 'hpc.com'

Storage configuration

To adhere to the shared directory configurations in this document, the following part of the storage configuration in the /etc/lico/lico.ini should be modified:

[LICO]
SHARE_DIR = "/home"

Scheduler configuration

The following part of the scheduler configuration in the /etc/lico/lico.ini should be modified:

[LICO]
# The scheduler configuration currently supports Slurm, LSF and openPBS. Slurm is the default. if use LSF, change it to lsf; if use openPBS, change it to pbs
SCHEDULER = 'slurm'

Shared folders configuration

To make new users accessible to one or more custom shared directory, do the following: Step 1. Create one or more shared folder, change the permission

# change <Shared_Folder> to the absolute path of the Shared directory, If you want to use the existing directories, remember to change the permission.
mkdir -p <Shared_Folder>
chmod <CUSTOM PERMISSION> <Shared_Folder>

Step 2. Modify the share directories configuration in the /etc/lico/lico.ini:

[LICO]
#for example: USER_SHARE_DIR = ["<Shared_Folder>","<Shared_Folder1>"]
USER_SHARE_DIR = []

Note: You need to run the following command for the changes to take effect

lico share_dirs_init

Transiter configuration

Job submission, singularity command query, etc. will be executed on the configured transit node. You could modify the following configuration in the /etc/lico/lico.ini:

Note: When running LiCO inside docker, HOST must be specified.

[TRANSITER]
HOST=''
PORT=22

Login configuration

The following part of the login configuration in the /etc/lico/lico.ini.d/user.ini should be modified:

[USER.LOGIN]
#Maximum number of login password error attempts
MAX_CHANCE = 5
#If user login failures exceed MAX_CHANCE,the system will suspend this user for 1 hour
LOCKED_HOURS = 1

Accounting configuration

If you need to use the billing function. The following part of the billing configuration in the /etc/lico/lico.ini.d/accounting.ini should be modified. Through this configuration, you can set the time and content format of the exported report according to your time zone and your needs.

Attention: When the scheduler is PBS, daily billing mode is not currently supported.

[ACCOUNTING.BILLING]
# billing mode
# daily: This mode represents the running jobs will be charged at a fixed moment every day.
# completed: This mode represents the jobs will be charged only when they are completed.
JOB_BILLING_CYCLE = "completed"

# localtime use 24-hour format(hour[0-23]:minute[0-59])
DAILY_HOUR = "01:00"
MONTHLY_DAY = 2

# ('en', 'English'),('sc', 'Simplified Chinese')
LANGUAGE = "en"

# The number of minutes between the current timezone and the UTC timezone
# Use offset between local timezone and UTC timezone by default
# Example: local timezone is GMT+8, the following should be 480.
# TIMEZONE_OFFSET = 0

# Billing report unit and location information:
# Format of UNIT: "<unit>;<unit>"
# Note: If you modify this field, please log in to the LiCO web page again.
# Unit optional parameters:
#     $ : Indicates that the currency unit is dollar
#     \uffe5 : Indicates that the currency unit is ¥
#     \u5143 : Indicates that the currency unit is 元
# Unit example format:
#     "$"  : Default unit format. example: $88
#     "$;" : Indicates that the currency starts with the unit. example: $88
#     ";$" : Indicates that the currency ends with the unit. example: 88$
#     "\uffe5;\u5143" : Indicates that there are units before and after. example: ¥88元
UNIT = "$"

# billing title (Default: LiCO)
TITLE = "LiCO"

[ACCOUNTING.STORAGE]
# Bill for GPFS, Change the following items according to your settings for GPFS
USER_QUOTE_IDENTITY_FIELD = ""
GPFS_STORAGE_CMD = "mmrepquota"

[ACCOUNTING.BALANCE]
# How often to remind the balance is low, in minutes.
ALERT_INTERVAL_MINUTES = 60

Job configuration

Due to the delay in slurm statistic date collection, billing data of memory will be lost if the memory usage of the job is not obtained immediately after job is completed. To get memory at the best effort, the following part of the job configuration in the /etc/lico/lico.ini.d/job.ini should be modified:

[JOB.SLURM]
# The number of times the fetch was retried
MEMORY_RETRY_COUNT = 1
# The wait interval for refetch
MEMORY_RETRY_INTERVAL_SECOND = 0.5

[JOB.CSRES]
# the port range used by job.
PORT_BEGIN = 25000
PORT_END = 27500

When the file lsb.events does not exist in its default path $(LSB_SHAREDIR)/cluster_name/logdir, or lsf is not installed on the lico head node, the bhist command won't retrieve job information. Enabling the following configuration provides more accurate historical run times for jobs.

[JOB.LSF]
EVENTS_FILE_PATH = ""

Database configuration

If you database server is not the same as the LiCO management node. Change the instructions in the following configuration file to the ip address of your database server.

  1. /etc/lico/lico.ini

    [DATABASE]
    # the ip address where the mariadb installed
    HOST = '127.0.0.1'
    [INFLUXDB]
    # the ip address where the influxdb installed
    HOST = '127.0.0.1'
  2. /etc/lico/lico.ini.d/monitor.ini

    [MONITOR.DATASOURCE.INFLUX]
    # the ip address where the influxdb installed
    host = '127.0.0.1'

Confluent configuration

If your confluent server is not the same as the LiCO management node. Change the instructions in the following configuration file to the ip address and port of your confluent server

  1. /etc/lico/lico.ini.d/cluster.ini

    [CLUSTER.CONFLUENT]
    # the confluent server node ip
    HOST = "127.0.0.1"
    # the confluent server port
    PORT = 4005
  2. /etc/lico/confluent-proxy.ini

    [app:confluent-proxy]
    # the confluent server node ip
    host = 127.0.0.1
    # the confluent server port
    port = 4005

    Note: You need to run the following command for the changes to take effect

    systemctl restart lico-confluent-proxy

OneAPI configuration

Note: This function is unavailable if Intel oneAPI is not installed.

If you have installed intel oneAPI and want to use intel oneAPI by LiCO. The following part of the oneapi configuration in the /etc/lico/lico.ini.d/oneapi.ini should be modified

[ONEAPI]
# where is the intel oneapi installed, /opt/intel/oneapi is the default path 
INTEL_MODULE_PATH = "/opt/intel/oneapi"
# if true, you can use intel oneAPI by LiCO Web; if false, close this function
ENABLE = true

Monitor configuration

LiCO supports the unmonitored version, if you need to use the unmonitored version. The following part of the monitor configuration in the /etc/lico/lico.ini.d/monitor.ini should be modified:

[MONITOR]
# Controls which LiCO functions are to be enabled.
# The default value is ['scheduler', 'cluster']
# To use unmonitored version, configure the value to ['scheduler']
# To use no scheduler version, configure the value to ['cluster']
TARGETS = ['scheduler', 'cluster']


[MONITOR.ICINGA]
# the icinga server node ip
host = '127.0.0.1'
# the icinga server port
port = 5665
timeout = 30

EAR configuration

LiCO supports to configure EAR through LiCO. If you want to use this function, the following part of the EAR configuration in the /etc/lico/lico.ini.d/ear.ini should be modified:

[EAR]
EAR_CONFIG_PATH = ""

# The number of ear configuration file bakcups, default is 5
# EAR_CONF_BACKUP =

# The executable script must have the following fuctions:
# 1. If the EAR cluster do not share ear.conf,
#    the script must be able to update the ear.conf for all nodes;
# 2. Able to reload all EARD services in the cluster, such like systemctl relaod eard;
# 3. Able to backup ear.conf is strongly recommended;
# Example: EARD_RELOAD_SCRIPT_PATH = "/var/lib/lico/core/ear/scripts/your_path"
EARD_RELOAD_SCRIPT_PATH = ""

Publish configuration

In the publish operation, the /tmp directory is used by default to cache temporary files. If you want to change it,the following part of the Publish configuration in the /etc/lico/lico.ini.d/publish.ini should be modified:

[PUBLISH]
BUILDAH_TMPDIR = ""

When you need to publish docker. you need to edit the /etc/containers/storage.conf file. modify the mountopt = "nodev,metacopy=on" to mountopt = "nodev,metacopy=off".

Container configuration

If you want to use lico web to build images. the following part of the container configuration in the /etc/lico/lico.ini.d/container.ini should be modified:

[CONTAINER]
# Singularity will cache SIF container images generated from remote sources, and any OCI/docker layers used to create them.The cache is created at $HOME/.singularity/cache by default. The location of the cache can be changed by setting the SINGULARITY_CACHEDIR environment variable.
SINGULARITY_CACHEDIR = ""
# When building a container, or pulling/running a Singularity container from a Docker/OCI source, a temporary working space is required. You may need to set SINGULARITY_TMPDIR when building a large container on a system which has a small /tmp filesystem
SINGULARITY_TMPDIR = ""

Cloudtools configuration

If you want to control the time when jupyter is automatically closed, you can modify the defaultValue while the id of the params in the file /var/lib/lico/core/templates/jupyter/template.json is one of jupyter_timeoutkernel_timeoutterminal_timeout.

The meaning of these three parameters is as follows:

If you want to add automatic labeling function in CVAT, you need to add nuclio server address to defaultValue while the id of the params in the file in /var/lib/lico/core/templates/cvat/template.json is CVAT_NUCLIO_HOST (If you don't have Nuclio or auto annotation model installed, Please refer to https://opencv.github.io/cvat/docs/administration/advanced/installation_automatic_annotation/).

Notice configuration

Attention: The configuration in this section is needed only when lico-wechat-agent module is installed for the cluster. You can obtain and from https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html

The following part of the wechat-agent configuration in the /etc/lico/wechat-agent.ini should be modified:

[app:main]
appid = <your appid>
secret = <your secret>

Note: You need to run the following command for the changes to take effect

systemctl restart lico-wechat-agent

FileManager configuration

For the file management system, we have enabled 20 workers by default. If you have high concurrency requirements, please change the number of workers in the /usr/lib/systemd/system/lico-file-manager.service file according to your requirements.

Note: Please refer to https://docs.gunicorn.org/en/stable/settings.html#workers for details.

[Unit]
Description=File Manager for lico project
After=multi-user.target

[Service]
EnvironmentFile=-/etc/sysconfig/lico
ExecStart=/usr/bin/gunicorn-3.6 --paste /etc/lico/file-manager.ini --bind :18085 --log-config /etc/lico/lico.logging.d/file-manager.ini -w 20 --timeout 600 --keep-alive 65 --capture-output
KillMode=mixed
Restart=on-failure

[Install]
WantedBy=multi-user.target

You need to run the following command for the changes to take effect:

systemctl daemon-reload
systemctl restart lico-file-manager