← К программе курса

Модуль 22 / 24

Backup и восстановление manager

DOCKER SWARM

Содержание
01

1. Цели и результат модуля

После модуля вы создадите согласованный offline backup manager state, проверите restore media и подтвердите service, config и secret после возврата follower.

  • понимать состав backup
  • останавливать Engine для consistency
  • проверять архив и checksum
  • отличать media test от disaster recovery
02

2. Теория: что хранит manager

Каталог /var/lib/docker/swarm содержит Raft log, snapshots, node identity, certificates и ключи manager. В Raft находятся service specs, networks, configs и encrypted secrets. Images, named volumes и application data в этот backup не входят.

Копия одного manager должна быть согласованной. Файловый backup работающего Engine может смешать состояния разных моментов.

03

3. Backup strategy, RPO и защита

Выберите follower, проверьте quorum, остановите на нём Engine и архивируйте весь swarm directory с ownership и modes. Храните копию вне node, шифруйте, ограничивайте доступ и фиксируйте checksum.

Частота задаёт RPO. RTO включает подготовку совместимого Engine, restore state, force-new-cluster при полной потере quorum и возврат workloads/data.

04

4. Restore media и полноценное восстановление

Распаковка в отдельный каталог и diff проверяют читаемость и точность media без риска для рабочего state. Это обязательная репетиция, но она не доказывает запуск восстановленного control plane.

Запуск из backup выполняют на изолированном node: нельзя одновременно поднимать копию с той же identity рядом с исходным cluster. Полный disaster-recovery drill выполняется в следующем модуле.

05

5. Методические указания

  • Создайте контрольные objects
  • Берите backup с follower
  • Останавливайте один Engine
  • Не копируйте unlock key вместе с backup
  • Проверяйте tar, checksum и diff
  • Сначала запускайте неизменённый node, затем cleanup
06

6. Лабораторная работа: контрольные объекты

Создайте config и secret. Inspect показывает metadata, но не раскрывает secret payload.

terminal
printf 'module-22-config\n' | ssh swarm-manager-3 docker config create swarm-m22-config -
printf 'module-22-secret\n' | ssh swarm-manager-3 docker secret create swarm-m22-secret -
ssh swarm-manager-3 docker config inspect swarm-m22-config
ssh swarm-manager-3 docker secret inspect swarm-m22-secret
ssh swarm-manager-3 docker node ls
ssh swarm-manager-3 docker service ls
07

7. Лабораторная работа: согласованный backup

Остановите manager-1 и создайте archive. Два других managers сохраняют quorum и service availability.

terminal
ssh swarm-manager-1 sudo systemctl stop docker
ssh swarm-manager-1 sudo tar -C /var/lib/docker -czf /tmp/swarm-m22-state.tgz swarm
ssh swarm-manager-1 sudo tar -tzf /tmp/swarm-m22-state.tgz
ssh swarm-manager-1 sudo sha256sum /tmp/swarm-m22-state.tgz
ssh swarm-manager-1 sudo du -h /tmp/swarm-m22-state.tgz
08

8. Лабораторная работа: restore rehearsal

Распакуйте archive только в /tmp и сравните деревья. Пустой вывод diff означает совпадение. Затем запустите исходный manager.

terminal
ssh swarm-manager-1 sudo rm -rf /tmp/swarm-m22-restore
ssh swarm-manager-1 sudo mkdir -p /tmp/swarm-m22-restore
ssh swarm-manager-1 sudo tar -C /tmp/swarm-m22-restore -xzf /tmp/swarm-m22-state.tgz
ssh swarm-manager-1 sudo diff -qr /var/lib/docker/swarm /tmp/swarm-m22-restore/swarm
ssh swarm-manager-1 sudo systemctl start docker
sleep 15
09

9. Проверка и диагностика

Подтвердите Reachable, 3/3, IDs контрольных objects и HTTPS.

terminal
ssh swarm-manager-3 docker node ls
ssh swarm-manager-3 docker service ls
ssh swarm-manager-3 docker config inspect swarm-m22-config --format 'config={{.ID}}'
ssh swarm-manager-3 docker secret inspect swarm-m22-secret --format 'secret={{.ID}}'
curl --fail --show-error --output /dev/null https://swarm-demo.goretskiy.pro/
  • tar повреждён — отвергните backup
  • diff отличается — исследуйте consistency
  • manager не Reachable — Engine, identity, certificates и time
  • objects есть, data нет — application data требует отдельного backup
10

10. Контроль, критерии освоения и cleanup

  • Что находится в Raft backup?
  • Почему volumes не входят?
  • Почему Engine останавливают?
  • Что доказывает checksum?
  • Чего не доказывает diff?
  • Почему restore node изолируют?

Модуль освоен, если archive читается, diff пуст, follower возвращён в quorum, objects и service доступны. Cleanup удаляет только учебные files, config и secret.

terminal
ssh swarm-manager-1 sudo rm -rf /tmp/swarm-m22-restore
ssh swarm-manager-1 sudo rm -f /tmp/swarm-m22-state.tgz
ssh swarm-manager-3 docker config rm swarm-m22-config
ssh swarm-manager-3 docker secret rm swarm-m22-secret
ssh swarm-manager-3 docker node ls
ssh swarm-manager-3 docker service ls