Azure 확장 영역에서 실행되는 가상 머신을 Azure 지역에 복제
이 문서에서는 Azure 확장 영역에서 실행되는 Azure VM(가상 머신)을 부모 Azure 지역으로 복제, 장애 조치 및 장애 복구(failback)하는 방법을 설명합니다.
Important
확장 영역에 대한 Azure Site Recovery 기능은 미리 보기 상태입니다.
Azure 확장 영역의 재해 복구
Site Recovery는 워크로드를 주 위치에서 보조 위치로 지속적으로 복제하여 중단 중에 워크로드를 계속 실행하여 비즈니스 연속성을 보장합니다. 확장 영역에 대한 ASR 기능은 미리 보기로 제공됩니다.
여기서 기본 위치는 Azure 확장 영역이고 보조 위치는 Azure 확장 영역이 연결된 부모 지역입니다.
Important
- VM을 만드는 동안에는 확장 영역에서 복제를 지원하지 않습니다. VM이 만들어지면 VM 또는 자격 증명 모음 페이지에서 사용하도록 설정할 수 있습니다.
- 확장 영역 스토리지 계정을 캐시 스토리지 계정으로 사용하는 경우 블록 Blob Premium Storage 계정만 지원됩니다.
- 확장 영역 스토리지 계정을 캐시 스토리지 계정으로 사용하는 경우 높은 변동만 지원됩니다.
Azure 지역 스토리지 계정이 캐시 스토리지 계정으로 사용되는 경우 일반 및 높은 변동이 모두 지원됩니다.
PowerShell을 사용하여 Azure 확장 영역에서 VM에 대한 재해 복구 설정
PowerShell을 사용하여 Azure 확장 영역에서 VM에 대한 재해 복구를 설정하기 위한 필수 구성 요소는 다음과 같습니다.
필수 조건
Azure Az PowerShell 모듈이 설치되어 있는지 확인합니다. 설치하는 방법에 대한 자세한 내용은 Azure Az PowerShell 모듈 설치를 참조하세요.
Azure Az PowerShell 버전은 4.1.0 이상이어야 합니다. 다음 명령을 사용하여 현재 버전을 확인합니다.
Get-InstalledModule -Name Az
Linux 배포판 버전 및 커널이 Azure Site Recovery에서 지원되는지 확인합니다. 자세한 내용은 지원 매트릭스를 참조하세요.
Azure 확장 영역에서 실행되는 가상 머신을 Azure 지역에 복제
Azure 확장 영역에서 실행되는 VM을 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 지역에서 Recovery Services 자격 증명 모음에 대한 리소스 그룹을 만듭니다.
New-AzResourceGroup -Name "edgezonerecoveryrg" -Location "<AzureRegion>"
새 Recovery Services 자격 증명 모음을 보조 지역에 만듭니다.
$vault = New-AzRecoveryServicesVault -Name "EdgeZoneRecoveryVault" - ResourceGroupName "edgezonerecovery" -Location "\<EdgeZoneRegion\>" Write-Output $vault
자격 증명 모음 컨텍스트를 설정합니다.
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
기본 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 cmdlet을 사용하여 관리 디스크를 사용하여 Azure 확장 영역 가상 머신을 복제합니다. 이 단계를 완료하려면 20분 정도 걸릴 수 있습니다.
장애 조치(failover) 시 가상 머신을 만들어야 하는 리소스 그룹을 가져옵니다.
$RecoveryRG = Get-AzResourceGroup -Name "edgezonerecoveryrg" -Location " <AzureRegion>"
VM을 가져오고 콘텐츠를 표시합니다.
$vm = Get-AzVM -Name $vmName -ResourceGroupName $primaryResourceGroupName
복제해야 하는 VM의 각 디스크에 대한 복제 속성을 지정합니다(디스크 복제 구성 만들기).
#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
데이터 디스크
VM에 데이터 디스크가 있는 경우 다음 명령을 사용하여 디스크 구성을 만듭니다. 이 섹션은 건너뛸 수 있습니다.
$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분 정도 걸립니다. [자격 증명 모음] 블레이드의 복제된 항목 아래에서 복제 상태를 확인합니다.
복제가 완료되면 자격 증명 모음 복제 항목이 다음과 같이 표시됩니다.
이제 가상 머신이 보호되고 테스트 장애 조치(failover) 작업을 수행할 수 있습니다. 초기 복제가 완료되면 가상 머신을 나타내는 복제된 항목의 복제 상태는 '보호됨' 상태가 됩니다.
가상 머신에 해당하는 복제 보호된 항목의 세부 정보를 가져와서 해당 가상 머신에 대한 복제 상태를 모니터링합니다.
$PE = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $PrimaryProtectionContainer | Select FriendlyName, ProtectionState, ReplicationHealth $PE
ProtectionState에 Protected가 표시되면 테스트 장애 조치(failover)를 진행할 준비가 된 것입니다.
테스트 장애 조치(failover)를 수행, 유효성 검사 및 정리합니다. 테스트 장애 조치(failover)는 건너뛸 수 있습니다. 그러나 테스트 장애 조치(failover)를 실행하여 보조 지역이 예상대로 표시되는지 확인하는 것이 좋습니다.
테스트 장애 조치(failover)를 위한 별도의 네트워크를 만듭니다(내 DR 네트워크에 연결되지 않음).
$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
테스트 장애 조치(failover)를 수행합니다.
$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 작업을 선택하여 작업 진행 상황을 확인할 수도 있습니다.
테스트 장애 조치(failover) 작업이 성공적으로 완료되면 테스트 장애 조치된 가상 머신에 연결하고 테스트 장애 조치의 유효성을 검사할 수 있습니다. 테스트 장애 조치(failover)된 가상 머신에서 테스트가 완료되면 테스트 장애 조치(failover) 정리 작업을 시작하여 테스트 복사본을 정리합니다. 이 작업은 테스트 장애 조치(failover)로 만들어진 가상 머신의 테스트 복사본을 삭제합니다. 위치, 네트워크 설정, 데이터 손상 없음 및 대상 VM에서 손실된 데이터 없음을 포함하여 모든 대상 설정이 테스트 장애 조치(failover) VM에서 올바른지 확인합니다. 이제 테스트 장애 조치(failover)를 삭제하고 장애 조치(failover)를 시작할 수 있습니다.
$Job_TFOCleanup = Start-AzRecoveryServicesAsrTestFailoverCleanupJob - ReplicationProtectedItem $ReplicationProtectedItem Get-AzRecoveryServicesAsrJob -Job $Job_TFOCleanup | Select State
다음 단계는 가상 머신을 장애 조치(failover)하는 것입니다. 이 단계에서는 복구 지역의 복제된 디스크를 사용하여 VM을 만듭니다.
$ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem - FriendlyName "<VMName>" -ProtectionContainer $PrimaryProtectionContainer $RecoveryPoints = Get-AzRecoveryServicesAsrRecoveryPoint -ReplicationProtectedItem $ReplicationProtectedItem
반환되는 복구 지점 목록은 시간순으로 정렬되지 않을 수 있습니다. 가상 머신에 대한 가장 오래된 복구 지점 또는 최신 복구 지점을 찾으려면 먼저 이러한 복구 지점을 정렬해야 합니다.
"{0} {1}" -f $RecoveryPoints[0].RecoveryPointType, $RecoveryPoints[- 1].RecoveryPointTime
장애 조치(failover) 작업을 시작합니다.
$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
장애 조치(failover) 작업이 성공하면 장애 조치를 커밋할 수 있습니다.
$CommitFailoverJob = Start-AzRecoveryServicesAsrCommitFailoverJob - ReplicationProtectedItem $ReplicationProtectedItem
장애 조치(failover) 커밋 작업이 완료될 때까지 기다립니다.
while (($CommitFailoverJob.State -eq "InProgress") -or ($CommitFailoverJob.State -eq "NotStarted")){ sleep 10; $CommitFailoverJob = Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJob } Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJOb
장애 조치 후, 원래 지역으로 되돌릴 준비가 되면
Update-AzRecoveryServicesAsrProtectionDirection
cmdlet을 사용하여 복제 보호된 항목에 대한 역방향 복제를 시작합니다.복구 지역에서 복제 로그에 대한 캐시 스토리지 계정을 만듭니다.
$EdgeZoneCacheStorageAccount = New-AzStorageAccount -Name "cachestorageedgezone" - ResourceGroupName "<ResourceGroupName>" -Location '<AzureRegion>' -SkuName Standard_LRS -Kind Storage
복구 보호 컨테이너, Azure 확장 영역 지역의 새 캐시 스토리지 계정 및 원본 지역 VM 리소스 그룹을 사용합니다.
$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
다음 단계
- Azure Site Recovery PowerShell 참조를 확인하여 PowerShell을 사용하여 복구 계획을 만들고 장애 조치(failover) 및 장애 복구(failback)를 수행하는 방법을 알아봅니다.