Бэкапы и восстановление
backups сохраняет всё, что нужно инстансу, чтобы вернуться: базу и папку данных
каждого сервиса, /etc/xvii, хранилище релизов и все базы, которыми управляет apps.
Хранилища
| Хранилище |
Примечания |
| S3-совместимое |
любой провайдер; бакет и ключ с доступом к нему |
| SFTP |
другой сервер; backups создаёт пару ключей Ed25519, публичную часть вы добавляете там |
| Локальная папка |
второй диск; от потери сервера не защищает |
| Канал Telegram |
части по 19,9 МБ, зашифрованные AES-256-GCM, и манифест; полные снимки без дедупликации |
S3, SFTP и локальные папки — репозитории restic: зашифрованные, с дедупликацией, инкрементальные. Используйте
хотя бы одно хранилище за пределами провайдера control plane.
Планы
У плана есть расписание, источники, хранилища и срок хранения для каждого источника. План без источников
берёт всё, включая сервисы, установленные позже. Каждый запуск делает по снимку на источник.
| Источник |
Что это |
/etc/xvii |
домен, желаемые сервисы и версии, настройки и сгенерированные секреты |
| releases |
хранилище релизов |
db:xvii_<service> |
база сервиса платформы |
| папки данных |
папка каждого сервиса платформы в /var/lib/xvii (ключи, файлы) |
app:<id> |
база под управлением apps, передаётся прямо с её ноды |
Набор для восстановления
При создании хранилища backups показывает набор для восстановления: пароли репозиториев и ключи доступа,
нужные для восстановления без работающего инстанса. Скачайте его и храните не на инстансе. Потом его можно
показать снова только в журналируемой сессии панели.
Проверки и учения
- Раз в неделю каждый репозиторий проверяется
restic check --read-data-subset 5%.
- Раз в месяц учение восстанавливает каждую базу платформы во временную и проверяет её.
- Сбои отправляют
backup.failed, backup.verify_failed в notify. Подпишитесь на них.
Бэкап, который вы ни разу не восстанавливали, — это надежда, а не бэкап: хотя бы раз восстановите его на
тестовый сервер.
Частичное восстановление
Из панели backups:
- базу — под новым именем или на месте;
- папку;
- один файл — скачиванием;
- базу приложения — на месте.
Восстановление заменяет данные. Остановите запись, проверьте цель, сделайте свежий бэкап того, что сейчас
замените, и после проверьте приложение настоящими чтениями и записями.
Восстановление всего инстанса
На свежем сервере с набором для восстановления:
xvii server restore root@203.0.113.7 --kit xvii-recovery.txt
По SSH ставятся restic, PostgreSQL, Caddy и xvii-node, затем из самых новых снимков восстанавливаются
/etc/xvii (домен, сервисы, настройки и секреты), релизы, база и папка данных каждого сервиса. Сервисы
стартуют со своими данными. Направьте DNS инстанса на новый сервер, чтобы заработали сертификаты и вход.
Потом проверьте: войдите, откройте каждую панель, убедитесь, что ноды переподключились (xvii apps nodes), а
серверы имён забирают зоны. Ноды продолжают выполнять приложения, пока control plane недоступен, и сами
переподключаются.
Ключи
Несколько сервисов запечатывают секреты ключом в своей папке данных (мастер-ключ env, ключ apps, ключи DNSSEC
в domains). Эти папки входят в бэкап. База, восстановленная без своей папки, содержит секреты, которые никто
не откроет, а потерянный ключ DNSSEC при опубликованном DS — это авария DNS.