Partilhar via


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.

  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 malha de Recuperação de 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 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
      }
      
    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 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
    
    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 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
      
      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 
        $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.

        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
        
    5. 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”
      
    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 do trabalho de um trabalho 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 status da replicação na folha do Vault em Itens replicados.

    Captura de tela de itens replicados.

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

    Captura de tela 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 você vir Protegido no ProtectionState, estará pronto para continuar a testar o failover.

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

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

    1. 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
      
    2. Execute 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 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
    
  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 o trabalho de failover for bem-sucedido, você poderá confirmar o failover.

     $CommitFailoverJob = Start-AzRecoveryServicesAsrCommitFailoverJob -
    ReplicationProtectedItem $ReplicationProtectedItem 
    
    1. 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
      
  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