Бэкап и восстановление кластера
TL;DR: Бэкап Swarm = бэкап
/var/lib/docker/swarm/на менеджере. Содержит Raft-лог (конфигурация кластера, секреты, сервисы).
Состояние кластера (Raft log) хранится в /var/lib/docker/swarm.
Создание бэкапа
Выполнять на Manager ноде.
- Остановите Docker (рекомендуется для консистентности):
systemctl stop docker - Заархивируйте директорию:
tar -czvf swarm-backup.tar.gz /var/lib/docker/swarm - Запустите Docker:
systemctl start docker
Восстановление
Если все менеджеры потеряны.
- На новой чистой машине остановите Docker.
- Удалите существующую папку swarm (если есть):
rm -rf /var/lib/docker/swarm - Распакуйте архив:
tar -xzvf swarm-backup.tar.gz -C / - Инициализируйте новый кластер из этих данных:
docker swarm init --force-new-cluster
Типичные ошибки
| Ошибка | Симптом | Решение |
|---|---|---|
| Бэкапят только данные приложения | Потеряли конфигурацию кластера, секреты, стеки | Бэкапить /var/lib/docker/swarm/ + compose-файлы |
| Restore на работающем менеджере | Конфликт с существующим Raft-состоянием | docker swarm init --force-new-cluster из бэкапа |
| Нет бэкапа секретов отдельно | Секреты зашифрованы в Raft — не прочитать без кластера | Хранить оригиналы секретов в Vault/KMS |