分享方式:


將 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 的區域。

  1. 登入您的 Azure 帳戶。

    Connect-AzAccount
    
  2. 選取適合的訂用帳戶。

    $subscription = Get-AzSubscription -SubscriptionName "<SubscriptionName>" 
    Set-AzContext $subscription.Id 
    
  3. 取得您要複寫的虛擬機器詳細資料。

    $VM = Get-AzVM -ResourceGroupName "<ResourceGroupName>" -Name "<VMName>" 
    
    Write-Output $VM 
    
  4. 在次要 Azure 區域中,建立復原服務保存庫的資源群組。

    New-AzResourceGroup -Name "edgezonerecoveryrg" -Location "<EdgeZoneRegion>"
    
  5. 在次要區域中,建立新的復原服務保存庫。

    $vault = New-AzRecoveryServicesVault -Name "EdgeZoneRecoveryVault" -
    ResourceGroupName "edgezonerecovery" -Location "\<EdgeZoneRegion\>"
    Write-Output $vault
    
  6. 設定保存庫內容。

    Set-AzRecoveryServicesAsrVaultContext -Vault $vault 
    
  7. 建立主要 Site Recovery 網狀架構。

    $TempASRJob = New-AzRecoveryServicesAsrFabric -Azure -Location “<EdgeZoneRegion>” -
    Name "EdgeZoneFabric"
    
    1. 追蹤作業狀態並檢查是否已完成。

      while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
      
    2. 如果作業尚未完成,請睡眠 10 秒鐘,然後再次檢查作業狀態。

      sleep 10;
      $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
      }
      
    3. 順利完成後,作業狀態必須為成功

      Write-Output $TempASRJob.State
      $PrimaryFabric = Get-AzRecoveryServicesAsrFabric -Name "EdgeZoneFabric"
      
  8. 使用主要網狀架構,建立主要保護容器和復原保護容器。

    $TempASRJob = New-AzRecoveryServicesAsrProtectionContainer -InputObject 
    $PrimaryFabric -Name "EdgeZoneProtectionContainer"
    
    1. 追蹤作業狀態並檢查是否已完成。

      while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq 
      "NotStarted")){
       sleep 10;
       $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
      }
      Write-Output $TempASRJob.State
      
    2. 主要和復原保護容器都是在主要區域 (主要網狀架構內) 中建立。

      $PrimaryProtectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric 
      $primaryFabric -Name "EdgeZoneProtectionContainer"
      $RecoveryProtectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric 
      $primaryFabric -Name "EdgeZoneProtectionContainer-t"
      
  9. 建立複寫原則。

    $TempASRJob = New-AzRecoveryServicesAsrPolicy -AzureToAzure -Name 
    "ReplicationPolicy" -RecoveryPointRetentionInHours 24 -
    ApplicationConsistentSnapshotFrequencyInHours 4
    
    1. 追蹤作業狀態並檢查是否已完成。

      while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq 
      "NotStarted")){
       sleep 10;
       $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
      }
      
    2. 順利完成後,作業狀態必須為成功

      Write-Output $TempASRJob.State
      
      $ReplicationPolicy = Get-AzRecoveryServicesAsrPolicy -Name "ReplicationPolicy"
      
  10. 使用複寫原則,在主要和復原保護容器之間建立保護容器對應。

    $TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name 
    "PrimaryToRecovery" -Policy $ReplicationPolicy -PrimaryProtectionContainer 
    $PrimaryProtectionContainer -RecoveryProtectionContainer 
    $RecoveryProtectionContainer
    
    1. 追蹤作業狀態並檢查是否已完成。

      while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq 
      "NotStarted")){
       sleep 10;
       $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
      }
      
    2. 順利完成後,作業狀態必須為成功

      Write-Output $TempASRJob.State
      
      $EdgeZoneToAzurePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -
      ProtectionContainer $PrimaryProtectionContainer -Name "PrimaryToRecovery"
      
    3. 使用複寫原則,在復原和主要保護容器之間建立用於容錯回復的保護容器對應。

      $TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name 
      "RecoveryToPrimary" -Policy $ReplicationPolicy -PrimaryProtectionContainer 
      $RecoveryProtectionContainer -RecoveryProtectionContainer 
      $PrimaryProtectionContainer
      
      1. 追蹤作業狀態並檢查是否已完成。

        while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq 
        "NotStarted")){
         sleep 10;
         $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
        }
        
      2. 順利完成後,作業狀態必須為成功

        Write-Output $TempASRJob.State 
        $AzureToEdgeZonePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -
        ProtectionContainer $RecoveryProtectionContainer -Name "RecoveryToPrimary"
        
  11. 在主要區域中建立複寫記錄的快取儲存體帳戶。 在主要區域中建立快取儲存體帳戶。

    $CacheStorageAccount = New-AzStorageAccount -Name "cachestorage" -ResourceGroupName 
    "<primary ResourceGroupName>" -Location '<EdgeZoneRegion>' -SkuName Standard_LRS -
    Kind Storage
    
  12. 確保在目標位置建立虛擬網路。 在復原區域中建立復原網路。

    $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
    
  13. 使用下列 PowerShell Cmdlet,複寫具有受控磁碟的 Azure 公用 MEC Azure 虛擬機器。 此步驟可能約需要 20 分鐘才能完成。

    1. 取得容錯移轉時必須在其中建立虛擬機器的資源群組。

      $RecoveryRG = Get-AzResourceGroup -Name "edgezonerecoveryrg" -Location "
      <EdgeZoneRegion>"
      
    2. 取得 VM 並顯示內容。

      $vm = Get-AzVM -Name $vmName -ResourceGroupName $primaryResourceGroupName
      
    3. 針對必須複寫的 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
      
    4. 資料磁碟

      1. 如果 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
        
    5. 建立受複寫保護項目以啟動複寫。 使用 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”
      
    6. 追蹤作業狀態並檢查是否已完成。

      while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
      sleep 10; 
      $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob 
      } 
      
    7. 檢查作業是否已順利完成。 順利完成作業的更新作業狀態必須為成功

      Write-Output $TempASRJob.State
      
    8. 啟動複寫的作業成功後,系統就會將虛擬機器資料複寫至復原區域。

    啟動複寫程序時,一開始會先在復原區域中建立虛擬機器複寫磁碟的複本。 這個階段稱為初始複寫階段。 這個步驟大約需要 20 分鐘的時間。 在 [保存庫] 刀鋒視窗中的 [複寫的項目] 下查看複寫狀態。

    Screenshot of replicated items.

    複寫完成時,Vault 複寫項目如下所示:

    Screenshot of Vault replication.

    現在虛擬機器已受到保護,您可以執行測試容錯移轉作業。 初始複寫完成後,代表虛擬機器的複寫項目複寫狀態會進入受保護狀態。

    請取得虛擬機器所對應的受保護複寫項目詳細資料,藉以監視虛擬機器的複寫狀態和複寫健康情況:

    $PE = Get-AzRecoveryServicesAsrReplicationProtectedItem
     -ProtectionContainer $PrimaryProtectionContainer
    | Select FriendlyName, ProtectionState, ReplicationHealth
    $PE
    

    如果您在 ProtectionState 中看到 Protected,就可以繼續測試容錯移轉。

    Screenshot of Protection state.

  14. 執行、驗證和清除測試容錯移轉。 您可以略過測試容錯移轉。 不過,建議您執行測試容錯移轉,以確保次要區域如預期般運作。

    1. 建立用於測試容錯移轉的個別網路 (未連線至我的容錯移轉網路)。

      $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
      
    2. 執行測試容錯移轉。

      $ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem -
      FriendlyName "<VMName>" -ProtectionContainer $PrimaryProtectionContainer
      
      $TFOJob = Start-AzRecoveryServicesAsrTestFailoverJob -ReplicationProtectedItem 
      $ReplicationProtectedItem -AzureVMNetworkId $TFONetwork -Direction PrimaryToRecovery
      
    3. 請等候作業完成。

      while (($TFOJob.State -eq "InProgress") -or ($TFOJob.State -eq 
      "NotStarted")){
       sleep 10;
       $TFOJob = Get-AzRecoveryServicesAsrJob -Job $TFOJob
      }
      
    4. 請等待測試容錯移轉完成。

      Get-AzRecoveryServicesAsrJob -Job $TFOJob
      

    注意

    若想確認作業的進度,您也可以移至入口網站、選取保存庫,然後選取 Site Recovery 作業。

    測試容錯移轉作業成功完成之後,就可以連線至測試容錯移轉虛擬機器,並驗證測試容錯移轉。 在測試容錯移轉虛擬機器上完成測試後,請啟動清除測試容錯移轉作業來清除測試複本。 此作業會刪除測試容錯移轉所建立的虛擬機器測試複本。 確認測試容錯移轉 VM 中的所有目標設定皆正確,包括位置、網路設定、目標 VM 中沒有資料損毀和資料遺失。 現在您可以刪除測試容錯移轉,並啟動容錯移轉。

    $Job_TFOCleanup = Start-AzRecoveryServicesAsrTestFailoverCleanupJob -
    ReplicationProtectedItem $ReplicationProtectedItem 
    Get-AzRecoveryServicesAsrJob -Job $Job_TFOCleanup | Select State
    
  15. 下一個步驟是對虛擬機器進行容錯移轉。 此步驟會使用復原區域中的複寫磁碟建立 VM。

    $ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem -
    FriendlyName "<VMName>" -ProtectionContainer $PrimaryProtectionContainer
    $RecoveryPoints = Get-AzRecoveryServicesAsrRecoveryPoint -ReplicationProtectedItem 
    $ReplicationProtectedItem 
    

    傳回的復原點清單可能不會依時間順序排序。 您必須先針對這些項目排序,才能找到虛擬機器最舊或最新的復原點。

     "{0} {1}" -f $RecoveryPoints[0].RecoveryPointType, $RecoveryPoints[-
    1].RecoveryPointTime
    
    1. 啟動容錯移轉作業。

      $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
      
  16. 當容錯移轉作業成功時,您可以認可容錯移轉。

     $CommitFailoverJob = Start-AzRecoveryServicesAsrCommitFailoverJob -
    ReplicationProtectedItem $ReplicationProtectedItem 
    
    1. 請等候認可容錯移轉作業完成。

      while (($CommitFailoverJob.State -eq "InProgress") -or ($CommitFailoverJob.State 
      -eq "NotStarted")){
       sleep 10;
       $CommitFailoverJob = Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJob
      }
       Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJOb
      
  17. 在容錯移轉之後,當您準備好回到原始區域時,請使用 Update-AzRecoveryServicesAsrProtectionDirection Cmdlet 啟動複寫受保護項目的反向複寫。

    1. 在復原區域中建立複寫記錄的快取儲存體帳戶。

      $EdgeZoneCacheStorageAccount = New-AzStorageAccount -Name "cachestorageedgezone" -
      ResourceGroupName "<ResourceGroupName>" -Location '<EdgeZoneRegion>' -SkuName 
      Standard_LRS -Kind Storage
      
    2. 使用復原保護容器、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 分鐘,狀態會從進行中變成成功

    Screenshot of Protected items list.

  18. 停用複寫。

    Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem 
    $ReplicationProtectedItem
    
  19. 清除環境。 此為選擇性步驟,可用於移除資源群組。

    Remove-AzResourceGroup -Name $Name -Force