將 Azure 擴充區域中執行的虛擬機複寫至 Azure 區域
本文說明如何將在 Azure 擴充區域上執行的 Azure 虛擬機(VM)復寫、故障轉移和容錯回復至其父 Azure 區域。
重要
擴充區域的 Azure Site Recovery 功能處於預覽狀態。
Azure 擴充區域中的災害復原
Site Recovery 藉由持續將工作負載從主要復寫到次要位置,藉此讓工作負載在中斷期間持續執行,以確保商務持續性。 擴充區域的 ASR 功能處於預覽狀態。
這裡的主要位置是 Azure 擴充區域,次要位置是 Azure 擴充區域所連接的父區域。
重要
- 在建立 VM 期間,我們不支援擴充區域中的複寫。 一旦建立 VM,就可以在 VM 或保存庫頁面中啟用它。
- 如果使用擴充區域記憶體帳戶作為快取記憶體帳戶,則僅支援區塊 Blob 進階儲存體 帳戶。
- 如果使用擴充區域記憶體帳戶作為快取記憶體帳戶,則僅支援高變換。
如果使用 Azure 區域記憶體帳戶作為快取記憶體帳戶,則支援一般和高變換。
使用 PowerShell 在 Azure 擴充區域中設定 VM 的災害復原
以下是使用 PowerShell 在 Azure 擴充區域中設定 VM 災害復原的必要條件:
必要條件
確保已安裝 Azure Az PowerShell 模組。 如需如何安裝的相關資訊,請參閱安裝 Azure Az PowerShell 模組。
Azure Az PowerShell 的最低版本需求為 4.1.0。 若要查看目前的版本,請使用下列命令:
Get-InstalledModule -Name Az
確保 Azure Site Recovery 支援 Linux 發行版本與核心。 如需詳細資訊,請參閱支援矩陣。
將 Azure 擴充區域中執行的虛擬機複寫至 Azure 區域
若要將 Azure 擴充區域中執行的 VM 複寫至 Azure 區域,請遵循下列步驟:
注意
在此範例中,主要位置是 Azure 擴充區域,而次要/復原位置則是 Azure 擴充區域的區域。
登入您的 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 "<AzureRegion>"
在次要區域中,建立新的復原服務保存庫。
$vault = New-AzRecoveryServicesVault -Name "EdgeZoneRecoveryVault" - ResourceGroupName "edgezonerecovery" -Location "\<EdgeZoneRegion\>" Write-Output $vault
設定保存庫內容。
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
建立主要 Site Recovery 網狀架構。
$TempASRJob = New-AzRecoveryServicesAsrFabric -Azure -Location “<AzureRegion>” - 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 '<AzureRegion>' -SkuName Standard_LRS - Kind Storage
確保在目標位置建立虛擬網路。 在復原區域中建立復原網路。
$recoveryVnet = New-AzVirtualNetwork -Name "recoveryvnet" -ResourceGroupName "recoveryrg" -Location '<AzureRegion>' -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 擴充區域虛擬機。 此步驟可能約需要 20 分鐘才能完成。
取得容錯移轉時必須在其中建立虛擬機器的資源群組。
$RecoveryRG = Get-AzResourceGroup -Name "edgezonerecoveryrg" -Location " <AzureRegion>"
取得 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] 刀鋒視窗中 [複寫的項目] 下查看複寫狀態。
複寫完成時,Vault 複寫項目如下所示:
現在虛擬機器已受到保護,您可以執行測試容錯移轉作業。 初始複寫完成後,代表虛擬機器的複寫項目複寫狀態會進入受保護狀態。
請取得虛擬機器所對應的受保護複寫項目詳細資料,藉以監視虛擬機器的複寫狀態和複寫健康情況:
$PE = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $PrimaryProtectionContainer | Select FriendlyName, ProtectionState, ReplicationHealth $PE
如果您在 ProtectionState 中看到 Protected,就可以繼續測試容錯移轉。
執行、驗證和清除測試容錯移轉。 您可以略過測試容錯移轉。 不過,建議您執行測試容錯移轉,以確保次要區域如預期般運作。
建立用於測試容錯移轉的個別網路 (未連線至我的 DR 網路)。
$TFOVnet = New-AzVirtualNetwork -Name "TFOvnet" -ResourceGroupName "edgezonerecoveryrg" -Location '<AzureRegion>' -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 '<AzureRegion>' -SkuName Standard_LRS -Kind Storage
使用復原保護容器、Azure 擴充區域區域中的新快取記憶體帳戶,以及來源區域 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
下一步
- 檢視 Azure Site Recovery PowerShell 參考 ,以瞭解如何使用 PowerShell 建立復原計劃、執行故障轉移和容錯回復。