← До програми курсу

Модуль 22 / 24

Backup і відновлення manager

DOCKER SWARM

Зміст
01

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

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

  • розуміти склад backup
  • зупиняти Engine
  • перевіряти archive і checksum
  • відрізняти media test від disaster recovery
02

2. Теорія: стан manager

/var/lib/docker/swarm містить Raft log, snapshots, node identity, certificates і keys. Raft містить service specs, networks, configs та encrypted secrets. Images, volumes і application data не входять.

Backup одного manager має бути consistent; copy активного Engine може змішати різні моменти.

03

3. Backup strategy, RPO та захист

Оберіть follower, перевірте quorum, зупиніть Engine і архівуйте swarm directory зі збереженням ownership та modes. Зберігайте copy поза node, шифруйте й фіксуйте checksum.

Frequency визначає RPO. RTO включає Engine, restore, force-new-cluster та повернення workloads/data.

04

4. Restore media та повне відновлення

Extract в окремий directory і diff перевіряють media без ризику для active state, але не доводять запуск restored control plane.

Backup запускають на isolated node, щоб duplicate identity не зустріла original cluster. Повний DR drill — у наступному модулі.

05

5. Методичні вказівки

  • Створіть контрольні objects
  • Backup з follower
  • Stop один Engine
  • Не зберігайте unlock key разом
  • Перевірте tar, checksum і diff
  • Запустіть unchanged node до cleanup
06

6. Лабораторна робота: контрольні об’єкти

Створіть config і secret. Inspect не розкриває 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. Лабораторна робота: consistent backup

Зупиніть manager-1 і створіть archive. Два managers зберігають quorum.

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

Extract лише в /tmp і порівняйте trees. Порожній diff означає match. Запустіть original 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 backup
10

10. Контроль, критерії засвоєння та cleanup

  • Що містить Raft backup?
  • Чому volumes не входять?
  • Навіщо stop Engine?
  • Що доводить checksum?
  • Чого не доводить diff?
  • Навіщо isolation?

Модуль засвоєно, якщо archive читається, diff порожній, follower у quorum, objects і service доступні. Cleanup видаляє лише training files та objects.

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