Репликация виртуальных машин, работающих в расширенной зоне 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.
Войдите в учетную запись 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 "<AzureRegion>"
Создайте хранилище служб восстановления в дополнительном регионе.
$vault = New-AzRecoveryServicesVault -Name "EdgeZoneRecoveryVault" - ResourceGroupName "edgezonerecovery" -Location "\<EdgeZoneRegion\>" Write-Output $vault
Задание контекста хранилища.
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
Создайте структуру Primary Site Recovery.
$TempASRJob = New-AzRecoveryServicesAsrFabric -Azure -Location “<AzureRegion>” - 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 '<AzureRegion>' -SkuName Standard_LRS - Kind Storage
Убедитесь, что виртуальная сеть создается в целевом расположении. Создайте сеть восстановления в регионе восстановления.
$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
Используйте следующий командлет PowerShell для репликации виртуальной машины расширенной зоны Azure с управляемыми дисками. Этот шаг может занять около 20 минут.
Получите группу ресурсов, в которую должна быть создана виртуальная машина при отработке отказа.
$RecoveryRG = Get-AzResourceGroup -Name "edgezonerecoveryrg" -Location " <AzureRegion>"
Получение виртуальной машины и содержимое отображения.
$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 '<AzureRegion>' -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 '<AzureRegion>' -SkuName Standard_LRS -Kind Storage
Используйте контейнер защиты восстановления, новую учетную запись хранения кэша в регионе Расширенной зоны 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 минут, и состояние будет переходить от хода выполнения к успешному выполнению.
Отключение репликации.
Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem $ReplicationProtectedItem
Очистка среды. Этот шаг является необязательным и может использоваться для удаления группы ресурсов.
Remove-AzResourceGroup -Name $Name -Force