在Business Continuity and Disaster Recovery (BCDR) 的策略中,包含有Site Recovery service與Backup service兩種服務來達到“企業資訊環境的永續”與“災難復原”。
Site Recovery 將在物理機和虛擬機 (VM) 上運行的工作負載從primary複製到secondary location。當primary發生outage 時,可以fail over到secondary location,並從那裡訪問應用程序。在primary再次運行後,您可以 fail back回去。可以達到
- 跨Azure regions的Azure VMs複寫
- On-premises VMs, Azure Stack VMs, and physical servers之間的複寫.
在原廠教材中可以看到有這三種複寫架構
- “VMware to Azure” disaster recovery architecture
- “Hyper-V to Azure” disaster recovery architecture
- “Azure VM to Azure” disaster recovery architecture
------------------------------------------------------------------------------
此篇文章介紹使用VMware to Azure disaster recovery architecture - Classic,複寫on-premises VMware到Azure。
Configuration server machine
一台部屬於on-premises的機器。建議部署在VMware VM,可以下載OVF 模板來進行部署,裡面會包含元件有:
- configure server: 作為on-premises和 Azure 之間的通信的角色,
- process server : 預設會安裝於configuration server,接收要同步的資料後,優化儲存(caching),壓縮(compression),加密(encryption),再傳送到Azure Storage,也會安裝Mobility Service在要同步的VMs裡。可以執行automatic discovery來認機器,當VM數量增加時,也可以另外新增其他process server 來處理更大量的同步資料,舒緩資料流交通。
- master target server : 預設安裝於configuration server,用來處理當需要從azure failback回來的任務,也可以設置多台來處理大量的工作。
於下圖可以看出在on-premises中部屬configuration server與process server的結合,process server會自動安裝部屬Mobility Service在左方要同步的機器(Replicated machines)上,也可以手動部屬,用來抓取記憶體中的資料,在左方還有Master target用於failback,中間透過設置網路Data Channel來同步資料到Azure。
Outbound network connectivity
部屬完on-premises個元件後,接著就要設置到Azure的通道,需要設定『外出』(Outbound)的防火牆設定。
使用 URL-based 的防火牆proxy 來控制 outbound connectivity,允許這些存取URLs
- *.blob.core.windows.net
- login.microsoftonline.com
- *.hypervrecoverymanager.windowsazure.com
- *.servicebus.windows.net
Replication process
複寫(replication)是block-level的,可以通過internet訪問到Azure storage public endpoints,有別於透過public IP也可以設定site-to-site VPN。在同步前一樣要先有一個初始化(Initial)目前狀態的動作,接著才去同步差異、累進的資料,而資料會先送往在Azure的cache storage account內,資料與recover point 會存放在Azure Managed Disk(Azure Site Recovery seed disk),recover point。而在on-premises的 VM上是透過Mobility Service,預設會有replication policy :
- RPO threshold : 這個設定不會影響複寫,而是監控"故障移轉時的資料損失(RPO)"是否到達設置的告警值。
- Recovery point retention : 指的是recovery points保留多久,代表可以回到多久以前的資料,預設為24hr,premium storage最大可以設置24hr,standard storage則可以設定為72hr。
- App-consistent snapshots : snapshot的頻率可以為1 到 12小時,預設為每4小時,這個snaptshot是標準的Azure blob snapshots,在VM上要啟動VSS snapshot來達到這個功能,VSS snapshot是一個基於時間點一致性的點(bookmarks)。
如下圖,在左方的on-premises端:
- configuration server 要開啟 port HTTPS 443 inbound接收來自上方VMs的存取,並同時開啟port HTTPS 443 outbound,存取Azure。
- process server 則是開啟port HTTPS 9443 inbound(可以修改),接收來自VM的複寫資料,並同時開啟port 443 outbound將資料再送往Azure storage
Resynchronization process
有時VM與PS之間或PS與 Azure 之間可能存在網絡連接問題。為避免數據完整性問題並最大限度地降低數據傳輸成本,Site Recovery 會執行Resynchronization。另外在機器被強制關閉或做一些調整(例如磁盤大小配置更改)也能執行。
Resynchronization僅將增量數據發送到 Azure。通過計算VM和存儲在 Azure 中的數據之間的數據checksums,最大限度地減少本地和 Azure 之間的數據傳輸。
默認情況下,重新同步計劃在離峰時段自動運行。也可以手動重新同步 VM。為此,登入Azure portal, 選擇 VM > Resynchronize.。
Multi-VM consistency
當有多台虛擬機需要被一起複寫,當在故障轉移時可以共享crash-consistent 與 app-consistent的 recovery points時,可以將它們聚集到一個replication group中。注意會影響效能,應該僅用於運行需要跨所有機器保持一致性的工作負載的虛擬機。
關於一致性Consistency
當執行故障移轉時,能夠根據snapshot的restore point,在目標環境做還原,來處理根據是否需要操作系統和 VM 上運行的應用程序是一致的,來選擇snapshot的類型
- Crash-consistent(預設) :不包含記憶體內的資料,所以不保證OS與app的資料一致,預設每五分鐘創建一個Crash-consistent的restore point。
- App-consistent :包含Crash-consistent的所有內容加上記憶體內正在進行的交易。需要使用磁碟區陰影複製服務(Volume Shadow Copy Service, VSS):
1) Azure Site Recovery uses Copy Only backup (VSS_BT_COPY) method which does not change Microsoft SQL's transaction log backup time and sequence number
2) When a snapshot is initiated, VSS perform a copy-on-write (COW) operation on the volume.
3) Before it performs the COW, VSS informs every app on the machine that it needs to flush its memory-resident data to disk.
4) VSS then allows the backup/disaster recovery app (in this case Site Recovery) to read the snapshot data and proceed.
補充:VSS_BACKUP_TYPE列舉出要使用VSS writer/requester coordination的備份種類有哪些,請參考:
VSS_BACKUP_TYPE
關於Failover and Failback
設置完replication之後,可以運行DR Drill 演練備援功能,可以根據需要運行failover和failback。
可以為單台機器,或創建recovery plans同時對多個 VM 進行故障轉移。recovery plans比單機故障轉移的優勢包括: 可以通過在recovery plans中包含應用程序中的所有 VM 來達到對app-dependencies進行建模。也可以添加scripts,Azure runbooksk 來手動操作。
Failover發動後將服務切到Azure VM後,就可以從Azure 訪問服務,當on-premises再次可用時,可以將服務再次Failback回來。為了執行failback,需要設置故障恢復基礎設施,包括:
- Temporary process server:要從Azure 進行故障回复,需要在 Azure VM 設置一個暫時的PS處理來自 Azure 的複寫。故障恢復完成後可以刪除此 VM。
- VPN connection:要進行故障回复,您需要從 Azure 網絡到本地站點的 VPN 連接(或 ExpressRoute)。
- Separate master target server:預設就與CS一起安裝在on-premises來處理failback的需求,如果需要failback大量的volumns,可以另外設置一個單獨master server。
- Failback policy:當建立on-premises 到 Azure 的replication policy時,預設也同時建立了failbackpolicy。