Поделиться через


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

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

Внимание

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

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

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

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

Внимание

  • Во время создания виртуальной машины мы не поддерживаем репликацию в расширенной зоне. Его можно включить на виртуальной машине или на страницах хранилища после создания виртуальной машины.
  • При использовании учетной записи хранения расширенной зоны в качестве учетной записи хранения кэша будут поддерживаться только блочные хранилище класса Premium учетные записи.
  • При использовании учетной записи хранения расширенной зоны в качестве учетной записи хранения кэша поддерживается только высокий объем обработки.

Если учетная запись хранения региона 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. Создайте группу ресурсов для хранилища служб восстановления в дополнительном регионе Azure.

    New-AzResourceGroup -Name "edgezonerecoveryrg" -Location "<AzureRegion>"
    
  5. Создайте хранилище служб восстановления в дополнительном регионе.

    $vault = New-AzRecoveryServicesVault -Name "EdgeZoneRecoveryVault" -
    ResourceGroupName "edgezonerecovery" -Location "\<EdgeZoneRegion\>"
    Write-Output $vault
    
  6. Задание контекста хранилища.

    Set-AzRecoveryServicesAsrVaultContext -Vault $vault  
    
  7. Создайте структуру Primary Site Recovery.

    $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. Используйте основную структуру для создания первичных и контейнеров защиты восстановления.

    $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 '<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. Получите группу ресурсов, в которую должна быть создана виртуальная машина при отработке отказа.

      $RecoveryRG = Get-AzResourceGroup -Name "edgezonerecoveryrg" -Location "
      <AzureRegion>"
      
    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 '<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. Выполните тестовую отработка отказа.

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

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

  • Ознакомьтесь со ссылкой на Azure Site Recovery PowerShell, чтобы узнать, как создавать планы восстановления, выполнять отработку отказа и восстановление размещения с помощью PowerShell.