백업 파이프라인 문서화, etcd-1/relay4wd 서비스 정보 추가

This commit is contained in:
kappa
2026-03-17 08:12:22 +09:00
parent 9341e5766d
commit 3b3e0f4b47
2 changed files with 66 additions and 0 deletions

64
infra/backup.md Normal file
View File

@@ -0,0 +1,64 @@
---
title: 백업 파이프라인
updated: 2026-03-17
tags: [infra, backup]
---
## incus 백업 (inbest 데이터)
3단계 백업 파이프라인. 소스: incus-kr2 inbest 프로젝트 `inbest-data` 커스텀 볼륨.
### 1. rsync → NAS
- **호스트**: incus-kr2
- **스크립트**: `/usr/local/bin/backup-inbest.sh`
- **systemd**: `backup-inbest.timer` / `backup-inbest.service`
- **스케줄**: 매일 03:00 (±5분)
- **소스**: `/var/lib/incus/storage-pools/default/custom/inbest_inbest-data/`
- **대상**: `kaffa@192.168.205.100:/volume1/incus/inbest/`
- **제외**: `*/data/session/`
- **SSH 키**: `/home/kaffa/.ssh/id_ed25519`
- **옵션**: `rsync -rlz --omit-dir-times --delete` (Synology 퍼미션 호환)
### 2. btrfs 스냅샷 (NAS)
- rsync 완료 직후 자동 실행 (같은 스크립트)
- **스냅샷 경로**: `/volume1/incus/.snapshots/incus-YYYYMMDD`
- **타입**: 읽기 전용 (`btrfs subvolume snapshot -r`)
- **보관**: 3일 초과 자동 삭제
- **용도**: 논리적 복구 (실수 삭제/덮어쓰기), NAS 내부에서만 유효
### 3. R2 sync (NAS → Cloudflare R2)
- **호스트**: Synology NAS (192.168.205.100)
- **systemd**: `r2-incus-backup.timer` / `r2-incus-backup.service`
- **스케줄**: 매일 06:00 (±5분)
- **소스**: `/volume1/incus/`
- **대상**: R2 버킷 `incus-backup` (APAC 리전)
- **제외**: `.snapshots/**`, `@eaDir/**`
- **rclone**: Docker (`rclone/rclone:latest`), 설정 `/volume1/docker/rclone/rclone.conf`
- **성능**: transfers 32, checkers 32, 첫 전체 업로드(7.97GB) 약 12분
- **TimeoutStartSec**: 3600 (1시간)
### NAS 설정 메모
- Synology sudo PATH 문제: `/etc/sudoers.d/path``secure_path` 추가 (2026-03-17)
- NAS `/volume1/incus/inbest/` 소유자: `kaffa:users` (rsync 쓰기용)
- btrfs subvolume: `/volume1/incus` (ID 741)
### 복구 시나리오
| 상황 | 복구 방법 |
|------|----------|
| 파일 실수 삭제/덮어쓰기 | NAS btrfs 스냅샷에서 복원 |
| NAS 장애 | R2에서 rclone copy로 복원 |
| kr2 장애 | NAS rsync 미러에서 복원 |
## k3s 백업 (기존)
- **호스트**: Synology NAS
- **systemd**: `r2-backup.timer` / `r2-backup.service`
- **스케줄**: 매일 05:00 (±5분)
- **소스**: `/volume1/k3s-backup/`
- **대상**: R2 버킷 `k3s-backup` (ENAM 리전)
- **rclone**: Docker, transfers 4, checkers 8

View File

@@ -31,9 +31,11 @@ tags: [infra, network, kr-zone, openwrt]
| Anvil, Ironclad | K8s 클러스터 (kr1) | kubectl | | Anvil, Ironclad | K8s 클러스터 (kr1) | kubectl |
| Prometheus, Grafana | jp1 (monitoring) | incus exec --project monitoring | | Prometheus, Grafana | jp1 (monitoring) | incus exec --project monitoring |
| DB 서버 | jp1 (db) | incus exec --project db | | DB 서버 | jp1 (db) | incus exec --project db |
| etcd (relay4wd용) | jp1 (db), etcd-1 (10.253.102.11) | etcd 2379 |
| [[vault]] | 인프라 내부 | vault CLI / MCP | | [[vault]] | 인프라 내부 | vault CLI / MCP |
| [[gitea]] | 자체 호스팅 (gitea.anvil.it.com) | git push → Gitea Act Runner | | [[gitea]] | 자체 호스팅 (gitea.anvil.it.com) | git push → Gitea Act Runner |
| BunnyCDN | 외부 SaaS | BunnyCDN MCP 서버 / API | | BunnyCDN | 외부 SaaS | BunnyCDN MCP 서버 / API |
| [[backup]] | kr2 → NAS → R2 | systemd timer, rclone |
## Incus 프로젝트 ## Incus 프로젝트