Replicar máquinas virtuais em execução em uma Zona Estendida do Azure para uma região do Azure
Este artigo descreve como replicar, fazer failover e failback de máquinas virtuais (VMs) do Azure em execução em uma Zona Estendida do Azure para sua região pai do Azure.
Importante
A funcionalidade do Azure Site Recovery para Zonas Estendidas está em estado de visualização.
Recuperação de desastres na Zona Estendida do Azure
A Recuperação de Site garante a continuidade dos negócios mantendo as cargas de trabalho em execução durante interrupções, replicando continuamente a carga de trabalho de um local principal para um local secundário. A funcionalidade ASR para Zonas Estendidas está em visualização.
Aqui, o local primário é uma Zona Estendida do Azure e o local secundário é a região pai à qual a Zona Estendida do Azure está conectada.
Importante
- Durante a criação de VM, não oferecemos suporte à replicação na Zona Estendida. Ele pode ser habilitado na VM ou nas páginas do Vault assim que a VM for criada.
- Se estiver usando uma conta de Armazenamento de Zona Estendida como conta de armazenamento em cache, somente as Contas de Armazenamento Premium de Blob de Bloco serão suportadas.
- Se estiver usando uma conta de Armazenamento de Zona Estendida como conta de armazenamento em cache, somente a Alta Churn será suportada.
Se a conta de armazenamento da região do Azure for usada como conta de armazenamento em cache, há suporte para a rotatividade normal ou alta.
Configurar a recuperação de desastres para VMs em uma Zona Estendida do Azure usando o PowerShell
A seguir estão os pré-requisitos para configurar a recuperação de desastres para VMs em uma Zona Estendida do Azure usando o PowerShell:
Pré-requisitos
Verifique se o módulo Azure Az PowerShell está instalado. Para obter informações sobre como instalar, consulte Instalar o módulo Azure Az PowerShell.
A versão mínima do Azure Az PowerShell deve ser 4.1.0. Use o seguinte comando para ver a versão atual:
Get-InstalledModule -Name Az
Verifique se a versão da distro Linux e o kernel são suportados pelo Azure Site Recovery. Para obter mais informações, veja a matriz de suporte.
Replicar máquinas virtuais em execução em uma Zona Estendida do Azure para uma região do Azure
Para replicar VMs em execução em uma Zona Estendida do Azure para uma região do Azure, siga estas etapas:
Nota
Neste exemplo, o local principal é uma Zona Estendida do Azure e o local secundário/de recuperação é a região da Zona Estendida do Azure.
Entre na sua conta do Azure.
Connect-AzAccount
Selecione Subscrição correta.
$subscription = Get-AzSubscription -SubscriptionName "<SubscriptionName>" Set-AzContext $subscription.Id
Obtenha os detalhes da máquina virtual que você planeja replicar.
$VM = Get-AzVM -ResourceGroupName "<ResourceGroupName>" -Name "<VMName>" Write-Output $VM
Crie um grupo de recursos para o cofre de serviços de recuperação na região secundária do Azure.
New-AzResourceGroup -Name "edgezonerecoveryrg" -Location "<AzureRegion>"
Crie um novo cofre de serviços de recuperação na região secundária.
$vault = New-AzRecoveryServicesVault -Name "EdgeZoneRecoveryVault" - ResourceGroupName "edgezonerecovery" -Location "\<EdgeZoneRegion\>" Write-Output $vault
Defina o contexto do cofre.
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
Crie a malha de Recuperação de Site Primário.
$TempASRJob = New-AzRecoveryServicesAsrFabric -Azure -Location “<AzureRegion>” - Name "EdgeZoneFabric"
Acompanhe o status do trabalho para verificar a conclusão.
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
Se o trabalho não tiver sido concluído, suspenda por 10 segundos antes de verificar o status do trabalho novamente.
sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
Após a conclusão bem-sucedida, o estado do trabalho deve ser bem-sucedido.
Write-Output $TempASRJob.State $PrimaryFabric = Get-AzRecoveryServicesAsrFabric -Name "EdgeZoneFabric"
Use a malha primária para criar contêineres de proteção primária e de recuperação.
$TempASRJob = New-AzRecoveryServicesAsrProtectionContainer -InputObject $PrimaryFabric -Name "EdgeZoneProtectionContainer"
Acompanhe o status do trabalho para verificar a conclusão.
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob } Write-Output $TempASRJob.State
Os contêineres de proteção primário e de recuperação são criados na região primária (dentro da malha primária).
$PrimaryProtectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric $primaryFabric -Name "EdgeZoneProtectionContainer" $RecoveryProtectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric $primaryFabric -Name "EdgeZoneProtectionContainer-t"
Criar uma política de replicação.
$TempASRJob = New-AzRecoveryServicesAsrPolicy -AzureToAzure -Name "ReplicationPolicy" -RecoveryPointRetentionInHours 24 - ApplicationConsistentSnapshotFrequencyInHours 4
Acompanhe o status do trabalho para verificar a conclusão.
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
Após a conclusão bem-sucedida, o estado do trabalho deve ser bem-sucedido.
Write-Output $TempASRJob.State $ReplicationPolicy = Get-AzRecoveryServicesAsrPolicy -Name "ReplicationPolicy"
Crie um mapeamento de contêiner de proteção entre os contêineres de proteção principal e de recuperação com a política de replicação.
$TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name "PrimaryToRecovery" -Policy $ReplicationPolicy -PrimaryProtectionContainer $PrimaryProtectionContainer -RecoveryProtectionContainer $RecoveryProtectionContainer
Acompanhe o status do trabalho para verificar a conclusão.
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
Após a conclusão bem-sucedida, o estado do trabalho deve ser bem-sucedido.
Write-Output $TempASRJob.State $EdgeZoneToAzurePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping - ProtectionContainer $PrimaryProtectionContainer -Name "PrimaryToRecovery"
Crie um mapeamento de contêiner de proteção para failback, entre os contêineres de recuperação e de proteção principal com a política de replicação.
$TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name "RecoveryToPrimary" -Policy $ReplicationPolicy -PrimaryProtectionContainer $RecoveryProtectionContainer -RecoveryProtectionContainer $PrimaryProtectionContainer
Acompanhe o status do trabalho para verificar a conclusão.
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
Após a conclusão bem-sucedida, o estado do trabalho deve ser bem-sucedido.
Write-Output $TempASRJob.State $AzureToEdgeZonePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping - ProtectionContainer $RecoveryProtectionContainer -Name "RecoveryToPrimary"
Crie uma conta de armazenamento em cache para logs de replicação na região primária. A conta de armazenamento em cache é criada na região primária.
$CacheStorageAccount = New-AzStorageAccount -Name "cachestorage" -ResourceGroupName "<primary ResourceGroupName>" -Location '<AzureRegion>' -SkuName Standard_LRS - Kind Storage
Certifique-se de criar uma rede virtual no local de destino. Crie uma rede de recuperação na região de recuperação.
$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
Use o seguinte cmdlet do PowerShell para replicar uma máquina virtual da Zona Estendida do Azure com discos gerenciados. Esta etapa pode levar cerca de 20 minutos para ser concluída.
Obtenha o grupo de recursos no qual a máquina virtual deve ser criada quando houver failover.
$RecoveryRG = Get-AzResourceGroup -Name "edgezonerecoveryrg" -Location " <AzureRegion>"
Obtenha VM e exiba conteúdo.
$vm = Get-AzVM -Name $vmName -ResourceGroupName $primaryResourceGroupName
Especifique as propriedades de replicação para cada disco da VM que deve ser replicado (criar configuração de replicação de disco).
#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
Disco de dados
Se a VM tiver disco de dados, use o seguinte comando para criar a configuração do disco. Caso contrário, pode ignorar esta secção. De
$datadiskId
a$DataDisk1ReplicationConfig $datadiskId = $vm.StorageProfile.OSDisk.ManagedDisk.Id
.Em alternativa,
$RecoveryReplicaDiskAccountType = "Premium_LRS" $RecoveryTargetDiskAccountType = "Premium_LRS" $RecoveryRGId = $RecoveryRG.ResourceId $DataDisk1ReplicationConfig = New-AzRecoveryServicesAsrAzureToAzureDiskReplicationConfig -ManagedDisk -LogStorageAccountId $CacheStorageAccount.Id ` -DiskId $OSdiskId -RecoveryResourceGroupId $RecoveryRGId - RecoveryReplicaDiskAccountType $RecoveryReplicaDiskAccountType ` -RecoveryTargetDiskAccountType $RecoveryTargetDiskAccountType
Crie um item protegido por replicação para iniciar a replicação. Use um GUID para o nome do item protegido por replicação para garantir a exclusividade do nome. Se você não estiver recuperando para uma zona de disponibilidade, não forneça o
-RecoveryAvailabilityZone
parâmetro.$TempASRJob = New-AzRecoveryServicesAsrReplicationProtectedItem -AzureToAzure -AzureVmId $VM.Id -Name $vm.Name -ProtectionContainerMapping $EdgeZoneToAzurePCMapping - AzureToAzureDiskReplicationConfiguration $DataDisk1ReplicationConfig - RecoveryResourceGroupId $RecoveryRGId -RecoveryAvailabilityZone “1” - RecoveryAzureNetworkId $recoveryVnet.Id -RecoveryAzureSubnetName “defaultsubnetconf”
Acompanhe o status do trabalho para verificar a conclusão.
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
Verifique se o trabalho foi concluído com êxito. O estado atualizado do trabalho de um trabalho concluído com êxito deve ser Bem-sucedido.
Write-Output $TempASRJob.State
Depois que a operação para iniciar a replicação for bem-sucedida, os dados da máquina virtual serão replicados para a região de recuperação.
Inicialmente, quando o processo de replicação é iniciado, ele cria uma cópia dos discos replicantes da máquina virtual na região de recuperação. Essa fase é chamada de fase inicial de replicação. Este passo demora cerca de 20 minutos. Veja o status da replicação na folha do Vault em Itens replicados.
Quando a replicação for concluída, os itens de replicação do Vault serão mostrados como abaixo:
Agora a máquina virtual está protegida e você pode executar uma operação de failover de teste. O estado de replicação do item replicado que representa a máquina virtual vai para o estado protegido após a conclusão da replicação inicial.
Monitore o estado de replicação e a integridade da replicação para a máquina virtual obtendo detalhes do item protegido de replicação que corresponde a ela:
$PE = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $PrimaryProtectionContainer | Select FriendlyName, ProtectionState, ReplicationHealth $PE
Se você vir Protegido no ProtectionState, estará pronto para continuar a testar o failover.
Execute, valide e limpe um failover de teste. Você pode ignorar o failover de teste. No entanto, recomendamos a execução de failover de teste para garantir que sua região secundária apareça conforme o esperado.
Crie uma rede separada para failover de teste (não conectado à minha rede 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
Execute um failover de teste.
$ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem - FriendlyName "<VMName>" -ProtectionContainer $PrimaryProtectionContainer $TFOJob = Start-AzRecoveryServicesAsrTestFailoverJob -ReplicationProtectedItem $ReplicationProtectedItem -AzureVMNetworkId $TFONetwork -Direction PrimaryToRecovery
Aguarde até que o trabalho seja concluído.
while (($TFOJob.State -eq "InProgress") -or ($TFOJob.State -eq "NotStarted")){ sleep 10; $TFOJob = Get-AzRecoveryServicesAsrJob -Job $TFOJob }
Aguarde a conclusão do failover de teste.
Get-AzRecoveryServicesAsrJob -Job $TFOJob
Nota
Você também pode verificar o progresso do trabalho acessando o portal, selecionando o Vault e, em seguida, selecionando os Trabalhos de Recuperação de Site.
Depois que o trabalho de failover de teste for concluído com êxito, você poderá se conectar à máquina virtual com failover de teste e validar o failover de teste. Quando o teste estiver concluído na máquina virtual com falha de teste, limpe a cópia de teste iniciando a operação de failover do teste de limpeza. Esta operação exclui a cópia de teste da máquina virtual que foi criada pelo failover de teste. Verifique se todas as configurações de destino estão corretas na VM de failover de teste, incluindo local, configuração de rede, sem corrupção de dados e sem perda de dados na VM de destino. Agora você pode excluir o failover de teste e iniciar o failover.
$Job_TFOCleanup = Start-AzRecoveryServicesAsrTestFailoverCleanupJob - ReplicationProtectedItem $ReplicationProtectedItem Get-AzRecoveryServicesAsrJob -Job $Job_TFOCleanup | Select State
O próximo passo seria fazer failover da máquina virtual. Esta etapa criará a VM usando os discos replicados na região de recuperação.
$ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem - FriendlyName "<VMName>" -ProtectionContainer $PrimaryProtectionContainer $RecoveryPoints = Get-AzRecoveryServicesAsrRecoveryPoint -ReplicationProtectedItem $ReplicationProtectedItem
A lista de pontos de recuperação devolvidos não pode ser ordenada cronologicamente. Você precisa classificá-los primeiro para encontrar os pontos de recuperação mais antigos ou mais recentes para a máquina virtual.
"{0} {1}" -f $RecoveryPoints[0].RecoveryPointType, $RecoveryPoints[- 1].RecoveryPointTime
Inicie o trabalho de 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
Quando o trabalho de failover for bem-sucedido, você poderá confirmar o failover.
$CommitFailoverJob = Start-AzRecoveryServicesAsrCommitFailoverJob - ReplicationProtectedItem $ReplicationProtectedItem
Aguarde até que o trabalho de failover de confirmação seja concluído.
while (($CommitFailoverJob.State -eq "InProgress") -or ($CommitFailoverJob.State -eq "NotStarted")){ sleep 10; $CommitFailoverJob = Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJob } Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJOb
Após um failover, quando estiver pronto para voltar à região original, inicie a replicação reversa para o item protegido de replicação usando o
Update-AzRecoveryServicesAsrProtectionDirection
cmdlet.Crie uma conta de armazenamento em cache para logs de replicação na região de recuperação.
$EdgeZoneCacheStorageAccount = New-AzStorageAccount -Name "cachestorageedgezone" - ResourceGroupName "<ResourceGroupName>" -Location '<AzureRegion>' -SkuName Standard_LRS -Kind Storage
Use o contêiner de proteção de recuperação, a nova conta de armazenamento de cache na região da Zona Estendida do Azure e o grupo de recursos de VM da região de origem.
$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
Esta etapa leva ~20 minutos e o status passará de Em andamento para Bem sucedido.
Desative a replicação.
Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem $ReplicationProtectedItem
Limpe o ambiente. Esta etapa é opcional e pode ser usada para remover o grupo de recursos.
Remove-AzResourceGroup -Name $Name -Force