C-1 Velero: 已確認運作中(daily-awoooi-prod schedule, 13d, MinIO Available)
C-2 Host rsync 備份:
scripts/ops/backup-from-110.sh — 188 每日凌晨 1:00 rsync 備份 110
- Harbor registry data(最高優先)
- Gitea repos
- bitan-pharmacy.git(若存在)
- 成功寫入 /var/run/backup-110.last_success 供 Prometheus 監控
- 失敗時 Telegram 告警
ops/monitoring/alerts-unified.yml — 新增 HostBackupFailed 告警規則
C-3 DR SOP 文件:
docs/runbooks/disaster-recovery/DR-K8s-awoooi.md (<15分鐘)
docs/runbooks/disaster-recovery/DR-Nginx.md (<5分鐘)
docs/runbooks/disaster-recovery/DR-Harbor.md (<30分鐘)
docs/runbooks/disaster-recovery/DR-Bitan.md (<5分鐘)
docs/runbooks/disaster-recovery/DR-Stock.md (<5分鐘)
部署備份腳本說明 (需手動執行):
scp scripts/ops/backup-from-110.sh ollama@192.168.0.188:~/bin/backup-from-110.sh
ssh ollama@192.168.0.188 "chmod +x ~/bin/backup-from-110.sh && mkdir -p /backup/110/{harbor,gitea}"
ssh ollama@192.168.0.188 "echo '0 1 * * * /home/ollama/bin/backup-from-110.sh' | crontab -"
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1.9 KiB
1.9 KiB
DR-Harbor — Harbor Registry 資料毀損還原 SOP
目標時間: < 30 分鐘
觸發場景: Harbor 資料毀損、container image 消失,或 harbor-data volume 損壞
工具: rsync, docker compose
最後更新: 2026-04-11 (Claude Sonnet 4.6 Asia/Taipei)
前提確認
# 確認 188 上的 rsync 備份存在
ls -lh /backup/110/harbor/
# 期望:有檔案,最近修改時間 < 25 小時
# 確認最後備份時間
cat /var/run/backup-110.last_success | xargs -I{} date -d @{}
步驟 1:停止 Harbor(2 分鐘)
ssh wooo@192.168.0.110 "cd /opt/harbor && docker compose down"
步驟 2:備份現有損壞資料(1 分鐘)
ssh wooo@192.168.0.110 \
"sudo mv /var/lib/docker/volumes/harbor_harbor-data \
/var/lib/docker/volumes/harbor_harbor-data.bak.$(date +%Y%m%d)"
步驟 3:從 188 rsync 備份還原到 110(15 分鐘)
# 在 188 執行(rsync 方向:188 備份 → 110)
rsync -avz \
/backup/110/harbor/ \
wooo@192.168.0.110:/var/lib/docker/volumes/harbor_harbor-data/_data/
步驟 4:重啟 Harbor(5 分鐘)
ssh wooo@192.168.0.110 "cd /opt/harbor && docker compose up -d"
# 等待 Harbor 就緒
for i in $(seq 1 12); do
CODE=$(curl -s -o /dev/null -w '%{http_code}' http://192.168.0.110:5000 2>/dev/null)
[ "$CODE" = "200" ] || [ "$CODE" = "301" ] && echo "✅ Harbor ready" && break
echo "⏳ 等待 Harbor... ($i/12)"; sleep 10
done
步驟 5:驗收
# 確認 images 存在
curl -s http://192.168.0.110:5000/v2/_catalog | python3 -m json.tool
# 驗證 CD pipeline 可 pull(下一次部署自動驗證)
docker pull 192.168.0.110:5000/awoooi/api:latest
預防
scripts/ops/backup-from-110.sh每天凌晨 1:00 在 188 執行- 備份失敗時觸發 Telegram 告警
- 若 rsync 備份超過 25 小時未更新,Prometheus
BackupFailed告警觸發