1. Tổng Quan & Mục Tiêu
Phase 01 là nền tảng — nếu bỏ qua bất kỳ checklist nào, các phase sau sẽ thất bại hoặc phải làm lại từ đầu. Veeam v13 có nhiều thay đổi breaking changes (gRPC, PostgreSQL, NTLM removal) đòi hỏi chuẩn bị kỹ lưỡng hơn v12.
Mục tiêu Phase 01:
- Hoàn thiện sizing cho tất cả components (VSA, Proxy, Repository)
- Chuẩn bị network/firewall cho v13 gRPC ports (khác hoàn toàn v12)
- Tạo AD identity (gMSA accounts, security groups)
- Xác nhận license (Enterprise Plus hoặc VUL)
- Format & validate storage (XFS reflink, S3 Object Lock, tape HCL)
2. Breaking Changes v13 — Phải Biết Trước
Nếu đang nâng cấp từ v12, đọc kỹ từng dòng bảng sau trước khi tiến hành bất kỳ bước nào.
| Thành phần | v12 (cũ) | v13 (mới) | Tác động |
|---|---|---|---|
| Communication Protocol | WMI/RPC (port 135 + dynamic) | gRPC (port 9399, 9392) | Firewall rules thay đổi hoàn toàn — phải mở port mới, đóng port cũ |
| Database Engine | SQL Server (bắt buộc license) | PostgreSQL 17.6 (mặc định, miễn phí) | Tiết kiệm chi phí SQL license; migration path có sẵn nếu có dữ liệu v12 |
| Authentication | NTLM được hỗ trợ | NTLM bị xóa — chỉ Kerberos + Certificate | Hệ thống không join domain sẽ cần certificate auth; kiểm tra SPNs |
| Service Accounts | Password-based accounts OK | gMSA bắt buộc (DISA STIG) | Tạo gMSA trước khi deploy; không thể đổi sau khi HA cluster đã hình thành |
| Boot Mode | BIOS boot chấp nhận được | UEFI bắt buộc cho JeOS | VM template phải UEFI; Secure Boot khuyến nghị; BIOS sẽ từ chối deploy |
| OS Platform (JeOS) | Photon OS (VMware) | Rocky Linux 9 (DISA STIG compliant) | Không backward compatible; phải redeploy JeOS VMs, không upgrade tại chỗ |
3. Hướng Dẫn Kích Thước Chi Tiết
VSA Nodes x2 — Node chính (Site Chính) + Node DR (Site DR)
| Tài nguyên | Tối thiểu (< 100 VMs) | Khuyến nghị (100–500 VMs) | Enterprise (500+ VMs) |
|---|---|---|---|
| vCPU | 4 | 8 | 16 |
| RAM | 16 GB | 32 GB | 64 GB |
| OS Disk (SSD) | 100 GB | 200 GB | 200 GB |
| PostgreSQL Data Disk | 50 GB | 150 GB | 500 GB+ |
| NIC | 2×1GbE | 2×10GbE | 2×25GbE |
| Replication Link (WAL sync) | 1 Gbps | 10 Gbps | 10 Gbps dedicated |
Proxy JeOS Backup Proxy (Rocky Linux JeOS)
# vCPU = số concurrent tasks (jobs chạy đồng thời) vCPU = concurrent_tasks # RAM = base 2GB + 1GB cho mỗi concurrent task RAM_GB = 2 + (1 × concurrent_tasks) # concurrent_tasks phụ thuộc backup window concurrent_tasks = ceil(total_VMs / backup_window_hours × change_rate_factor)
- • VMs cần backup/ngày = 100
- • Throughput cần = 100 VMs ÷ 8h = 12.5 VMs/h → làm tròn 8 tasks đồng thời
- • vCPU = 8
- • RAM = 2 + (1 × 8) = 10 GB (làm tròn lên 12 GB)
- • NIC tối thiểu: 10GbE để không bị bottleneck
| Môi trường | vCPU | RAM | Số Proxy Node |
|---|---|---|---|
| < 50 VMs | 4 | 6 GB | 1 (HA = 2) |
| 50–200 VMs | 8 | 12 GB | 2 |
| 200–500 VMs | 16 | 20 GB | 3–4 |
Hardened Repository JeOS — Immutable Linux Repository
# Storage = (daily_change_GB × retention_days × 1.2) + full_backup_GB
# 1.2 = overhead factor cho dedupe metadata + journal
# Ví dụ: 500 VMs, avg VM 100GB, change rate 5%/ngày, giữ 30 ngày
daily_change_GB = 500 VMs × 100 GB × 5% = 2,500 GB/ngày
full_backup_GB = 500 VMs × 100 GB × 0.4 (sau dedupe/compress ~40%)
= 20,000 GB = ~20 TB
storage_needed = (2,500 GB × 30 days × 1.2) + 20,000 GB
= 90,000 GB + 20,000 GB
= 110,000 GB ≈ 110 TB
# Kết quả: Cần ~110 TB cho Hardened Repo tier này
Storage Tiers SOBR 3-Tier Architecture
| Tier | Loại Storage | Filesystem | Retention | Mục đích |
|---|---|---|---|---|
| Performance | NAS SSD / iSCSI | XFS (reflink) | 14–30 ngày | Restore nhanh, hot data |
| Capacity | S3 Compatible / Object | Object Storage | 90 ngày | Cold data, tiết kiệm chi phí |
| Archive | Tape Library | GFS rotation | 1 năm / 7 năm | Compliance, legal hold, DR |
4. Cấu Hình Mạng & Firewall v13
v13 loại bỏ WMI (port 135/TCP + 49152-65535 dynamic) — giảm attack surface và đơn giản hóa firewall rules. Toàn bộ traffic chạy qua gRPC.
| Source | Destination | Port | Protocol | Mục đích |
|---|---|---|---|---|
| Admin Console | VSA Node | 9392 | TCP | VBR Console → VSA gRPC API |
| VSA | Proxy / Repo / Guest | 9399 | TCP | VSA → Components (gRPC control) |
| Proxy | Repository | 2500–3300 | TCP | Data transport (backup streams) |
| VSA | VSA Node 2 (HA) | 10443 | TCP | HA cluster inter-node sync |
| VSA | vCenter Server | 443 | HTTPS | vSphere API calls |
| VSA / Proxy | ESXi hosts | 902 | TCP | vSphere data port (NBDSSL) |
| VSA | PostgreSQL | 5432 | TCP | DB connection (local/remote) |
| All Veeam VMs | DNS Server | 53 | UDP/TCP | Name resolution (FQDN required) |
| All Veeam VMs | NTP Server | 123 | UDP | Time sync (Kerberos requirement: ±5 min) |
- • Cluster IP: Pre-reserve 1 IP trong cùng subnet với Node 1 và Node 2 (L2 requirement)
- • DNS A record:
veeam-cluster.domain.local → Cluster IP(cập nhật tự động khi failover) - • Node 1 A record:
veeam-node1.domain.local - • Node 2 A record:
veeam-node2.domain.local - • QUAN TRỌNG: Tất cả admin console và API calls phải trỏ vào Cluster IP, KHÔNG phải IP của node riêng lẻ
5. Thiết Lập Active Directory
Để tuân thủ DISA STIG và Zero Trust, triển khai Veeam trong một AD forest riêng (management forest) không trust lẫn nhau với production forest. Điều này đảm bảo compromise production AD không ảnh hưởng đến backup infrastructure.
PowerShell — Tạo gMSA và Security Groups:
# ============================================================
# Step 1: Tạo KDS Root Key (cần 1 lần duy nhất per forest)
# Cần chờ 10h để replicate, hoặc dùng -EffectiveImmediately cho lab
# ============================================================
Add-KdsRootKey -EffectiveTime ((Get-Date).AddHours(-10))
# Verify:
Get-KdsRootKey
# ============================================================
# Step 2: Tạo gMSA account chính cho Veeam services
# ============================================================
New-ADServiceAccount `
-Name "svc-veeam-backup" `
-DNSHostName "svc-veeam-backup.domain.local" `
-PrincipalsAllowedToRetrieveManagedPassword "VeeamServers-Group" `
-ServicePrincipalNames "veeam/veeam-node1.domain.local","veeam/veeam-cluster.domain.local" `
-Enabled $true `
-Description "Veeam v13 Backup Service gMSA"
# Verify gMSA hoạt động từ Node 1 (chạy trên VSA VM sau khi join domain):
Test-ADServiceAccount -Identity "svc-veeam-backup"
# Expected output: True
# ============================================================
# Step 3: Tạo Security Groups
# ============================================================
$groups = @(
@{Name="VeeamAdmins"; Description="Full VSA access — giới hạn 2-3 người"},
@{Name="VeeamBackupOps"; Description="Create/edit backup jobs, no delete"},
@{Name="VeeamRestoreOps"; Description="Restore only — helpdesk tier"},
@{Name="VeeamSecurityOfficer"; Description="Approve 4-eyes actions — phải tách biệt khỏi VeeamAdmins"},
@{Name="VeeamServers-Group"; Description="Computer accounts được phép lấy gMSA password"}
)
foreach ($g in $groups) {
New-ADGroup `
-Name $g.Name `
-GroupScope Global `
-GroupCategory Security `
-Path "OU=VeeamGroups,OU=ServiceAccounts,DC=domain,DC=local" `
-Description $g.Description
Write-Host "Created: $($g.Name)" -ForegroundColor Green
}
# ============================================================
# Step 4: Thêm VSA computer accounts vào VeeamServers-Group
# ============================================================
Add-ADGroupMember -Identity "VeeamServers-Group" `
-Members (Get-ADComputer "VEEAM-NODE1"), (Get-ADComputer "VEEAM-NODE2")
# ============================================================
# Step 5: Thêm admin users vào groups
# ============================================================
Add-ADGroupMember -Identity "VeeamAdmins" -Members "htran","admin-veeam"
Add-ADGroupMember -Identity "VeeamSecurityOfficer" -Members "sec-officer" # Người khác!
VeeamSecurityOfficer KHÔNG được là thành viên của VeeamAdmins — đây là nguyên tắc separation of duties. Security Officer là người phê duyệt các thao tác nguy hiểm (xóa repo, vô hiệu hóa immutability), không phải người thực hiện.
6. Cấp Phép (Licensing)
| Tính năng | Standard | Enterprise | Enterprise Plus / VUL |
|---|---|---|---|
| HA Cluster (2-node) | |||
| SOBR Capacity Tier (S3) | |||
| SOBR Archive Tier (Tape/Glacier) | |||
| Veeam ONE Monitoring | |||
| M365 Backup Integration | |||
| Instant Recovery bất kỳ workload | Giới hạn |
Deployment plan này dùng HA Cluster + SOBR 3 tiers + Veeam ONE → bắt buộc Enterprise Plus hoặc Universal License (VUL). VUL linh hoạt hơn vì tính theo workload units, không phải socket-based.
7. Danh Sách Kiểm Tra Lưu Trữ
# Format disk với XFS reflink (bắt buộc cho synthetic full) mkfs.xfs -m reflink=1 -m crc=1 /dev/sdX # Mount với recommended options echo "/dev/sdX /backups xfs defaults,noatime,nodiratime 0 0" >> /etc/fstab mount /backups # Verify reflink được bật xfs_info /backups | grep reflink # Expected output: reflink=1 rmapbt=1
# AWS CLI — tạo bucket với Object Lock
aws s3api create-bucket \
--bucket veeam-backup-immutable \
--region us-east-1 \
--object-lock-enabled-for-bucket
# Set default retention — Compliance mode, 30 ngày
aws s3api put-object-lock-configuration \
--bucket veeam-backup-immutable \
--object-lock-configuration '{
"ObjectLockEnabled": "Enabled",
"Rule": {
"DefaultRetention": {
"Mode": "COMPLIANCE",
"Days": 30
}
}
}'
Verify thiết bị tape tại: veeam.com/hardware-compatibility-list — lọc theo "Tape" và model cụ thể. Tape drives không có trong HCL sẽ không được hỗ trợ.
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"s3:PutObject", // Ghi backup
"s3:GetObject", // Đọc để restore
"s3:DeleteObject", // Xóa expired backups (vẫn bị Compliance mode chặn nếu chưa hết hạn)
"s3:ListBucket", // Liệt kê files trong bucket
"s3:GetObjectRetention", // Đọc retention info
"s3:PutObjectRetention" // Set/extend retention
],
"Resource": [
"arn:aws:s3:::veeam-backup-immutable",
"arn:aws:s3:::veeam-backup-immutable/*"
]
}]
}
8. Checklist Trước Triển Khai (15+ Items)
Tất cả 15 checkboxes trên đều tích xong. Không được tiến sang Phase 02 nếu còn item nào chưa hoàn thành.
9. Đánh Giá Rủi Ro
| Rủi ro | Mức độ | Biện pháp giảm thiểu |
|---|---|---|
| NTLM removal gây break xác thực với legacy systems | CAO | Audit tất cả service accounts xem có dùng NTLM không; chuyển sang Kerberos trước |
| S3 Governance mode nhầm thành Compliance — backup không immutable | CAO | Verify bằng AWS CLI get-object-lock-configuration sau khi tạo bucket |
| Node 1 & Node 2 không cùng L2 subnet — HA cluster không form được | TRUNG BÌNH | Verify cùng VLAN/subnet trước; xét HA stretch cluster nếu cross-site |
| XFS reflink=0 — synthetic full backup rất chậm | TRUNG BÌNH | Chạy xfs_info | grep reflink ngay sau format và ghi vào checklist |
| KDS Root Key chưa replicate — gMSA không deploy được | TRUNG BÌNH | Dùng -EffectiveTime AddHours(-10) hoặc chờ 10h sau khi tạo KDS key |
| License Enterprise (không phải Plus) — HA cluster bị lock | THẤP | Xác nhận tier license với Veeam account team trước khi deploy |