Репликация виртуальных машин, работающих в общедоступном 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.
Войдите в учетную запись 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 "<EdgeZoneRegion>"
Создайте хранилище служб восстановления в дополнительном регионе.
$vault = New-AzRecoveryServicesVault -Name "EdgeZoneRecoveryVault" - ResourceGroupName "edgezonerecovery" -Location "\<EdgeZoneRegion\>" Write-Output $vault
Задание контекста хранилища.
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
Создание основной структуры Site Recovery.
$TempASRJob = New-AzRecoveryServicesAsrFabric -Azure -Location “<EdgeZoneRegion>” - 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 '<EdgeZoneRegion>' -SkuName Standard_LRS - Kind Storage
Обязательно создайте виртуальную сеть в целевом расположении. Создайте сеть восстановления в регионе восстановления.
$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
Используйте следующий командлет PowerShell для репликации общедоступной виртуальной машины Azure MEC Azure с управляемыми дисками. Выполнение этого шага может занять около 20 минут.
Получите группу ресурсов, в которую должна быть создана виртуальная машина при отработке отказа.
$RecoveryRG = Get-AzResourceGroup -Name "edgezonerecoveryrg" -Location " <EdgeZoneRegion>"
Получение виртуальной машины и отображаемое содержимое.
$vm = Get-AzVM -Name $vmName -ResourceGroupName $primaryResourceGroupName
Укажите свойства репликации для каждого диска виртуальной машины, который необходимо реплицировать (создайте конфигурацию репликации диска).
#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
Диск данных
Если у виртуальной машины есть диск данных, используйте следующую команду, чтобы создать конфигурацию диска. В противном случае этот раздел можно пропустить. С
$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 минут. Просмотрите состояние репликации в колонке Хранилище в разделе Реплицированные элементы.
После завершения репликации элементы репликации хранилища будут отображаться следующим образом:
Теперь виртуальная машина защищена, и вы можете выполнить тестовую операцию отработки отказа. Состояние репликации реплицированного элемента, представляющего виртуальную машину, переходит в защищенное состояние после завершения начальной репликации.
Чтобы отследить текущее состояние и работоспособность репликации для виртуальной машины, получите сведения о репликации для соответствующего защищенного элемента.
$PE = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $PrimaryProtectionContainer | Select FriendlyName, ProtectionState, ReplicationHealth $PE
Если в ProtectionStateотображается защищенное состояние, вы можете перейти к тестовой отработке отказа.
Выполните, проверьте и очистите тестовую отработку отказа. Вы можете пропустить тестовую отработку отказа. Однако мы рекомендуем выполнить тестовую отработку отказа, чтобы убедиться, что дополнительный регион работает должным образом.
Создайте отдельную сеть для тестовой отработки отказа (не подключенной к моей сети аварийного восстановления).
$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
Выполните тестовую отработка отказа.
$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 Задания.
После успешного завершения тестового задания отработки отказа можно подключиться к тестовой отработке отказа виртуальной машины и проверить тестовую отработку отказа. Когда проверка созданной тестовой виртуальной машины завершится, удалите эту тестовую копию, запустив операцию очистки после тестовой отработки отказа. Эта операция удаляет тестовую копию виртуальной машины, созданную в процессе тестовой отработки отказа. Убедитесь, что все целевые параметры на виртуальной машине тестовой отработки отказа, включая расположение, параметры сети, отсутствие повреждения данных и отсутствие потери данных на целевой виртуальной машине. Теперь можно удалить тестовую отработку отказа и начать отработку отказа.
$Job_TFOCleanup = Start-AzRecoveryServicesAsrTestFailoverCleanupJob - ReplicationProtectedItem $ReplicationProtectedItem Get-AzRecoveryServicesAsrJob -Job $Job_TFOCleanup | Select State
Следующим шагом будет отработка отказа виртуальной машины. На этом шаге будет создана виртуальная машина с использованием реплицированных дисков в регионе восстановления.
$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
.Создайте учетную запись хранения кэша для журналов репликации в регионе восстановления.
$EdgeZoneCacheStorageAccount = New-AzStorageAccount -Name "cachestorageedgezone" - ResourceGroupName "<ResourceGroupName>" -Location '<EdgeZoneRegion>' -SkuName Standard_LRS -Kind Storage
Используйте контейнер защиты восстановления, новую учетную запись хранения кэша в регионе 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 минут, и состояние переместится с Выполняется на Успешно.
отключение репликации;
Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem $ReplicationProtectedItem
Очистите среду. Этот шаг является необязательным и может использоваться для удаления группы ресурсов.
Remove-AzResourceGroup -Name $Name -Force