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 numa Zona Estendida do Azure para a região principal 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 pré-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. Pode ser ativado na VM ou nas páginas do Vault uma vez que a VM seja criada.
  • Se estiver a usar uma conta de Armazenamento de Zona Estendida como conta de armazenamento em cache, somente as Contas de Armazenamento Premium de Blob de Blocos serão suportadas.
  • Se estiver a usar uma conta de Armazenamento de Zona Estendida como conta de armazenamento em cache, apenas High-Churn é suportado.

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.

  1. Entre na sua conta do Azure.

    Connect-AzAccount
    
  2. Selecione Subscrição correta.

    $subscription = Get-AzSubscription -SubscriptionName "<SubscriptionName>" 
    Set-AzContext $subscription.Id  
    
  3. Obtenha os detalhes da máquina virtual que você planeja replicar.

    $VM = Get-AzVM -ResourceGroupName "<ResourceGroupName>" -Name "<VMName>"   
    Write-Output $VM  
    
  4. 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>"
    
  5. 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
    
  6. Defina o contexto do cofre.

    Set-AzRecoveryServicesAsrVaultContext -Vault $vault  
    
  7. Crie a estrutura de recuperação do site primário.

    $TempASRJob = New-AzRecoveryServicesAsrFabric -Azure -Location “<AzureRegion>” -
    Name "EdgeZoneFabric"
    
    1. Acompanhe o status do trabalho para verificar a conclusão.

      while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
      
    2. Se a tarefa não tiver sido concluída, espere 10 segundos antes de verificar o estado da tarefa novamente.

      sleep 10;
      $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
      }
      
    3. Após a conclusão bem-sucedida, o estado do trabalho deve ser bem-sucedido.

      Write-Output $TempASRJob.State
      $PrimaryFabric = Get-AzRecoveryServicesAsrFabric -Name "EdgeZoneFabric"
      
  8. 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"
    
    1. 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
      
    2. 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"
      
  9. Criar uma política de replicação.

    $TempASRJob = New-AzRecoveryServicesAsrPolicy -AzureToAzure -Name 
    "ReplicationPolicy" -RecoveryPointRetentionInHours 24 -
    ApplicationConsistentSnapshotFrequencyInHours 4
    
    1. 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
      }
      
    2. Após a conclusão bem-sucedida, o estado do trabalho deve ser bem-sucedido.

      Write-Output $TempASRJob.State
      
      $ReplicationPolicy = Get-AzRecoveryServicesAsrPolicy -Name "ReplicationPolicy"
      
  10. Crie um mapeamento entre o container de proteção principal e o de recuperação utilizando a política de replicação.

    $TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name 
    "PrimaryToRecovery" -Policy $ReplicationPolicy -PrimaryProtectionContainer 
    $PrimaryProtectionContainer -RecoveryProtectionContainer 
    $RecoveryProtectionContainer
    
    1. 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
      }
      
    2. 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"
      
    3. Crie um mapeamento de contêiner de proteção para o processo de failback, entre os contêineres de recuperação e de proteção principal utilizando a política de replicação.

      $TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name 
      "RecoveryToPrimary" -Policy $ReplicationPolicy -PrimaryProtectionContainer 
      $RecoveryProtectionContainer -RecoveryProtectionContainer 
      $PrimaryProtectionContainer
      
      1. 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
        }
        
      2. Após a conclusão bem-sucedida, o estado do trabalho deve ser Succeeded.

        Write-Output $TempASRJob.State 
        $AzureToEdgeZonePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -
        ProtectionContainer $RecoveryProtectionContainer -Name "RecoveryToPrimary"
        
  11. 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
    
  12. 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
    
  13. 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.

    1. Obtenha o grupo de recursos no qual a máquina virtual deve ser criada quando houver failover.

      $RecoveryRG = Get-AzResourceGroup -Name "edgezonerecoveryrg" -Location "
      <AzureRegion>"
      
    2. Obtenha VM e exiba conteúdo.

      $vm = Get-AzVM -Name $vmName -ResourceGroupName $primaryResourceGroupName
      
    3. 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
      
    4. Disco de dados

      1. 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.

        Como 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
        
    5. Crie um item protegido por replicação para iniciar a replicação. Use um identificador GUID para nomear o item protegido por replicação, garantindo a exclusividade do nome. Se não estiver a recuperar para uma zona de disponibilidade, então não forneça o parâmetro -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. 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 
      } 
      
    7. Verifique se o trabalho foi concluído com êxito. O estado atualizado de um trabalho que foi concluído com êxito deve ser Bem-sucedido.

      Write-Output $TempASRJob.State
      
    8. 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 estado da replicação no painel do Vault em Itens replicados.

    Captura de ecrã de itens replicados.

    Quando a replicação for concluída, os itens de replicação do Vault serão mostrados como abaixo:

    Captura de ecrã da replicação do Vault.

    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 Protegido aparecer no Estado de Proteção, estará pronto para prosseguir com o teste de falha.

    Captura de ecrã do estado de Proteção.

  14. Execute, valide e limpe um failover de teste. Você pode ignorar o teste de failover. No entanto, recomendamos a execução de teste de failover para garantir que a sua região secundária apareça como esperado.

    1. Crie uma rede separada para failover de teste (não conectada à 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
      
    2. Realize um failover de teste.

      $ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem -
      FriendlyName "<VMName>" -ProtectionContainer $PrimaryProtectionContainer
      
      $TFOJob = Start-AzRecoveryServicesAsrTestFailoverJob -ReplicationProtectedItem 
      $ReplicationProtectedItem -AzureVMNetworkId $TFONetwork -Direction PrimaryToRecovery
      
    3. 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
      }
      
    4. Aguarde a conclusão do teste de failover.

      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 sucesso, poderá conectar-se à máquina virtual em que foi realizado o failover de teste e validar o failover de teste. Quando o teste estiver concluído na máquina virtual onde o teste falhou, limpe a cópia de teste iniciando a operação de limpeza do failover de teste. Esta operação elimina a cópia de teste da máquina virtual que foi criada pelo teste failover. 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
    
  15. 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
    
    1. 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
      
  16. Quando a tarefa de failover for bem-sucedida, poderá confirmar o failover.

     $CommitFailoverJob = Start-AzRecoveryServicesAsrCommitFailoverJob -
    ReplicationProtectedItem $ReplicationProtectedItem 
    
    1. Aguarde até que o trabalho de confirmação do failover seja concluído.

      while (($CommitFailoverJob.State -eq "InProgress") -or ($CommitFailoverJob.State 
      -eq "NotStarted")){
       sleep 10;
       $CommitFailoverJob = Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJob
      }
       Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJOb
      
  17. 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.

    1. 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
      
    2. 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.

    Captura de ecrã da lista Itens protegidos.

  18. Desative a replicação.

    Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem 
    $ReplicationProtectedItem
    
  19. Limpe o ambiente. Esta etapa é opcional e pode ser usada para remover o grupo de recursos.

    Remove-AzResourceGroup -Name $Name -Force
    

Próximos passos