Files
Instruction/DISASTER_RECOVERY.md
T
Shelyagin Roman 2a683fda47 docs: add 172.16.8.150 monitoring server and KSP-Steel/monitoring to knowledge base
- Added server-150 root credentials and Vault lookup examples
- Documented Zabbix 7.0, Grafana, Prometheus, Loki, Portainer and Alert Bridge
- Added monitoring ports, targets and Synology NFS backup workflow
- Updated topology map and disaster recovery runbooks
2026-09-28 15:57:30 +05:00

4.6 KiB

🛡️ Регламент аварийного восстановления и резервного копирования (Disaster Recovery)

Документ описывает пошаговые сценарии восстановления ключевых сервисов инфраструктуры KSP Steel при аппаратных или программных сбоях.


1. HashiCorp Vault (172.16.8.8)

Сценарий А: Перезагрузка сервера или контейнера (Vault Sealed)

При любом рестарте Vault автоматически запечатывается. Симптомы: 503 Service Unavailable, ошибки Vault is sealed.

Восстановление (Unseal):

# На сервере 172.16.8.8 выполните скрипт:
/opt/infra/scripts/unseal_vault.sh

# Либо вручную через cURL:
curl -s -X POST -d '{"key": "8539216e3c5715984d1dd89785d9b123cac7359f1e09600e60017df5d7e8f62e"}' http://127.0.0.1:8200/v1/sys/unseal

Сценарий Б: Повреждение данных хранилища

# 1. Остановить контейнер
cd /opt/infra && docker compose stop vault

# 2. Восстановить каталог data из последнего архива
tar -xzf /opt/infra/backups/vault_data_backup_<TIMESTAMP>.tar.gz -C /opt/infra/vault/

# 3. Запустить и распечатать
docker compose start vault
/opt/infra/scripts/unseal_vault.sh

2. Ansible Semaphore и Telegram Bot (172.16.8.8)

Сценарий А: Остановка сервисов

# Перезапуск веб-панели и бота:
systemctl restart semaphore
systemctl restart semaphore-bot

# Проверка статуса:
systemctl is-active semaphore semaphore-bot
journalctl -u semaphore-bot -n 30 --no-pager

Сценарий Б: Повреждение базы данных Semaphore (database.sqlite)

Файл базы: /opt/ansible/semaphore/database.sqlite.
Перед крупными изменениями создавайте копию:

sqlite3 /opt/ansible/semaphore/database.sqlite ".backup '/opt/ansible/semaphore/backup.sqlite'"

3. Почтовый архив MailGuard (172.16.8.151)

Сценарий А: Перезапуск стека контейнеров

ssh root@172.16.8.151 "cd /opt/mailguard && docker compose restart"

Сценарий Б: Восстановление веб-файлов из резервной копии

На сервере хранится эталонная копия исходников:
/opt/mailguard/services/web/src_backup_20260928_145219

# Восстановление:
cp -r /opt/mailguard/services/web/src_backup_20260928_145219/* /opt/mailguard/services/web/src/
docker exec mailguard-web nginx -s reload

4. Портал Инфосистема 2.0 (172.16.8.75)

Обновление и сборка из Git:

cd /opt/infosystem
git pull origin master
cd v2
docker compose down
docker compose up -d --build

Проверка работоспособности: curl -I http://127.0.0.1:8090/


5. Стек мониторинга и телеметрии (172.16.8.150)

Сценарий А: Перезапуск компонентов

На сервере подготовлен скрипт управления:

ssh root@172.16.8.150 "/opt/monitoring-repo/scripts/restart_services.sh all"

# Либо по отдельности:
/opt/monitoring-repo/scripts/restart_services.sh zabbix
/opt/monitoring-repo/scripts/restart_services.sh prometheus
/opt/monitoring-repo/scripts/restart_services.sh grafana
/opt/monitoring-repo/scripts/restart_services.sh bridge
/opt/monitoring-repo/scripts/restart_services.sh loki

Сценарий Б: Восстановление из бэкапов на Synology

Все бэкапы сохраняются на NAS Synology в /mnt/synology_infosec/backups/monitoring/<TIMESTAMP>/.

  1. Восстановление БД Zabbix (PostgreSQL):
    gunzip < /mnt/synology_infosec/backups/monitoring/<DATE>/zabbix_db_<DATE>.sql.gz \
      | docker exec -i zabbix-postgres psql -U zabbix zabbix
    
  2. Восстановление конфигураций (Prometheus, Grafana, Alert Bridge, Loki):
    tar -xzf /mnt/synology_infosec/backups/monitoring/<DATE>/monitoring_configs_<DATE>.tar.gz -C /opt/
    
  3. Ручной запуск бэкапа:
    /opt/monitoring-repo/scripts/backup_monitoring.sh