Replicar máquinas virtuais em execução em uma MEC pública do Azure na região do Azure

Importante

A funcionalidade do Azure Site Recovery para a MEC pública está em estado de versão prévia.

Este artigo descreve como replicar, fazer failover e failback de VMs (máquinas virtuais) do Azure que executam uma MEC pública do Azure na região do Azure pai em que a MEC pública do Azure é uma extensão.

Recuperação de desastre na MEC pública do Azure

O Site Recovery garante a continuidade dos negócios mantendo as cargas de trabalho em execução durante interrupções por meio da replicação continua da carga de trabalho do local primário para o secundário. A funcionalidade do ASR na MEC está em versão prévia.

Aqui, o local primário é uma MEC pública do Azure e o local secundário é a região pai à qual está conectada a MEC pública do Azure.

Configurar a recuperação de desastre para VMs em uma MEC pública do Azure usando o PowerShell

Pré-requisitos

  • Verifique se o módulo Az PowerShell do Azure está instalado. Para obter informações sobre como instalar, confira Instalar o módulo Az PowerShell do Azure.

  • A versão mínima do PowerShell do Azure Az deve ser 4.1.0. Use o seguinte comando para exibir a versão atual:

    Get-InstalledModule -Name Az
    
  • Verifique se há suporte do Azure Site Recovery para a versão de distribuição do Linux e o kernel. Para saber mais, confira a matriz de suporte.

Replicar máquinas virtuais em execução em uma MEC pública do Azure para a região do Azure

Para replicar VMs em execução em uma MEC pública do Azure na região do Azure, siga estas etapas:

Observação

Neste exemplo, o local primário é uma MEC pública do Azure e o local secundário/de recuperação é a região da MEC pública do Azure.

  1. Entre em sua conta do Azure.

    Connect-AzAccount
    
  2. Selecione a assinatura 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 dos serviços de recuperação na região secundária do Azure.

    New-AzResourceGroup -Name "edgezonerecoveryrg" -Location "<EdgeZoneRegion>"
    
  5. Crie um novo cofre dos Serviços de Recuperação na região secundária.

    $vault = New-AzRecoveryServicesVault -Name "EdgeZoneRecoveryVault" -
    ResourceGroupName "edgezonerecovery" -Location "\<EdgeZoneRegion\>"
    Write-Output $vault
    
  6. Definir o contexto do cofre.

    Set-AzRecoveryServicesAsrVaultContext -Vault $vault 
    
  7. Criar malha do Site Recovery primária.

    $TempASRJob = New-AzRecoveryServicesAsrFabric -Azure -Location “<EdgeZoneRegion>” -
    Name "EdgeZoneFabric"
    
    1. Acompanhar 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 foi concluído, suspender 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 status do trabalho deve ser Com êxito.

      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. Acompanhar 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ária 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. Acompanhar 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 status do trabalho deve ser Com êxito.

      Write-Output $TempASRJob.State
      
      $ReplicationPolicy = Get-AzRecoveryServicesAsrPolicy -Name "ReplicationPolicy"
      
  10. Criar um mapeamento de contêiner de proteção entre o contêiner 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. Acompanhar 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 status do trabalho deve ser Com êxito.

      Write-Output $TempASRJob.State
      
      $EdgeZoneToAzurePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -
      ProtectionContainer $PrimaryProtectionContainer -Name "PrimaryToRecovery"
      
    3. Criar um mapeamento de contêiner de proteção para failback entre os contêineres de proteção primários e de recuperação com a política de replicação.

      $TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name 
      "RecoveryToPrimary" -Policy $ReplicationPolicy -PrimaryProtectionContainer 
      $RecoveryProtectionContainer -RecoveryProtectionContainer 
      $PrimaryProtectionContainer
      
      1. Acompanhar 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 status do trabalho deve ser Com êxito.

        Write-Output $TempASRJob.State 
        $AzureToEdgeZonePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -
        ProtectionContainer $RecoveryProtectionContainer -Name "RecoveryToPrimary"
        
  11. Criar 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 '<EdgeZoneRegion>' -SkuName Standard_LRS -
    Kind Storage
    
  12. Certifique-se de criar uma rede virtual no local de destino. Criar uma Rede de Recuperação na região de recuperação.

    $recoveryVnet = New-AzVirtualNetwork -Name "recoveryvnet" -ResourceGroupName 
    "recoveryrg" -Location '<EdgeZoneRegion>' -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 cmdlet a seguir do PowerShell para replicar a máquina virtual do Azure da MEC públicas do Azure com discos gerenciados. Essa etapa pode demorar cerca de 20 minutos para ser concluída.

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

      $RecoveryRG = Get-AzResourceGroup -Name "edgezonerecoveryrg" -Location "
      <EdgeZoneRegion>"
      
    2. Obter VM e exibir o 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 comando a seguir para criar a configuração de disco. Se não tiver, você pode ignorar esta seçã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 GUID para o nome do item protegido por replicação para garantir a exclusividade do nome. Se você não estiver se recuperando em uma Zona de Disponibilidade, 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. Acompanhar 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. Verificar se o trabalho foi concluído com êxito. O estado do trabalho atualizado de um trabalho concluído com êxito deve ser Com êxito.

      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 começa, ele cria uma cópia dos discos de replicação da máquina virtual na região de recuperação. Essa fase é chamada de fase de replicação inicial. Esta etapa leva cerca de 20 minutos. Confira o status da replicação na folha Cofre em Itens replicados.

    Captura de tela de itens replicados.

    Quando a replicação for concluída, os itens de replicação do Cofre serão mostrados conforme mostrado abaixo:

    Captura de tela da replicação do Cofre.

    Agora, a máquina virtual está protegida, e você pode executar uma operação de teste de failover. O estado de replicação do item replicado que representa a máquina virtual passa para o estado protegido após a conclusão da replicação inicial.

    Monitore o estado e a integridade da replicação para a máquina virtual obtendo detalhes do item de replicação protegido correspondente a ele.

    $PE = Get-AzRecoveryServicesAsrReplicationProtectedItem
     -ProtectionContainer $PrimaryProtectionContainer
    | Select FriendlyName, ProtectionState, ReplicationHealth
    $PE
    

    Se observar Protegido no ProtectionState, você está pronto para prosseguir para o failover de teste.

    Captura de tela do estado de proteção.

  14. Execute, valide e limpe um failover de teste. Você pode ignorar o failover de teste. No entanto, é recomendável executar o failover de teste para garantir que sua região secundária seja conforme o esperado.

    1. Criar uma rede separada para failover de teste (não conectada à minha rede de DR).

      $TFOVnet = New-AzVirtualNetwork -Name "TFOvnet" -ResourceGroupName "edgezonerecoveryrg" 
      -Location '<EdgeZoneRegion>' -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é o trabalho ser 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
      

    Observação

    Você também pode verificar o progresso do trabalho acessando o portal, selecionando o Cofre e, em seguida, os trabalhos do Site Recovery.

    Depois que o trabalho de failover de teste for concluído com sucesso, será possível conectar-se à máquina virtual com failover de teste e validar o failover de teste. Quando o teste for concluído na máquina virtual com failover de teste, limpe a cópia de teste iniciando a operação de failover de teste de limpeza. Essa operação exclui a cópia de teste da máquina virtual 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 dados corrompidos 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. A próxima etapa 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 retornados pode não ser classificada 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. Iniciar 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ê pode confirmar o failover.

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

      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 você estiver pronto para voltar para a região original, inicie a replicação inversa para o item de replicação protegido usando o cmdlet Update-AzRecoveryServicesAsrProtectionDirection.

    1. Criar conta de armazenamento em cache para logs de replicação na região de recuperação.

      $EdgeZoneCacheStorageAccount = New-AzStorageAccount -Name "cachestorageedgezone" -
      ResourceGroupName "<ResourceGroupName>" -Location '<EdgeZoneRegion>' -SkuName 
      Standard_LRS -Kind Storage
      
    2. Use o contêiner de proteção de recuperação, a nova conta de armazenamento em cache na região da MEC pública do Azure e o grupo de recursos da 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 aproximadamente 20 minutos e o status passará de Em andamento para Com êxito.

    Captura de tela da lista Itens protegidos.

  18. Desabilite a replicação.

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

    Remove-AzResourceGroup -Name $Name -Force