Replicare le macchine virtuali in esecuzione in un MEC pubblico di Azure nell'area di Azure

Importante

La funzionalità di Azure Site Recovery per MEC pubblico è in stato di anteprima.

Questo articolo descrive come replicare, eseguire il failover e il failback di macchine virtuali di Azure che eseguono un MEC pubblico di Azure nell'area padre di Azure in cui MEC pubblico di Azure è un'estensione.

Ripristino di emergenza in MEC pubblico di Azure

Site Recovery garantisce la continuità aziendale mantenendo i carichi di lavoro in esecuzione durante le interruzioni replicando continuamente il carico di lavoro dalla posizione primaria a quella secondaria. La funzionalità ASR per MEC è disponibile in anteprima.

Qui la posizione primaria è un MEC pubblico di Azure e la posizione secondaria è l'area padre a cui è connesso il MEC pubblico di Azure.

Configurare il ripristino di emergenza per le macchine virtuali in un MEC pubblico di Azure usando PowerShell

Prerequisiti

  • Verificare che il modulo Azure Az PowerShell sia installato. Per informazioni su come installare, vedere Installare il modulo Azure Az PowerShell.

  • La versione minima di Azure Az PowerShell deve essere 4.1.0. Usare il comando seguente per visualizzare la versione corrente:

    Get-InstalledModule -Name Az
    
  • Verificare che la versione della distribuzione Linux e il kernel siano supportati da Azure Site Recovery. Per altre informazioni, vedere la matrice di supporto.

Replicare le macchine virtuali in esecuzione in un MEC pubblico di Azure nell'area di Azure

Per replicare le macchine virtuali in esecuzione in un MEC pubblico di Azure nell'area di Azure, seguire questa procedura:

Nota

Per questo esempio, la posizione primaria è un MEC pubblico di Azure e la posizione secondaria/ripristino è l'area del MEC pubblico di Azure.

  1. Accedere all'account di Azure.

    Connect-AzAccount
    
  2. Selezionare la sottoscrizione corretta.

    $subscription = Get-AzSubscription -SubscriptionName "<SubscriptionName>" 
    Set-AzContext $subscription.Id 
    
  3. Ottenere i dettagli della macchina virtuale che si prevede di replicare.

    $VM = Get-AzVM -ResourceGroupName "<ResourceGroupName>" -Name "<VMName>" 
    
    Write-Output $VM 
    
  4. Creare un gruppo di risorse per l'insieme di credenziali dei servizi di ripristino nell'area secondaria di Azure.

    New-AzResourceGroup -Name "edgezonerecoveryrg" -Location "<EdgeZoneRegion>"
    
  5. Creare un nuovo insieme di credenziali di Servizi di ripristino nell'area secondaria.

    $vault = New-AzRecoveryServicesVault -Name "EdgeZoneRecoveryVault" -
    ResourceGroupName "edgezonerecovery" -Location "\<EdgeZoneRegion\>"
    Write-Output $vault
    
  6. Impostare il contesto dell'insieme di credenziali.

    Set-AzRecoveryServicesAsrVaultContext -Vault $vault 
    
  7. Creare l'infrastruttura di Site Recovery primario.

    $TempASRJob = New-AzRecoveryServicesAsrFabric -Azure -Location “<EdgeZoneRegion>” -
    Name "EdgeZoneFabric"
    
    1. Tenere traccia dello stato del processo per verificarne il completamento.

      while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
      
    2. Se il processo non è stato completato, impostare una sospensione per 10 secondi prima di controllare di nuovo lo stato del processo.

      sleep 10;
      $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
      }
      
    3. Al termine, lo stato del processo deve essere Completato.

      Write-Output $TempASRJob.State
      $PrimaryFabric = Get-AzRecoveryServicesAsrFabric -Name "EdgeZoneFabric"
      
  8. Usare l'infrastruttura primaria per creare contenitori di protezione primaria e di ripristino.

    $TempASRJob = New-AzRecoveryServicesAsrProtectionContainer -InputObject 
    $PrimaryFabric -Name "EdgeZoneProtectionContainer"
    
    1. Tenere traccia dello stato del processo per verificarne il completamento.

      while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq 
      "NotStarted")){
       sleep 10;
       $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
      }
      Write-Output $TempASRJob.State
      
    2. I contenitori di protezione primaria e di ripristino vengono creati nell'area primaria (all'interno dell'infrastruttura primaria).

      $PrimaryProtectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric 
      $primaryFabric -Name "EdgeZoneProtectionContainer"
      $RecoveryProtectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric 
      $primaryFabric -Name "EdgeZoneProtectionContainer-t"
      
  9. Creare i criteri di replica.

    $TempASRJob = New-AzRecoveryServicesAsrPolicy -AzureToAzure -Name 
    "ReplicationPolicy" -RecoveryPointRetentionInHours 24 -
    ApplicationConsistentSnapshotFrequencyInHours 4
    
    1. Tenere traccia dello stato del processo per verificarne il completamento.

      while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq 
      "NotStarted")){
       sleep 10;
       $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
      }
      
    2. Al termine, lo stato del processo deve essere Completato.

      Write-Output $TempASRJob.State
      
      $ReplicationPolicy = Get-AzRecoveryServicesAsrPolicy -Name "ReplicationPolicy"
      
  10. Creare un mapping di un contenitore di protezione tra i contenitori di protezione primaria e di ripristino con i criteri di replica.

    $TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name 
    "PrimaryToRecovery" -Policy $ReplicationPolicy -PrimaryProtectionContainer 
    $PrimaryProtectionContainer -RecoveryProtectionContainer 
    $RecoveryProtectionContainer
    
    1. Tenere traccia dello stato del processo per verificarne il completamento.

      while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq 
      "NotStarted")){
       sleep 10;
       $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
      }
      
    2. Al termine, lo stato del processo deve essere Completato.

      Write-Output $TempASRJob.State
      
      $EdgeZoneToAzurePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -
      ProtectionContainer $PrimaryProtectionContainer -Name "PrimaryToRecovery"
      
    3. Creare un mapping del contenitore di protezione per il failback, tra i contenitori di ripristino e di protezione primaria con i criteri di replica.

      $TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name 
      "RecoveryToPrimary" -Policy $ReplicationPolicy -PrimaryProtectionContainer 
      $RecoveryProtectionContainer -RecoveryProtectionContainer 
      $PrimaryProtectionContainer
      
      1. Tenere traccia dello stato del processo per verificarne il completamento.

        while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq 
        "NotStarted")){
         sleep 10;
         $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
        }
        
      2. Al termine, lo stato del processo deve essere Completato.

        Write-Output $TempASRJob.State 
        $AzureToEdgeZonePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -
        ProtectionContainer $RecoveryProtectionContainer -Name "RecoveryToPrimary"
        
  11. Creare un account di archiviazione della cache per i log di replica nell'area primaria. Nell'area primaria viene creato un nuovo account di archiviazione della cache.

    $CacheStorageAccount = New-AzStorageAccount -Name "cachestorage" -ResourceGroupName 
    "<primary ResourceGroupName>" -Location '<EdgeZoneRegion>' -SkuName Standard_LRS -
    Kind Storage
    
  12. Assicurarsi di creare una rete virtuale nel percorso di destinazione. Creare una rete di ripristino nell'area di ripristino.

    $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. Usare il cmdlet di PowerShell seguente per replicare una macchina virtuale di MEC pubblico di Azure con dischi gestiti. Il completamento di questo passaggio potrebbe richiedere circa 20 minuti.

    1. Ottenere il gruppo di risorse in cui deve essere creata la macchina virtuale quando viene eseguito il failover.

      $RecoveryRG = Get-AzResourceGroup -Name "edgezonerecoveryrg" -Location "
      <EdgeZoneRegion>"
      
    2. Ottenere la macchina virtuale e visualizzare il contenuto.

      $vm = Get-AzVM -Name $vmName -ResourceGroupName $primaryResourceGroupName
      
    3. Specificare le proprietà di replica per ogni disco della macchina virtuale che deve essere replicato (creare la configurazione della replica del 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 dati

      1. Se la macchina virtuale dispone di un disco dati, usare il comando seguente per creare la configurazione del disco. In caso contrario, è possibile ignorare questa sezione. Da $datadiskId a $DataDisk1ReplicationConfig $datadiskId = $vm.StorageProfile.OSDisk.ManagedDisk.Id.

        In 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. Creare un elemento protetto dalla replica per avviare la replica. Usare un GUID per il nome dell'elemento protetto dalla replica per garantire l'univocità del nome. Se non si esegue il ripristino in una zona di disponibilità, non specificare il parametro -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. Tenere traccia dello stato del processo per verificarne il completamento.

      while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
      sleep 10; 
      $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob 
      } 
      
    7. Controllare se il processo è stato completato correttamente. Lo stato aggiornato di un processo completato correttamente deve essere Operazione completata.

      Write-Output $TempASRJob.State
      
    8. Al termine dell'operazione per avviare la replica, i dati della macchina virtuale vengono replicati nell'area di ripristino.

    Inizialmente, all'avvio del processo di replica, viene creata una copia dei dischi di replica della macchina virtuale nell'area di ripristino. Questa fase viene denominata fase di replica iniziale. Questo passaggio richiede circa 20 minuti. Vedere lo stato della replica nel pannello Insieme di credenziali in Elementi replicati.

    Screenshot of replicated items.

    Al termine della replica, gli elementi di replica dell'insieme di credenziali verranno visualizzati come segue:

    Screenshot of Vault replication.

    Ora la macchina virtuale è protetta ed è possibile eseguire un'operazione di failover di test. Lo stato di replica dell'elemento replicato che rappresenta la macchina virtuale passa allo stato protetto al termine della replica iniziale.

    Per monitorare lo stato e l'integrità della replica della macchina virtuale, ottenere i dettagli dell'elemento della macchina virtuale protetto dalla replica:

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

    Se si visualizza Protetto in ProtectionState, si è pronti a eseguire il failover di test.

    Screenshot of Protection state.

  14. Eseguire, convalidare e pulire un failover di test. È possibile ignorare il failover di test. È tuttavia consigliabile eseguire il failover di test per assicurarsi che l'area secondaria venga visualizzata come previsto.

    1. Creare una rete separata per il failover di test (non connessa alla rete di ripristino di emergenza).

      $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. Eseguire un failover di test.

      $ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem -
      FriendlyName "<VMName>" -ProtectionContainer $PrimaryProtectionContainer
      
      $TFOJob = Start-AzRecoveryServicesAsrTestFailoverJob -ReplicationProtectedItem 
      $ReplicationProtectedItem -AzureVMNetworkId $TFONetwork -Direction PrimaryToRecovery
      
    3. Attendere il completamento del processo.

      while (($TFOJob.State -eq "InProgress") -or ($TFOJob.State -eq 
      "NotStarted")){
       sleep 10;
       $TFOJob = Get-AzRecoveryServicesAsrJob -Job $TFOJob
      }
      
    4. Attendere il completamento del failover di test.

      Get-AzRecoveryServicesAsrJob -Job $TFOJob
      

    Nota

    È anche possibile controllare lo stato di avanzamento del processo passando al portale, selezionando l'insieme di credenziali e quindi selezionando i processi di Site Recovery.

    Al termine del processo di failover di test, è possibile connettersi alla macchina virtuale sottoposta al failover di test e convalidare il failover di test. Al termine del test sulla macchina virtuale sottoposta al failover di test, eseguire la pulizia della copia di test avviando l'operazione di pulizia del failover di test. Questa operazione elimina la copia di test della macchina virtuale creata nell'ambito del failover di test. Verificare che tutte le impostazioni di destinazione siano corrette nella macchina virtuale di failover di test, tra cui posizione e impostazione di rete, e che non vi siano dati danneggiati o persi nella macchina virtuale di destinazione. È ora possibile eliminare il failover di test e avviare il failover.

    $Job_TFOCleanup = Start-AzRecoveryServicesAsrTestFailoverCleanupJob -
    ReplicationProtectedItem $ReplicationProtectedItem 
    Get-AzRecoveryServicesAsrJob -Job $Job_TFOCleanup | Select State
    
  15. Il passaggio successivo consiste nell'eseguire il failover della macchina virtuale. Questo passaggio creerà la macchina virtuale usando i dischi replicati nell'area di ripristino.

    $ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem -
    FriendlyName "<VMName>" -ProtectionContainer $PrimaryProtectionContainer
    $RecoveryPoints = Get-AzRecoveryServicesAsrRecoveryPoint -ReplicationProtectedItem 
    $ReplicationProtectedItem 
    

    L'elenco dei punti di ripristino restituiti potrebbe non essere ordinato cronologicamente. È necessario prima di tutto ordinarli per trovare i punti di ripristino meno recenti o più recenti per la macchina virtuale.

     "{0} {1}" -f $RecoveryPoints[0].RecoveryPointType, $RecoveryPoints[-
    1].RecoveryPointTime
    
    1. Avviare il processo di 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 il processo di failover ha esito positivo, è possibile eseguire il commit del failover.

     $CommitFailoverJob = Start-AzRecoveryServicesAsrCommitFailoverJob -
    ReplicationProtectedItem $ReplicationProtectedItem 
    
    1. Attendere il completamento del processo di failover di commit.

      while (($CommitFailoverJob.State -eq "InProgress") -or ($CommitFailoverJob.State 
      -eq "NotStarted")){
       sleep 10;
       $CommitFailoverJob = Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJob
      }
       Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJOb
      
  17. Dopo il failover, quando si vuole tornare all'area di origine, avviare la replica inversa per l'elemento protetto da replica usando il cmdlet Update-AzRecoveryServicesAsrProtectionDirection.

    1. Creare un account di archiviazione della cache per i log di replica nell'area di ripristino.

      $EdgeZoneCacheStorageAccount = New-AzStorageAccount -Name "cachestorageedgezone" -
      ResourceGroupName "<ResourceGroupName>" -Location '<EdgeZoneRegion>' -SkuName 
      Standard_LRS -Kind Storage
      
    2. Usare il contenitore di protezione del ripristino, il nuovo account di archiviazione della cache nell'area MEC pubblico di Azure e il gruppo di risorse della macchina virtuale dell'area di origine.

      $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
      

    Questo passaggio richiede circa 20 minuti e lo stato passerà da In corso a Operazione riuscita.

    Screenshot of Protected items list.

  18. Disabilitare la replica.

    Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem 
    $ReplicationProtectedItem
    
  19. Pulire l'ambiente. Questo passaggio è facoltativo e può essere usato per rimuovere il gruppo di risorse.

    Remove-AzResourceGroup -Name $Name -Force