Tekirdağ’da plastik ambalaj üreten 280 çalışanlı bir firma, 24 TB üretim + ERP + dosya sunucusu verisini eski LTO kasetlere yedekliyordu. Kaset değiştirme manuel, restore tatbikatı yok, son 3 ayın yedekleri okunamıyor. 4 ayda Azure Backup hibrit mimariye geçildi. Bu yazı projeyi anlatıyor.
Mimarinin Ana Bileşenleri
| Bileşen | Görev |
|---|---|
| Recovery Services Vault (RSV) | Merkezi yedek deposu, Azure NorthEurope |
| MARS Agent | File server (8 TB) → doğrudan vault’a |
| Azure Backup Server (MABS) | On-prem 22 VM + SQL → MABS → RSV |
| Azure VM Backup | Bulutta çalışan 14 VM (test/staging) |
| Veeam B&R | SAP B1 + ERP DB — application-aware backup |
| Immutable Vault | Ransomware koruması, 14 gün soft delete |
Recovery Services Vault Tasarımı
az backup vault create -g rg-backup -n rsv-prod-tr
--location northeurope
# Cross-region restore aktif (ekstra GRS)
az backup vault backup-properties set -g rg-backup -n rsv-prod-tr
--backup-storage-redundancy GeoRedundant
--cross-region-restore-flag true
# Soft delete + immutability
az backup vault backup-properties set -g rg-backup -n rsv-prod-tr
--soft-delete-feature-state Enable
--soft-delete-retention 14
# Vault'u immutable yap (silinmesin)
az dataprotection backup-vault update -g rg-backup --vault-name rsv-prod-tr
--immutability-state Locked
Backup Politikası: GFS Retention
Policy: "Critical-GFS"
Schedule:
- Daily backup: 22:00
- Differential incremental during day (SQL only)
Retention:
- Daily: 30 gün
- Weekly (her Pazar): 12 hafta
- Monthly (her ayın 1'i): 36 ay
- Yearly (1 Ocak): 7 yıl
Toplam recovery point: ~~30 + 12 + 36 + 7 = 85 nokta
MARS Agent Kurulumu (File Server)
PS> .MARSAgentInstaller.exe /q
PS> Register-OBMachine -VaultCredentials "vault-cred.vaultcredentials"
PS> $passphrase = ConvertTo-SecureString -String "32CharRandomPassphrase..." -AsPlainText -Force
PS> Set-OBMachineSetting -EncryptionPassphrase $passphrase
# Backup policy
PS> $policy = New-OBPolicy
PS> $sched = New-OBSchedule -DaysofWeek Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday -TimesofDay 22:00
PS> Set-OBSchedule -Policy $policy -Schedule $sched
PS> $retention = New-OBRetentionPolicy -RetentionDays 30 -RetentionWeeklyPolicy ...
PS> Set-OBRetentionPolicy -Policy $policy -RetentionPolicy $retention
PS> $files = New-OBFileSpec -FileSpec @("E:Production","F:Shares")
PS> Add-OBFileSpec -Policy $policy -FileSpec $files
PS> Set-OBPolicy -Policy $policy
SQL Server Backup (MABS)
MABS Console:
- Add SQL Server: ERP-SQL-01
- Protection group: "SQL-Critical"
- Database list: ERPProd, ERPLog, MES_Prod
- Recovery goal:
- Short-term disk: 7 gün, 4 saatlik incremental
- Long-term Azure: GFS 7 yıl
- Express full: günde 1 (gece 23:00)
- Log backup: 15 dakikada bir (RPO 15 dk)
Azure VM Backup
# Backup policy
az backup policy create -g rg-backup --vault-name rsv-prod-tr
--policy "vm-daily-gfs"
--backup-management-type AzureIaasVM
--policy-file vm-policy.json
# 14 VM'i policy'e ekle
for vm in vm-app01 vm-app02 vm-web01 vm-web02 ... ; do
az backup protection enable-for-vm -g rg-backup --vault-name rsv-prod-tr
--vm $vm --policy-name vm-daily-gfs
done
Bandwidth Throttling
İlk full backup 8 TB. Throttling olmazsa internet hattı tıkanır. Çalışma saatlerinde sınırlı:
PS> Set-OBMachineSetting `
-WorkDay Mon,Tue,Wed,Thu,Fri `
-StartWorkHour "08:00" -EndWorkHour "18:00" `
-WorkHourBandwidth 8MB `
-NonWorkHourBandwidth 80MB
İlk full 6 gece sürdü. Sonraki incremental günde 30-50 GB.
Restore Tatbikatı (8 Hafta Sonra)
| Senaryo | Süre | Sonuç |
|---|---|---|
| Tek dosya restore (file server) | ~~3 dk | OK |
| 50 GB klasör restore | ~~22 dk | OK |
| SQL DB point-in-time restore (15 dk öncesi) | ~~28 dk | OK |
| Tüm VM restore (alternatif lokasyon) | ~~1 saat 40 dk | OK |
| Cross-region restore (Northeurope → Westeurope) | ~~3 saat | OK |
| Tüm site DR (22 VM + 8 TB file) | ~~14 saat | RTO hedefi 24 saat, OK |
Ransomware Tatbikatı
Test ortamında deliberate olarak file server “encrypt” edildi (test dataset), sonra restore:
- 14:00 — saldırı başladı, file server encrypted
- 14:35 — tespit (Defender alert)
- 14:50 — IT acil koordinasyon
- 15:15 — RSV’den son temiz snapshot seçildi (14:00 öncesi 23:00 backup’ı)
- 15:25 — alternate VM’e restore başladı
- 17:40 — tüm 8 TB restore tamam
- 18:10 — DNS cutover yeni file server
- RPO = 15 saat (gecelik backup), RTO = 4 saat 10 dk
Maliyet
| Kalem | Aylık (USD) |
|---|---|
| RSV instance fee (35 backed-up source) | $245 |
| Storage GRS (~~24 TB after dedup/compression ~~14 TB) | $420 |
| Cross-region restore storage | $80 |
| MABS server VM (on-prem) | — |
| Toplam aylık | ~~$745 |
Yıllık ~$8.940. Eski LTO maliyeti (kaset + drive bakım + offsite kurye) ~~$11.000/yıl. Bulut daha ucuz + güvenli + automated.
Sahada Düşülen Üç Tuzak
- Soft delete’i ve immutable vault’u atlamak: Ransomware ilk önce backup’a saldırır. Soft delete + immutability lock kritik.
- İlk full backup planlamamak: 8 TB ilk full internet’i 6 gün tıkar. Throttling + Azure Data Box (offline transfer) seçeneği değerlendirilmeli.
- Restore tatbikatı yapmamak: “Backup var” derken “restore çalışıyor mu” test edilmedi. 6 ayda bir tatbikat zorunlu.
CloudSpark olarak Azure Backup mimarisi, Recovery Services Vault tasarımı, MABS deployment, GFS retention politikası, immutable vault konfigürasyonu ve ransomware kurtarma tatbikatları için danışmanlık veriyoruz.



