Модуль 22 / 24
Backup і відновлення manager
Зміст
1. Цілі та результат модуля
Після модуля ви створите consistent offline backup manager state, перевірите restore media та service, config і secret після повернення follower.
- розуміти склад backup
- зупиняти Engine
- перевіряти archive і checksum
- відрізняти media test від disaster recovery
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 може змішати різні моменти.
3. Backup strategy, RPO та захист
Оберіть follower, перевірте quorum, зупиніть Engine і архівуйте swarm directory зі збереженням ownership та modes. Зберігайте copy поза node, шифруйте й фіксуйте checksum.
Frequency визначає RPO. RTO включає Engine, restore, force-new-cluster та повернення workloads/data.
4. Restore media та повне відновлення
Extract в окремий directory і diff перевіряють media без ризику для active state, але не доводять запуск restored control plane.
Backup запускають на isolated node, щоб duplicate identity не зустріла original cluster. Повний DR drill — у наступному модулі.
5. Методичні вказівки
- Створіть контрольні objects
- Backup з follower
- Stop один Engine
- Не зберігайте unlock key разом
- Перевірте tar, checksum і diff
- Запустіть unchanged node до cleanup
6. Лабораторна робота: контрольні об’єкти
Створіть config і secret. Inspect не розкриває payload.
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 ls7. Лабораторна робота: consistent backup
Зупиніть manager-1 і створіть archive. Два managers зберігають quorum.
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.tgz8. Лабораторна робота: restore rehearsal
Extract лише в /tmp і порівняйте trees. Порожній diff означає match. Запустіть original manager.
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 159. Перевірка та діагностика
Перевірте Reachable, 3/3, IDs objects і HTTPS.
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. Контроль, критерії засвоєння та cleanup
- Що містить Raft backup?
- Чому volumes не входять?
- Навіщо stop Engine?
- Що доводить checksum?
- Чого не доводить diff?
- Навіщо isolation?
Модуль засвоєно, якщо archive читається, diff порожній, follower у quorum, objects і service доступні. Cleanup видаляє лише training files та objects.
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