Установка
П еред развертыванием, пользователь должен решить, где 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