Установка
Перед развертыванием, пользователь должен решить, где hbf-server будет хранить данные. Предоставляется два варианта для выбора:
- In Memory.
- Postgres: В этом случае необходимо перед запуском hbf-server выполнить миграцию базы данных.
Независимо от выбранного метода установки hbf-server, необходимо сконфигурировать следующие переменные окружения:
HBF_SERVER - IP-адрес hbf-server.
export HBF_SERVER=0.0.0.0
HBF_SERVER_PORT - порт, используемый hbf-server.
export HBF_SERVER_PORT=9650
VERSION - версия hbf-server.
export VERSION=1.9.1
SG_STORAGE_TYPE - тип хранилища для hbf-server. Допустимые значени: internal или postgres.
В случае выбора типа хранилища "In Memory" установите переменную окружения командой:
export SG_STORAGE_TYPE=internal
В случае выбора типа хранилища "Postgres" установите переменную окружения командой:
export SG_STORAGE_TYPE=postgres
SG_STORAGE_POSTGRES_URL - URL для подключения к Postgres базе данных. Для корректного формирования воспользуйтесь
командой:
cat <<EOF > setup.sh
#!/bin/bash
SG_DB_USER="user"
SG_DB_PASSWORD="password"
SG_DB_URL="localhost:5432"
SG_DB_NAME="swarm"
SG_STORAGE_POSTGRES_URL="postgres://${SG_DB_USER}:${SG_DB_PASSWORD}@${SG_DB_URL}/${SG_DB_NAME}?sslmode=disable"
export SG_STORAGE_POSTGRES_URL=$SG_STORAGE_POSTGRES_URL
EOF
sh setup.sh
- docker
- deb
- rpm
- source
Перед развертыванием убедитесь, что у вас установлен docker:
docker -v
git clone https://github.com/H-BF/sgroups
cd sgroups
git fetch --tags --all
git checkout tags/v${VERSION}
cat <<EOF > config-server.yaml
---
logger:
# log level
level: INFO
metrics:
# enable api metrics
enable: true
healthcheck:
# enables|disables health check handler
enable: true
server:
# server endpoint
endpoint: tcp://${HBF_SERVER}:${HBF_SERVER_PORT}
# graceful shutdown period
graceful-shutdown: 30s
EOF
docker build -f docker/Dockerfile.server --tag sgroups:v$(cat VERSION) .
docker run \
-d \
-v ./config-server.yaml:/opt/swarm/etc/sgroups/config-server.yaml \
--name hbf-server \
--entrypoint "/app/bin/sgroups" \
--env SG_STORAGE_TYPE \
sgroups:v$(cat VERSION) -config /opt/swarm/etc/sgroups/config-server.yaml
sh setup.sh
docker run \
-d \
-v ./config-server.yaml:/opt/swarm/etc/sgroups/config-server.yaml \
--name hbf-server \
--entrypoint "/app/bin/sgroups" \
--env SG_STORAGE_TYPE \
--env SG_STORAGE_POSTGRES_URL \
sgroups:v$(cat VERSION) -config /opt/swarm/etc/sgroups/config-server.yaml
export PACKAGE_TYPE=deb
export URL=https://github.com/H-BF/sgroups/releases/download
export RELEASE=v$VERSION/sgroups-$VERSION-any.$PACKAGE_TYPE
sudo wget -O /tmp/sgroups.deb $URL/$RELEASE
sudo dpkg -i /tmp/sgroups.deb
cat <<EOF > /etc/systemd/system/hbf-server.service
[Unit]
Description=sgroups
Documentation=TODO:
After=network.target
[Service]
EnvironmentFile=/opt/swarm/etc/sgroups/env
ExecStart=/opt/swarm/sbin/sgroups --config=/opt/swarm/etc/sgroups/config.yaml
Restart=always
RestartSec=5
Delegate=yes
KillMode=process
OOMScoreAdjust=-999
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF > /opt/swarm/etc/sgroups/config.yaml
---
logger:
# log level
level: INFO
metrics:
# enable api metrics
enable: true
healthcheck:
# enables|disables health check handler
enable: true
server:
# server endpoint
endpoint: tcp://${HBF_SERVER}:${HBF_SERVER_PORT}
# graceful shutdown period
graceful-shutdown: 30s
EOF
mkdir -p /opt/swarm/etc/sgroups
cat <<EOF > /opt/swarm/etc/sgroups/env
#!/bin/bash
SG_STORAGE_TYPE=${SG_STORAGE_TYPE}
EOF
mkdir -p /opt/swarm/etc/sgroups
cat <<EOF > /opt/swarm/etc/sgroups/env
#!/bin/bash
SG_STORAGE_TYPE=${SG_STORAGE_TYPE}
SG_STORAGE_POSTGRES_URL=${SG_STORAGE_POSTGRES_URL}
EOF
systemctl enable hbf-server.service
systemctl start hbf-server.service
export PACKAGE_TYPE=rpm
export URL=https://github.com/H-BF/sgroups/releases/download
export RELEASE=v$VERSION/sgroups-$VERSION-any.$PACKAGE_TYPE
sudo wget -O /tmp/sgroups.rpm $URL/$RELEASE
sudo yum localinstall -i /tmp/sgroups.rpm
cat <<EOF > /etc/systemd/system/hbf-server.service
[Unit]
Description=sgroups
Documentation=TODO:
After=network.target
[Service]
EnvironmentFile=/opt/swarm/etc/sgroups/env
ExecStart=/opt/swarm/sbin/sgroups --config=/opt/swarm/etc/sgroups/config.yaml
Restart=always
RestartSec=5
Delegate=yes
KillMode=process
OOMScoreAdjust=-999
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF > /opt/swarm/etc/sgroups/config.yaml
---
logger:
# log level
level: INFO
metrics:
# enable api metrics
enable: true
healthcheck:
# enables|disables health check handler
enable: true
server:
# server endpoint
endpoint: tcp://${HBF_SERVER}:${HBF_SERVER_PORT}
# graceful shutdown period
graceful-shutdown: 30s
EOF
mkdir -p /opt/swarm/etc/sgroups
cat <<EOF > /opt/swarm/etc/sgroups/env
#!/bin/bash
SG_STORAGE_TYPE=${SG_STORAGE_TYPE}
EOF
mkdir -p /opt/swarm/etc/sgroups
cat <<EOF > /opt/swarm/etc/sgroups/env
#!/bin/bash
SG_STORAGE_TYPE=${SG_STORAGE_TYPE}
SG_STORAGE_POSTGRES_URL=${SG_STORAGE_POSTGRES_URL}
EOF
systemctl enable hbf-server.service
systemctl start hbf-server.service
Перед развертыванием, необходимо создать директории для хранения бинарного файла и файлов конфигурации командой:
mkdir -p /opt/swarm/sbin
mkdir -p /opt/swarm/etc/to-nft
Клонируем репозиторий, переходим в директорию репозитория, переключаемся на тег необходимой версии и Создайте необходимые директории командой:
git clone https://github.com/H-BF/sgroups
cd sgroups
git fetch --tags --all
git checkout tags/v${VERSION}
make sg-service platform=linux/amd64
cp bin/sgroups /opt/swarm/sbin/hbf-server
Создайте конфигурационный файл для hbf-server командой:
cat <<EOF > /opt/swarm/etc/sgroups/config-server.yaml
---
logger:
# log level
level: INFO
metrics:
# enable api metrics
enable: true
healthcheck:
# enables|disables health check handler
enable: true
server:
# server endpoint
endpoint: tcp://${HBF_SERVER}:${HBF_SERVER_PORT}
# graceful shutdown period
graceful-shutdown: 30s
EOF
Создайте конфигурационный файл для hbf-server.service командой:
cat <<EOF > /etc/systemd/system/hbf-server.service
[Unit]
Description=sgroups
Documentation=TODO:
After=network.target
[Service]
EnvironmentFile=/opt/swarm/etc/sgroups/env
ExecStart=/opt/swarm/sbin/hbf-server --config=/opt/swarm/etc/sgroups/config-server.yaml
Restart=always
RestartSec=5
Delegate=yes
KillMode=process
OOMScoreAdjust=-999
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF > /opt/swarm/etc/sgroups/env
#!/bin/bash
export SG_STORAGE_TYPE=${SG_STORAGE_TYPE}
EOF
cat <<EOF > /opt/swarm/etc/sgroups/env
#!/bin/bash
SG_STORAGE_TYPE=${SG_STORAGE_TYPE}
SG_STORAGE_POSTGRES_URL=${SG_STORAGE_POSTGRES_URL}
EOF
systemctl enable hbf-server.service
systemctl start hbf-server.service
Параметры конфигурационного файла
Для настройки агентов требуется использовать конфигурационный файл, который содержит поля, позволяющие настраивать параметры в соответствии с потребностями пользователей. Так же есть алтьтернативный способ - переменные окружения. Обратите внимание, что переменные окружения являются более приоритетными, чем параметры из файла. Так же часть параметров можно настроить через файл, а часть через переменные окружения.
| Параметр | Описание | Тип | Обязательно |
|---|---|---|---|
logger.level
| Уровень логгирования. Допустимые значения: TRACE, DEBUG, INFO, WARN, ERROR, FATAL, PANIC. | String | Нет |
server.endpoint
| IP адрес и порт hbf-сервер. Рекомендуемое значение: 0.0.0.0:9650. | String | Да |
server.graceful-shutdow
| Определяет период времени, в течение которого процесс сервера должен корректно завершиться. По истечению
периода, процесс завершиться с кодом 1. Значение по умолчанию: | String | Нет |
telemetry.metrics.enable
| Включить/Отключить возможность получения метрик. Значение по умолчанию: | Boolean | Нет |
healthcheck.enable
| Включить/Отключить возможность получения информации о статусе hbf-сервера. Значение по умолчанию: | Boolean | Нет |
storage.type
| Подключаемый тип базы данных. Значение по умолчанию: | String | Нет |
storage.postgres.url
| URL для подключения к базе данных Postgres. При использовании | String | Нет |