Восстановление из снимка используется, когда нужно вернуть состояние Stronghold из ранее сохранённой резервной копии.

Перед началом

  • Верните кластер в рабочее состояние после инцидента: подготовьте новое хранилище и получите временный root-токен после инициализации.
  • Убедитесь, что восстанавливаемый кластер использует интегрированное Raft-хранилище как основной storage backend.
  • Скопируйте файл снимка на узел, с которого будет выполняться восстановление.
  • Убедитесь, что у вас есть исходные unseal- или recovery-ключи. После восстановления понадобятся именно они, а не только новые ключи, выданные при реинициализации.

Восстановление из снимка доступно только для снимков интегрированного Raft-хранилища. Если Stronghold работает поверх etcd, postgresql или другого внешнего backend, нужно использовать процедуру восстановления самого хранилища.

Восстановление через CLI

Для восстановления снимка используйте команду с флагом -force:

d8 stronghold operator raft snapshot restore -force /tmp/snapshots/backup.snap

Флаг -force нужен потому, что текущее состояние кластера и данные снимка относятся к разным состояниям хранилища.

Восстановление через API

Для восстановления через API используйте endpoint POST /sys/storage/raft/snapshot-force:

curl \
  --request POST \
  --header "X-Vault-Token: ${VAULT_TOKEN}" \
  --data-binary @/tmp/snapshots/backup.snap \
  "${VAULT_ADDR}/v1/sys/storage/raft/snapshot-force"

После восстановления

После загрузки снимка необходимо выполнить процедуру распечатывания Stronghold с использованием исходных ключей:

d8 stronghold operator unseal

Практические рекомендации

  • Проверяйте процесс восстановления на тестовом контуре, а не только создание снимка.
  • Зафиксируйте, где хранятся резервные копии и кто отвечает за доступ к ключам.
  • Если у вас несколько контуров или схем репликации, продумайте порядок восстановления для каждого из них отдельно.