Skip to Content
ДиспетчерУстановка и обновлениеРезервное копирование

Резервное копирование

В данном разделе описаны компоненты платформы НТБот, подлежащие резервному копированию, рекомендуемые процедуры создания резервных копий и восстановления.

Перечень компонентов для резервного копирования

КомпонентТип данныхПуть / расположение
PostgreSQLБазы данных сервисов (launcher, scenario, project, statistic и др.)./psql/data/ (Docker volume)
MinIO / файловое хранилищеСкрипты, JMX-сценарии, CSV-файлы, артефакты тестов./script-config-service/ntbot//opt/ntbot
KeycloakКонфигурация realm, пользователи, роли, клиенты./keycloak/data/h2/ (встроенная БД) или внешняя PostgreSQL
Конфигурация сервисовYAML-файлы Spring Cloud Configconfig-service/src/main/resources/config/
SSL-сертификатыPKCS12-хранилище ключей/opt/ssh/ntdispatcher.p12 (внутри контейнера)
docker-compose.ymlДекларация сервисов и переменных окруженияКорневой каталог установки
Логи приложенияЖурналы технических событий сервисов./logs/ (Docker volume каждого сервиса)

Резервное копирование PostgreSQL

Создание резервной копии

# Резервная копия базы данных launcher docker exec postgres-sql-eval pg_dump -U nt_dispatcher launcher \ > /backup/launcher_$(date +%Y%m%d_%H%M%S).sql # Резервная копия всех баз данных одним файлом docker exec postgres-sql-eval pg_dumpall -U postgres \ > /backup/ntbot_all_$(date +%Y%m%d_%H%M%S).sql

Восстановление из резервной копии

# Восстановление одной базы данных docker exec -i postgres-sql-eval psql -U postgres -c "CREATE DATABASE launcher;" docker exec -i postgres-sql-eval psql -U postgres -d launcher \ < /backup/launcher_<дата>.sql

Базы данных отдельных сервисов: launcher, scenario, project, statistic, artefact_storage, test_data, schedule, sts.

Резервное копирование файлового хранилища

Каталог /opt/ntbot содержит скрипты и JMX-конфигурации, используемые при запуске тестов.

# Резервная копия скриптов и конфигураций tar -czf /backup/ntbot_scripts_$(date +%Y%m%d).tar.gz ./script-config-service/ntbot/ # Восстановление tar -xzf /backup/ntbot_scripts_<дата>.tar.gz -C ./script-config-service/

Резервное копирование Keycloak

Экспорт realm через Admin Console

  1. Войдите в Keycloak Admin Console.
  2. Выберите realm ntdispatcher.
  3. Перейдите в Realm Settings → Action → Partial export.
  4. Включите экспорт пользователей и групп.
  5. Нажмите Export — сохраните файл ntdispatcher-realm.json.

Экспорт через CLI (kcadm)

docker exec -it <keycloak-container> /opt/keycloak/bin/kc.sh export \ --dir /opt/keycloak/data/export \ --realm ntdispatcher \ --users realm_file

Восстановление realm

docker exec -it <keycloak-container> /opt/keycloak/bin/kc.sh import \ --file /opt/keycloak/data/export/ntdispatcher-realm.json

Резервное копирование конфигурации сервисов

Конфигурация сервисов управляется через Git (репозиторий htbot_back). Резервная копия создаётся стандартными средствами Git:

git -C <путь-к-репозиторию> bundle create \ /backup/htbot_back_$(date +%Y%m%d).bundle --all

Дополнительно — сохраните файл docker-compose.yml корневого каталога установки.

Резервное копирование SSL-сертификатов

# Копирование хранилища ключей из контейнера docker cp api-gateway:/opt/ssh/ntdispatcher.p12 /backup/ntdispatcher.p12

Храните резервную копию хранилища ключей в защищённом месте отдельно от паролей.

Рекомендуемая периодичность

КомпонентРекомендуемая периодичность
PostgreSQL (все базы)Ежедневно
MinIO / файловое хранилищеЕженедельно (или при значимых изменениях)
Keycloak (realm export)При каждом изменении конфигурации realm
Конфигурация сервисов (Git)Непрерывно (каждый коммит)
SSL-сертификатыПри выпуске или обновлении сертификата

Проверка резервных копий

Рекомендуется регулярно проверять работоспособность резервных копий путём тестового восстановления на изолированном стенде. Выполните следующие действия для проверки:

  1. Восстановите резервную копию PostgreSQL в тестовой БД.
  2. Запустите сервисы с указанием тестовой БД.
  3. Убедитесь, что данные (проекты, сценарии, результаты тестов) доступны в интерфейсе.
  4. Проверьте, что авторизация через Keycloak работает с восстановленным realm.
Обновлено: