將 Azure 公用 MEC 中執行的虛擬機器複寫至 Azure 區域
重要
適用於公用 MEC 的 Azure Site Recovery 功能處於預覽狀態。
本文說明如何將 Azure 公用 MEC 上執行的 Azure 虛擬機器 (VM) 複寫、容錯移轉和容錯回復至 Azure 公用 MEC 作為延伸模組的父 Azure 區域。
Azure 公用 MEC 的災害復原
Site Recovery 透過不斷將工作負載從主要位置複寫至次要位置,讓工作負載在中斷期間繼續運行,從而確保商務持續性。 MEC 的 ASR 功能處於預覽狀態。
此處指的主要位置是 Azure 公用 MEC,次要位置是 Azure 公用 MEC 所連線的父區域。
使用 PowerShell 為 Azure 公用 MEC 中的 VM 設定災害復原
必要條件
確保已安裝 Azure Az PowerShell 模組。 如需如何安裝的相關資訊,請參閱安裝 Azure Az PowerShell 模組。
Azure Az PowerShell 的最低版本需求為 4.1.0。 若要查看目前的版本,請使用下列命令:
Get-InstalledModule -Name Az
確保 Azure Site Recovery 支援 Linux 發行版本與核心。 如需詳細資訊,請參閱支援矩陣。
將 Azure 公用 MEC 中執行的虛擬機器複寫至 Azure 區域
若要將在 Azure 公用 MEC 中執行的 VM 複寫至 Azure 區域,請遵循下列步驟:
注意
在此範例中,主要位置是 Azure 公用 MEC,而次要/復原位置則是 Azure 公用 MEC 的區域。
登入您的 Azure 帳戶。
Connect-AzAccount
選取適合的訂用帳戶。
$subscription = Get-AzSubscription -SubscriptionName "<SubscriptionName>" Set-AzContext $subscription.Id
取得您要複寫的虛擬機器詳細資料。
$VM = Get-AzVM -ResourceGroupName "<ResourceGroupName>" -Name "<VMName>" Write-Output $VM
在次要 Azure 區域中,建立復原服務保存庫的資源群組。
New-AzResourceGroup -Name "edgezonerecoveryrg" -Location "<EdgeZoneRegion>"
在次要區域中,建立新的復原服務保存庫。
$vault = New-AzRecoveryServicesVault -Name "EdgeZoneRecoveryVault" - ResourceGroupName "edgezonerecovery" -Location "\<EdgeZoneRegion\>" Write-Output $vault
設定保存庫內容。
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
建立主要 Site Recovery 網狀架構。
$TempASRJob = New-AzRecoveryServicesAsrFabric -Azure -Location “<EdgeZoneRegion>” - Name "EdgeZoneFabric"
追蹤作業狀態並檢查是否已完成。
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
如果作業尚未完成,請睡眠 10 秒鐘,然後再次檢查作業狀態。
sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
順利完成後,作業狀態必須為成功。
Write-Output $TempASRJob.State $PrimaryFabric = Get-AzRecoveryServicesAsrFabric -Name "EdgeZoneFabric"
使用主要網狀架構,建立主要保護容器和復原保護容器。
$TempASRJob = New-AzRecoveryServicesAsrProtectionContainer -InputObject $PrimaryFabric -Name "EdgeZoneProtectionContainer"
追蹤作業狀態並檢查是否已完成。
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob } Write-Output $TempASRJob.State
主要和復原保護容器都是在主要區域 (主要網狀架構內) 中建立。
$PrimaryProtectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric $primaryFabric -Name "EdgeZoneProtectionContainer" $RecoveryProtectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric $primaryFabric -Name "EdgeZoneProtectionContainer-t"
建立複寫原則。
$TempASRJob = New-AzRecoveryServicesAsrPolicy -AzureToAzure -Name "ReplicationPolicy" -RecoveryPointRetentionInHours 24 - ApplicationConsistentSnapshotFrequencyInHours 4
追蹤作業狀態並檢查是否已完成。
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
順利完成後,作業狀態必須為成功。
Write-Output $TempASRJob.State $ReplicationPolicy = Get-AzRecoveryServicesAsrPolicy -Name "ReplicationPolicy"
使用複寫原則,在主要和復原保護容器之間建立保護容器對應。
$TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name "PrimaryToRecovery" -Policy $ReplicationPolicy -PrimaryProtectionContainer $PrimaryProtectionContainer -RecoveryProtectionContainer $RecoveryProtectionContainer
追蹤作業狀態並檢查是否已完成。
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
順利完成後,作業狀態必須為成功。
Write-Output $TempASRJob.State $EdgeZoneToAzurePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping - ProtectionContainer $PrimaryProtectionContainer -Name "PrimaryToRecovery"
使用複寫原則,在復原和主要保護容器之間建立用於容錯回復的保護容器對應。
$TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name "RecoveryToPrimary" -Policy $ReplicationPolicy -PrimaryProtectionContainer $RecoveryProtectionContainer -RecoveryProtectionContainer $PrimaryProtectionContainer
追蹤作業狀態並檢查是否已完成。
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
順利完成後,作業狀態必須為成功。
Write-Output $TempASRJob.State $AzureToEdgeZonePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping - ProtectionContainer $RecoveryProtectionContainer -Name "RecoveryToPrimary"
在主要區域中建立複寫記錄的快取儲存體帳戶。 在主要區域中建立快取儲存體帳戶。
$CacheStorageAccount = New-AzStorageAccount -Name "cachestorage" -ResourceGroupName "<primary ResourceGroupName>" -Location '<EdgeZoneRegion>' -SkuName Standard_LRS - Kind Storage
確保在目標位置建立虛擬網路。 在復原區域中建立復原網路。
$recoveryVnet = New-AzVirtualNetwork -Name "recoveryvnet" -ResourceGroupName "recoveryrg" -Location '<EdgeZoneRegion>' -AddressPrefix "10.0.0.0/16" Add-AzVirtualNetworkSubnetConfig -Name "defaultsubnetconf" -VirtualNetwork $recoveryVnet -AddressPrefix "10.0.0.0/24" | Set-AzVirtualNetwork $recoveryNetwork = $recoveryVnet.Id
使用下列 PowerShell Cmdlet,複寫具有受控磁碟的 Azure 公用 MEC Azure 虛擬機器。 此步驟可能約需要 20 分鐘才能完成。
取得容錯移轉時必須在其中建立虛擬機器的資源群組。
$RecoveryRG = Get-AzResourceGroup -Name "edgezonerecoveryrg" -Location " <EdgeZoneRegion>"
取得 VM 並顯示內容。
$vm = Get-AzVM -Name $vmName -ResourceGroupName $primaryResourceGroupName
針對必須複寫的 VM 中各磁碟指定複寫屬性 (建立磁碟複寫設定)。
#OsDisk $OSdiskId = $vm.StorageProfile.OsDisk.ManagedDisk.Id $RecoveryOSDiskAccountType = $vm.StorageProfile.OsDisk.ManagedDisk.StorageAccountType $RecoveryReplicaDiskAccountType = $vm.StorageProfile.OsDisk.ManagedDisk.StorageAccountType $OSDiskReplicationConfig = New-AzRecoveryServicesAsrAzureToAzureDiskReplicationConfig - ManagedDisk -LogStorageAccountId $CacheStorageAccount.Id ` -DiskId $OSdiskId -RecoveryResourceGroupId $RecoveryRG.ResourceId - RecoveryReplicaDiskAccountType $RecoveryReplicaDiskAccountType ` -RecoveryTargetDiskAccountType $RecoveryOSDiskAccountType
資料磁碟
如果 VM 有資料磁碟,請使用下列命令建立磁碟設定。 如果沒有,您可以略過本節。 從
$datadiskId
變更為$DataDisk1ReplicationConfig $datadiskId = $vm.StorageProfile.OSDisk.ManagedDisk.Id
。或者,
$RecoveryReplicaDiskAccountType = "Premium_LRS" $RecoveryTargetDiskAccountType = "Premium_LRS" $RecoveryRGId = $RecoveryRG.ResourceId $DataDisk1ReplicationConfig = New-AzRecoveryServicesAsrAzureToAzureDiskReplicationConfig -ManagedDisk -LogStorageAccountId $CacheStorageAccount.Id ` -DiskId $OSdiskId -RecoveryResourceGroupId $RecoveryRGId - RecoveryReplicaDiskAccountType $RecoveryReplicaDiskAccountType ` -RecoveryTargetDiskAccountType $RecoveryTargetDiskAccountType
建立受複寫保護項目以啟動複寫。 使用 GUID 作為受複寫保護項目的名稱,從而確保名稱的唯一性。 若您未復原到可用性區域,則請勿提供
-RecoveryAvailabilityZone
參數。$TempASRJob = New-AzRecoveryServicesAsrReplicationProtectedItem -AzureToAzure -AzureVmId $VM.Id -Name $vm.Name -ProtectionContainerMapping $EdgeZoneToAzurePCMapping - AzureToAzureDiskReplicationConfiguration $DataDisk1ReplicationConfig - RecoveryResourceGroupId $RecoveryRGId -RecoveryAvailabilityZone “1” - RecoveryAzureNetworkId $recoveryVnet.Id -RecoveryAzureSubnetName “defaultsubnetconf”
追蹤作業狀態並檢查是否已完成。
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
檢查作業是否已順利完成。 順利完成作業的更新作業狀態必須為成功。
Write-Output $TempASRJob.State
啟動複寫的作業成功後,系統就會將虛擬機器資料複寫至復原區域。
啟動複寫程序時,一開始會先在復原區域中建立虛擬機器複寫磁碟的複本。 這個階段稱為初始複寫階段。 這個步驟大約需要 20 分鐘的時間。 在 [保存庫] 刀鋒視窗中的 [複寫的項目] 下查看複寫狀態。
複寫完成時,Vault 複寫項目如下所示:
現在虛擬機器已受到保護,您可以執行測試容錯移轉作業。 初始複寫完成後,代表虛擬機器的複寫項目複寫狀態會進入受保護狀態。
請取得虛擬機器所對應的受保護複寫項目詳細資料,藉以監視虛擬機器的複寫狀態和複寫健康情況:
$PE = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $PrimaryProtectionContainer | Select FriendlyName, ProtectionState, ReplicationHealth $PE
如果您在 ProtectionState 中看到 Protected,就可以繼續測試容錯移轉。
執行、驗證和清除測試容錯移轉。 您可以略過測試容錯移轉。 不過,建議您執行測試容錯移轉,以確保次要區域如預期般運作。
建立用於測試容錯移轉的個別網路 (未連線至我的容錯移轉網路)。
$TFOVnet = New-AzVirtualNetwork -Name "TFOvnet" -ResourceGroupName "edgezonerecoveryrg" -Location '<EdgeZoneRegion>' -AddressPrefix "10.3.0.0/26" Add-AzVirtualNetworkSubnetConfig -Name "default" -VirtualNetwork $TFOVnet -AddressPrefix "10.3.0.0/26" | Set-AzVirtualNetwork $TFONetwork= $TFOVnet.Id
執行測試容錯移轉。
$ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem - FriendlyName "<VMName>" -ProtectionContainer $PrimaryProtectionContainer $TFOJob = Start-AzRecoveryServicesAsrTestFailoverJob -ReplicationProtectedItem $ReplicationProtectedItem -AzureVMNetworkId $TFONetwork -Direction PrimaryToRecovery
請等候作業完成。
while (($TFOJob.State -eq "InProgress") -or ($TFOJob.State -eq "NotStarted")){ sleep 10; $TFOJob = Get-AzRecoveryServicesAsrJob -Job $TFOJob }
請等待測試容錯移轉完成。
Get-AzRecoveryServicesAsrJob -Job $TFOJob
注意
若想確認作業的進度,您也可以移至入口網站、選取保存庫,然後選取 Site Recovery 作業。
測試容錯移轉作業成功完成之後,就可以連線至測試容錯移轉虛擬機器,並驗證測試容錯移轉。 在測試容錯移轉虛擬機器上完成測試後,請啟動清除測試容錯移轉作業來清除測試複本。 此作業會刪除測試容錯移轉所建立的虛擬機器測試複本。 確認測試容錯移轉 VM 中的所有目標設定皆正確,包括位置、網路設定、目標 VM 中沒有資料損毀和資料遺失。 現在您可以刪除測試容錯移轉,並啟動容錯移轉。
$Job_TFOCleanup = Start-AzRecoveryServicesAsrTestFailoverCleanupJob - ReplicationProtectedItem $ReplicationProtectedItem Get-AzRecoveryServicesAsrJob -Job $Job_TFOCleanup | Select State
下一個步驟是對虛擬機器進行容錯移轉。 此步驟會使用復原區域中的複寫磁碟建立 VM。
$ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem - FriendlyName "<VMName>" -ProtectionContainer $PrimaryProtectionContainer $RecoveryPoints = Get-AzRecoveryServicesAsrRecoveryPoint -ReplicationProtectedItem $ReplicationProtectedItem
傳回的復原點清單可能不會依時間順序排序。 您必須先針對這些項目排序,才能找到虛擬機器最舊或最新的復原點。
"{0} {1}" -f $RecoveryPoints[0].RecoveryPointType, $RecoveryPoints[- 1].RecoveryPointTime
啟動容錯移轉作業。
$Job_Failover = Start-AzRecoveryServicesAsrUnplannedFailoverJob - ReplicationProtectedItem $ReplicationProtectedItem -Direction PrimaryToRecovery - RecoveryPoint $RecoveryPoints[-1] do { $Job_Failover = Get-AzRecoveryServicesAsrJob -Job $Job_Failover; sleep 30; } while (($Job_Failover.State -eq "InProgress") -or ($JobFailover.State -eq "NotStarted")) $Job_Failover.State
當容錯移轉作業成功時,您可以認可容錯移轉。
$CommitFailoverJob = Start-AzRecoveryServicesAsrCommitFailoverJob - ReplicationProtectedItem $ReplicationProtectedItem
請等候認可容錯移轉作業完成。
while (($CommitFailoverJob.State -eq "InProgress") -or ($CommitFailoverJob.State -eq "NotStarted")){ sleep 10; $CommitFailoverJob = Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJob } Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJOb
在容錯移轉之後,當您準備好回到原始區域時,請使用
Update-AzRecoveryServicesAsrProtectionDirection
Cmdlet 啟動複寫受保護項目的反向複寫。在復原區域中建立複寫記錄的快取儲存體帳戶。
$EdgeZoneCacheStorageAccount = New-AzStorageAccount -Name "cachestorageedgezone" - ResourceGroupName "<ResourceGroupName>" -Location '<EdgeZoneRegion>' -SkuName Standard_LRS -Kind Storage
使用復原保護容器、Azure 公用 MEC 區域中的新快取儲存體帳戶,以及來源區域 VM 資源群組。
$ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem - FriendlyName $vm.name -ProtectionContainer $PrimaryProtectionContainer $sourceVMResourcegroupId = $(Get-AzResourceGroup -Name $vm.ResourceGroupName). ResourceId Update-ASRProtectionDirection -ReplicationProtectedItem $ReplicationProtectedItem ` -AzureToAzure ` -ProtectionContainerMapping $AzureToEdgeZonePCMapping ` -LogStorageAccountId $EdgeZoneCacheStorageAccount.Id ` -RecoveryResourceGroupID $sourceVMResourcegroupId
此步驟需要約 20 分鐘,狀態會從進行中變成成功。
停用複寫。
Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem $ReplicationProtectedItem
清除環境。 此為選擇性步驟,可用於移除資源群組。
Remove-AzResourceGroup -Name $Name -Force