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

Важно!

Функция Azure Site Recovery для общедоступного MEC находится в состоянии предварительной версии.

В этой статье описывается репликация, отработка отказа и восстановление размещения виртуальных машин Azure, работающих в Общедоступном meC Azure, в родительский регион Azure, где azure Public MEC является расширением.

Аварийное восстановление в Общедоступной mec Azure

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

Здесь основным расположением является общедоступный MEC Azure, а дополнительным расположением является родительский регион, к которому подключен общедоступный MEC Azure.

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

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

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

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

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

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

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

Примечание

В этом примере основным расположением является общедоступный MEC Azure, а дополнительным расположением или расположением восстановления является регион Azure Public 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 для репликации общедоступной виртуальной машины Azure MEC Azure с управляемыми дисками. Выполнение этого шага может занять около 20 минут.

    1. Получите группу ресурсов, в которую должна быть создана виртуальная машина при отработке отказа.

      $RecoveryRG = Get-AzResourceGroup -Name "edgezonerecoveryrg" -Location "
      <EdgeZoneRegion>"
      
    2. Получение виртуальной машины и отображаемое содержимое.

      $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 для имени защищенного элемента репликации, чтобы обеспечить уникальность имени. Если вы не выполняете восстановление в зону доступности, не укажите -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 минут. Просмотрите состояние репликации в колонке Хранилище в разделе Реплицированные элементы.

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

    После завершения репликации элементы репликации хранилища будут отображаться следующим образом:

    Снимок экрана: репликация хранилища.

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

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

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

    Если в ProtectionStateотображается защищенное состояние, вы можете перейти к тестовой отработке отказа.

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

  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 Задания.

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

    $Job_TFOCleanup = Start-AzRecoveryServicesAsrTestFailoverCleanupJob -
    ReplicationProtectedItem $ReplicationProtectedItem 
    Get-AzRecoveryServicesAsrJob -Job $Job_TFOCleanup | Select State
    
  15. Следующим шагом будет отработка отказа виртуальной машины. На этом шаге будет создана виртуальная машина с использованием реплицированных дисков в регионе восстановления.

    $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.

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

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

      $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