Бэкап и восстановление кластера

TL;DR: Бэкап Swarm = бэкап /var/lib/docker/swarm/ на менеджере. Содержит Raft-лог (конфигурация кластера, секреты, сервисы).

Состояние кластера (Raft log) хранится в /var/lib/docker/swarm.

Создание бэкапа

Выполнять на Manager ноде.

  1. Остановите Docker (рекомендуется для консистентности):
    systemctl stop docker
  2. Заархивируйте директорию:
    tar -czvf swarm-backup.tar.gz /var/lib/docker/swarm
  3. Запустите Docker:
    systemctl start docker

Восстановление

Если все менеджеры потеряны.

  1. На новой чистой машине остановите Docker.
  2. Удалите существующую папку swarm (если есть): rm -rf /var/lib/docker/swarm
  3. Распакуйте архив: tar -xzvf swarm-backup.tar.gz -C /
  4. Инициализируйте новый кластер из этих данных:
    docker swarm init --force-new-cluster

Типичные ошибки

ОшибкаСимптомРешение
Бэкапят только данные приложенияПотеряли конфигурацию кластера, секреты, стекиБэкапить /var/lib/docker/swarm/ + compose-файлы
Restore на работающем менеджереКонфликт с существующим Raft-состояниемdocker swarm init --force-new-cluster из бэкапа
Нет бэкапа секретов отдельноСекреты зашифрованы в Raft — не прочитать без кластераХранить оригиналы секретов в Vault/KMS