forked from apache/cloudstack
-
Notifications
You must be signed in to change notification settings - Fork 13
Veeam Backup 플러그인 개발 #788
Copy link
Copy link
Open
Description
Veeam Custom Backup Plug-in
Veeam Backup & Replication과 Mold 환경을 연동하기 위한 Custom Backup Plug-in 구조를 설계 및 구현한다.
본 Plug-in은 Veeam의 Script Hook 기능과 REST API를 활용하여 Mold 백업 정책과 Veeam Backup Job을 연결하는 역할을 한다.
초기 구현은 Script 기반 Plug-in 방식을 사용하고, 이후 필요 시 REST API 기반 백업 제어 기능으로 확장할 수 있도록 설계한다.
개발목적
- Mold 가상머신 백업 정책과 Veeam Backup Job 연동
- Veeam Script Hook 기반 Custom Backup Plug-in 구현
- Mold Backup Catalog와 Veeam Backup 정보 동기화
- 향후 REST API 기반 Backup / Restore 제어 구조 확장
개발 범위
Backup Integration
- Mold Backup Offering ↔ Veeam Job 매핑
- Script 기반 Backup Hook 실행
- Backup Job 실행 시 Mold API 연동
Backup Metadata Sync
- Veeam Backup Session 조회
- Mold Backup Catalog 동기화
Script 기반 Backup Plug-in
- Pre-freeze Script
- Post-thaw Script
- Job Script
아키텍처
Mold
└─ Backup Trigger
└─ Veeam Backup Job
├─ Pre-freeze Script
│ └─ Mold API 호출
├─ Backup 수행
└─ Post-thaw Script
└─ Cleanup / 로그 기록
Script 기반 Plug-in 흐름
1. Veeam Backup Job 실행
2. Pre-freeze Script 실행
- Mold API 호출
- 백업 대상 VM 조회
- snapshot 준비
3. Veeam Backup 수행
4. Post-thaw Script 실행
- 백업 staging 파일 삭제
- cleanup 수행
Pre-freeze Script
- 백업 시작 전에 실행되는 Script
역할
- Mold API 호출
- 백업 대상 VM 조회
- snapshot 또는 staging 준비
#!/bin/sh
LOG="/var/log/veeam-pre-freeze.log"
echo "$(date '+%F %T') START pre-freeze" >> "$LOG"
/usr/local/bin/mold-pre-backup.sh >> "$LOG" 2>&1
RC=$?
echo "$(date '+%F %T') END pre-freeze rc=$RC" >> "$LOG"
exit $RC
Post-thaw Script
- 백업 완료 후 실행되는 Script
역할
- staging 파일 삭제
- cleanup 수행
- 로그 기록
#!/bin/sh
LOG="/var/log/veeam-post-thaw.log"
echo "$(date '+%F %T') START post-thaw" >> "$LOG"
/usr/local/bin/mold-post-backup.sh >> "$LOG" 2>&1
RC=$?
echo "$(date '+%F %T') END post-thaw rc=$RC" >> "$LOG"
exit $RC
Backup Catalog 동기화
- Mold에서는 Veeam 백업 정보를 동기화하기 위한 Sync Scheduler가 필요하다.
Sync Scheduler 실행
→ Veeam Backup Session 조회
→ Backup 목록 확인
→ Mold Backup Catalog 업데이트
→ 삭제된 Backup 정리
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels