Репликация виртуальных машин, работающих в расширенной зоне Azure, в регион Azure

This article describes how to replicate, failover, and failback Azure virtual machines (VMs) running on an Azure Extended Zone to its parent Azure region.

Внимание

Функция Azure Site Recovery для расширенных зон находится в состоянии предварительной версии.

Аварийное восстановление в расширенной зоне Azure

Site Recovery обеспечивает непрерывность бизнес-процессов, сохраняя рабочие нагрузки во время сбоя путем непрерывной репликации рабочей нагрузки из первичного в дополнительное расположение. Функция ASR для расширенных зон доступна в предварительной версии.

Здесь основное расположение — расширенная зона Azure, а дополнительное расположение — родительский регион, к которому подключена расширенная зона Azure.

Внимание

  • Во время создания виртуальной машины мы не поддерживаем репликацию в расширенной зоне. Его можно включить на виртуальной машине или на страницах хранилища после создания виртуальной машины.
  • If using an Extended Zone Storage account as cache storage account, only Block Blob Premium Storage Accounts will be supported.
  • If using an Extended Zone Storage account as cache storage account, only High-Churn is supported.

Если учетная запись хранения региона Azure используется в качестве учетной записи хранения кэша, поддерживаются как обычные, так и высокие объемы обработки.

Настройка аварийного восстановления для виртуальных машин в расширенной зоне Azure с помощью PowerShell

Ниже приведены предварительные требования для настройки аварийного восстановления для виртуальных машин в расширенной зоне Azure с помощью PowerShell:

Предварительные условия

  • Убедитесь, что установлен модуль Azure Az PowerShell. Сведения об установке см. в разделе "Установка модуля Azure Az PowerShell".

  • Минимальная версия Azure Az PowerShell должна быть 4.1.0. Используйте следующую команду, чтобы просмотреть текущую версию:

    Get-InstalledModule -Name Az
    
  • Убедитесь, что версия дистрибутива Linux и ядро поддерживаются Azure Site Recovery. Дополнительные сведения см. в таблице поддержки.

Репликация виртуальных машин, работающих в расширенной зоне Azure, в регион Azure

Чтобы реплицировать виртуальные машины, работающие в расширенной зоне Azure, в регион Azure, выполните следующие действия.

Примечание.

В этом примере основное расположение — расширенная зона Azure, а вторичное или восстановительное расположение — это регион этой расширенной зоны Azure.

  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. Create a resource group for the recovery services vault in the secondary Azure region.

    New-AzResourceGroup -Name "edgezonerecoveryrg" -Location "<AzureRegion>"
    
  5. Create a new Recovery services vault in the secondary region.

    $vault = New-AzRecoveryServicesVault -Name "EdgeZoneRecoveryVault" -
    ResourceGroupName "edgezonerecovery" -Location "\<EdgeZoneRegion\>"
    Write-Output $vault
    
  6. Set the vault context.

    Set-AzRecoveryServicesAsrVaultContext -Vault $vault  
    
  7. Create Primary Site Recovery fabric.

    $TempASRJob = New-AzRecoveryServicesAsrFabric -Azure -Location “<AzureRegion>” -
    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. Use the primary fabric to create both primary and recovery protection containers.

    $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. Both primary and recovery Protection containers get created in the primary region (within the Primary fabric).

      $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. Create a protection container mapping between the primary and recovery protection containers with the Replication policy.

    $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. Create a protection container mapping for failback, between the recovery and primary protection containers with the Replication policy.

      $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 '<AzureRegion>' -SkuName Standard_LRS -
    Kind Storage
    
  12. Убедитесь, что вы создаете виртуальную сеть в целевом расположении. Создайте сеть восстановления в регионе восстановления.

    $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
    
  13. Используйте следующий командлет PowerShell для репликации виртуальной машины расширенной зоны Azure с управляемыми дисками. Этот шаг может занять около 20 минут.

    1. Get the resource group that the virtual machine must be created in when it's failed over.

      $RecoveryRG = Get-AzResourceGroup -Name "edgezonerecoveryrg" -Location "
      <AzureRegion>"
      
    2. Get VM and display contents.

      $vm = Get-AzVM -Name $vmName -ResourceGroupName $primaryResourceGroupName
      
    3. Укажите свойства репликации для каждого диска виртуальной машины, который должен быть реплицирован (создайте конфигурацию репликации диска).

      #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. Если у виртуальной машины есть диск данных, используйте следующую команду, чтобы создать конфигурацию диска. Если нет, этот раздел можно пропустить. С $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 для имени защищенного элемента репликации, чтобы обеспечить уникальность имени. If you are not recovering to an Availability Zone, then don’t provide the -RecoveryAvailabilityZone parameter.

      $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. Проверьте, успешно ли выполнено задание. The updated job state of a successfully completed job must be Succeeded.

      Write-Output $TempASRJob.State
      
    8. После успешного завершения начальной репликации все данные виртуальной машины будут реплицированы в регион восстановления.

    Изначально при запуске процесса репликации создается копия реплицируемых дисков виртуальной машины в регионе восстановления. Этот этап называется начальной репликацией. Этот шаг занимает около 20 минут. See the status of the replication in the Vault blade under Replicated items.

    Снимок экрана: реплицированные элементы.

    When the replication is completed, the Vault replication items will show as below:

    Screenshot of Vault replication.

    Теперь виртуальная машина защищена, и вы можете выполнить тестирование отказоустойчивости. Состояние репликации реплицированного элемента, представляющего виртуальную машину, переходит в защищенное состояние после завершения начальной репликации.

    Чтобы мониторить состояние репликации и её работоспособность для виртуальной машины, получите сведения о элементе, защищенном репликацией, который ей соответствует.

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

    If you see Protected in the ProtectionState, you are ready to proceed to test failover.

    Снимок экрана: состояние защиты.

  14. Perform, validate, and clean up a test failover. You can skip the Test failover. However, we recommend executing test failover to ensure that your secondary region comes up as expected.

    1. Create a separate network for test failover (not connected to my DR network).

      $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
      
    2. Perform a test failover.

      $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. Wait for the test failover to complete.

      Get-AzRecoveryServicesAsrJob -Job $TFOJob
      

    Примечание.

    You can also check the progress of the job by going to portal, selecting the Vault and then select the Site Recovery Jobs.

    After the test failover job completes successfully, you can connect to the test failed over virtual machine and validate the test failover. Once testing is complete on the test failed over virtual machine, clean up the test copy by starting the cleanup test failover operation. Эта операция удаляет тестовую копию виртуальной машины, созданную тестовым отказом. Убедитесь, что все целевые параметры в тестовой виртуальной машине отказа правильные, включая расположение, параметры сети, отсутствие повреждения данных и отсутствие потери данных в целевой виртуальной машине. Now you can delete the test failover and start the failover.

    $Job_TFOCleanup = Start-AzRecoveryServicesAsrTestFailoverCleanupJob -
    ReplicationProtectedItem $ReplicationProtectedItem 
    Get-AzRecoveryServicesAsrJob -Job $Job_TFOCleanup | Select State
    
  15. Next step would be to fail over the virtual machine. На этом шаге будет создана виртуальная машина с помощью реплицированных дисков в регионе восстановления.

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

    Список возвращаемых точек восстановления не может быть отсортирован в хронологическом порядке. Сначала необходимо отсортировать их, чтобы найти самые старые или последние точки восстановления для виртуальной машины.

     "{0} {1}" -f $RecoveryPoints[0].RecoveryPointType, $RecoveryPoints[-
    1].RecoveryPointTime
    
    1. Start the failover job.

      $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. When the failover job is successful, you can commit the failover.

     $CommitFailoverJob = Start-AzRecoveryServicesAsrCommitFailoverJob -
    ReplicationProtectedItem $ReplicationProtectedItem 
    
    1. Wait until commit failover job is finished.

      while (($CommitFailoverJob.State -eq "InProgress") -or ($CommitFailoverJob.State 
      -eq "NotStarted")){
       sleep 10;
       $CommitFailoverJob = Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJob
      }
       Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJOb
      
  17. After a failover, when you're ready to go back to the original region, start reverse replication for the replication protected item using the Update-AzRecoveryServicesAsrProtectionDirection cmdlet.

    1. Создайте учетную запись хранения кэша для журналов репликации в регионе восстановления.

      $EdgeZoneCacheStorageAccount = New-AzStorageAccount -Name "cachestorageedgezone" -
      ResourceGroupName "<ResourceGroupName>" -Location '<AzureRegion>' -SkuName 
      Standard_LRS -Kind Storage
      
    2. Используйте контейнер защиты восстановления, новую учетную запись хранения кэша в регионе Расширенной зоны Azure и группу ресурсов виртуальной машины исходного региона.

      $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 минут, и статус изменится с в процессе на успешно выполнено.

    Снимок экрана: список защищенных элементов.

  18. Отключение репликации.

    Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem 
    $ReplicationProtectedItem
    
  19. Очистка среды. Этот шаг является необязательным и может использоваться для удаления группы ресурсов.

    Remove-AzResourceGroup -Name $Name -Force
    

Следующие шаги