Восстановление из снимка используется, когда нужно вернуть состояние Stronghold из ранее сохранённой резервной копии.
Перед началом
- Если вы восстанавливаете Stronghold после инцидента, верните кластер в рабочее состояние: подготовьте новое хранилище и получите временный root-токен после инициализации.
- Убедитесь, что восстанавливаемый кластер использует интегрированное Raft-хранилище как основной бэкенд хранения.
- Скопируйте файл снимка на узел, с которого будет выполняться восстановление.
- Убедитесь, что у вас есть исходные unseal- или recovery-ключи. После восстановления понадобятся именно они, а не только новые ключи, выданные при повторной инициализации.
Восстановление из снимка доступно только для снимков интегрированного Raft-хранилища. Если Stronghold работает поверх etcd, PostgreSQL или другого внешнего бэкенда, нужно использовать процедуру восстановления самого хранилища.
Восстановление через CLI
Для восстановления снимка используйте команду с флагом -force:
- Stronghold в DKP
- Stronghold в Linux
d8 stronghold operator raft snapshot restore -force /tmp/snapshots/backup.snapstronghold operator raft snapshot restore -force /tmp/snapshots/backup.snapФлаг -force нужен потому, что текущее состояние кластера и данные снимка относятся к разным состояниям хранилища.
Восстановление через API
Для восстановления через API используйте эндпоинт 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, используя исходные ключи:
- Stronghold в DKP
- Stronghold в Linux
d8 stronghold operator unsealstronghold operator unsealРекомендации
- Регулярно проверяйте на тестовом контуре процесс восстановления создания снимков.
- Зафиксируйте, где хранятся резервные копии и кто отвечает за доступ к ключам.
- Если у вас несколько контуров или схем репликации, продумайте порядок восстановления для каждого из них отдельно.