Partager via


Répliquer des machines virtuelles s’exécutant dans un MEC public Azure vers une région Azure

Important

La fonctionnalité Azure Site Recovery pour Public MEC est en préversion.

Cet article explique comment répliquer, basculer et restaurer automatiquement des machines virtuelles Azure s’exécutant sur un MEC public Azure dans la région Azure parente dont le MEC public Azure est une extension.

Reprise d’activité dans le MEC public Azure

Site Recovery garantit la continuité de l’activité en maintenant les charges de travail en cours d’exécution pendant les pannes en répliquant en continu la charge de travail de l’emplacement principal vers l’emplacement secondaire. La fonctionnalité ASR pour MEC est en préversion.

Ici, la localisation principale est MEC public Azure et la localisation secondaire est la région parente à laquelle le MEC public Azure est connectée.

Configurer la reprise d’activité pour les machines virtuelles dans un MEC public Azure avec PowerShell

Prérequis

  • Vérifiez que le module Azure Az PowerShell est installé. Pour plus d’informations sur l’installation, consultez Installer le module Azure Az PowerShell.

  • La version minimale d’Azure Az PowerShell doit être 4.1.0. Utilisez la commande suivante pour voir la version actuelle :

    Get-InstalledModule -Name Az
    
  • Vérifiez que la version et le noyau de la distribution Linux sont pris en charge par Azure Site Recovery. Pour plus d’informations, consultez la matrice de prise en charge.

Répliquer des machines virtuelles s’exécutant dans un MEC public Azure vers une région Azure

Pour répliquer des machines virtuelles s’exécutant dans un MEC public Azure vers une région Azure, suivez ces étapes :

Notes

Pour cet exemple, la localisation principale est un MEC public Azure et la localisation secondaire/de récupération est la région du MEC public Azure.

  1. Connectez-vous à votre compte Azure.

    Connect-AzAccount
    
  2. Sélectionnez le bon abonnement.

    $subscription = Get-AzSubscription -SubscriptionName "<SubscriptionName>" 
    Set-AzContext $subscription.Id 
    
  3. Récupérez les détails de la machine virtuelle que vous envisagez de répliquer.

    $VM = Get-AzVM -ResourceGroupName "<ResourceGroupName>" -Name "<VMName>" 
    
    Write-Output $VM 
    
  4. Créez un groupe de ressources pour le coffre Recovery Services dans la région Azure secondaire.

    New-AzResourceGroup -Name "edgezonerecoveryrg" -Location "<EdgeZoneRegion>"
    
  5. Créez un coffre Recovery Services dans la région secondaire.

    $vault = New-AzRecoveryServicesVault -Name "EdgeZoneRecoveryVault" -
    ResourceGroupName "edgezonerecovery" -Location "\<EdgeZoneRegion\>"
    Write-Output $vault
    
  6. Définir le contexte d’archivage.

    Set-AzRecoveryServicesAsrVaultContext -Vault $vault 
    
  7. Créez la structure Site Recovery principale.

    $TempASRJob = New-AzRecoveryServicesAsrFabric -Azure -Location “<EdgeZoneRegion>” -
    Name "EdgeZoneFabric"
    
    1. Suivez l’état du travail pour vérifier l’achèvement.

      while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
      
    2. Si le travail n’est pas terminé, attendez 10 secondes avant de vérifier à nouveau l’état du travail.

      sleep 10;
      $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
      }
      
    3. Une fois l’exécution réussie, l’état du travail doit être Réussi.

      Write-Output $TempASRJob.State
      $PrimaryFabric = Get-AzRecoveryServicesAsrFabric -Name "EdgeZoneFabric"
      
  8. Utilisez la structure principale pour créer à la fois des conteneurs de protection primaire et de protection de récupération.

    $TempASRJob = New-AzRecoveryServicesAsrProtectionContainer -InputObject 
    $PrimaryFabric -Name "EdgeZoneProtectionContainer"
    
    1. Suivez l’état du travail pour vérifier l’achèvement.

      while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq 
      "NotStarted")){
       sleep 10;
       $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
      }
      Write-Output $TempASRJob.State
      
    2. Les conteneurs principal et de protection de récupération sont créés dans la région primaire (au sein de la structure primaire).

      $PrimaryProtectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric 
      $primaryFabric -Name "EdgeZoneProtectionContainer"
      $RecoveryProtectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric 
      $primaryFabric -Name "EdgeZoneProtectionContainer-t"
      
  9. Créer une stratégie de réplication.

    $TempASRJob = New-AzRecoveryServicesAsrPolicy -AzureToAzure -Name 
    "ReplicationPolicy" -RecoveryPointRetentionInHours 24 -
    ApplicationConsistentSnapshotFrequencyInHours 4
    
    1. Suivez l’état du travail pour vérifier l’achèvement.

      while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq 
      "NotStarted")){
       sleep 10;
       $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
      }
      
    2. Une fois l’exécution réussie, l’état du travail doit être Réussi.

      Write-Output $TempASRJob.State
      
      $ReplicationPolicy = Get-AzRecoveryServicesAsrPolicy -Name "ReplicationPolicy"
      
  10. Créer un mappage de conteneur de protection entre le conteneur de protection de récupération et le conteneur de protection principal avec la stratégie de réplication.

    $TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name 
    "PrimaryToRecovery" -Policy $ReplicationPolicy -PrimaryProtectionContainer 
    $PrimaryProtectionContainer -RecoveryProtectionContainer 
    $RecoveryProtectionContainer
    
    1. Suivez l’état du travail pour vérifier l’achèvement.

      while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq 
      "NotStarted")){
       sleep 10;
       $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
      }
      
    2. Une fois l’exécution réussie, l’état du travail doit être Réussi.

      Write-Output $TempASRJob.State
      
      $EdgeZoneToAzurePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -
      ProtectionContainer $PrimaryProtectionContainer -Name "PrimaryToRecovery"
      
    3. Créez un mappage de conteneur de protection pour la restauration automatique, entre les conteneurs de protection principal et de récupération avec la stratégie de réplication.

      $TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name 
      "RecoveryToPrimary" -Policy $ReplicationPolicy -PrimaryProtectionContainer 
      $RecoveryProtectionContainer -RecoveryProtectionContainer 
      $PrimaryProtectionContainer
      
      1. Suivez l’état du travail pour vérifier l’achèvement.

        while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq 
        "NotStarted")){
         sleep 10;
         $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
        }
        
      2. Une fois l’exécution réussie, l’état du travail doit être Réussi.

        Write-Output $TempASRJob.State 
        $AzureToEdgeZonePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -
        ProtectionContainer $RecoveryProtectionContainer -Name "RecoveryToPrimary"
        
  11. Créez un compte de stockage de cache pour les journaux de réplication dans la région primaire. Le compte de stockage de cache est créé dans la région principale.

    $CacheStorageAccount = New-AzStorageAccount -Name "cachestorage" -ResourceGroupName 
    "<primary ResourceGroupName>" -Location '<EdgeZoneRegion>' -SkuName Standard_LRS -
    Kind Storage
    
  12. Veillez à créer un réseau virtuel à l’emplacement cible. Créez un réseau de récupération dans la région de récupération.

    $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. Utilisez l’applet de commande PowerShell suivante pour répliquer une machine virtuelle Azure du MEC public Azure avec des disques managés. Cette étape peut prendre environ 20 minutes.

    1. Obtenez le groupe de ressources dans lequel la machine virtuelle doit être créée lorsqu’elle est basculée.

      $RecoveryRG = Get-AzResourceGroup -Name "edgezonerecoveryrg" -Location "
      <EdgeZoneRegion>"
      
    2. Obtenez la machine virtuelle et affichez le contenu.

      $vm = Get-AzVM -Name $vmName -ResourceGroupName $primaryResourceGroupName
      
    3. Spécifiez les propriétés de réplication pour chaque disque de la machine virtuelle qui doit être répliquée (créez une configuration de réplication de disque).

      #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. Disque de données

      1. Si la machine virtuelle a un disque de données, utilisez la commande suivante pour créer une configuration de disque. Si ce n’est pas le cas, vous pouvez ignorer cette section. De $datadiskId à $DataDisk1ReplicationConfig $datadiskId = $vm.StorageProfile.OSDisk.ManagedDisk.Id

        Autre possibilité.

        $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. Créez un élément protégé de réplication pour démarrer la réplication. Utilisez un GUID pour le nom de l’élément protégé de réplication afin de garantir l’unicité du nom. Si vous ne récupérez pas dans une zone de disponibilité, ne fournissez pas le paramètre -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. Suivez l’état du travail pour vérifier l’achèvement.

      while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
      sleep 10; 
      $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob 
      } 
      
    7. Vérifiez que le travail est correctement terminé. L’état du travail mis à jour d’un travail correctement terminé doit être Réussi.

      Write-Output $TempASRJob.State
      
    8. Une fois que l’opération de démarrage de la réplication a réussi, les données de la machine virtuelle sont répliquées vers la région de récupération.

    Le processus de réplication démarre en créant une copie des disques de réplication de la machine virtuelle dans la région de récupération. Cette phase est appelée phase de réplication initiale. Cette étape prend environ 20 minutes. Consultez l’état de la réplication dans le panneau Coffre sous Éléments répliqués.

    Capture d’écran des éléments répliqués.

    Une fois la réplication terminée, les éléments de réplication du coffre s’affichent comme suit :

    Capture d’écran de la réplication du coffre.

    Maintenant, la machine virtuelle est protégée et vous pouvez effectuer une opération de basculement test. L’état de réplication de l’élément répliqué qui représente la machine virtuelle passe à l’état Protégé après la fin de la réplication initiale.

    Surveillez l’état de réplication et l’intégrité de la réplication de la machine virtuelle en obtenant les détails de l’élément protégé par réplication qui lui correspond :

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

    Si vous voyez Protégé dans ProtectionState, vous pouvez passer au test de basculement.

    Capture d’écran de l’état de la protection.

  14. Effectuez, validez et nettoyez un test de basculement. Vous pouvez ignorer le test de basculement. Toutefois, nous vous recommandons d’exécuter un test de basculement pour vous assurer que votre région secondaire fonctionne comme prévu.

    1. Créez un réseau distinct pour tester le basculement (non connecté à votre réseau de récupération d’urgence).

      $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. Exécution d’un basculement de test.

      $ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem -
      FriendlyName "<VMName>" -ProtectionContainer $PrimaryProtectionContainer
      
      $TFOJob = Start-AzRecoveryServicesAsrTestFailoverJob -ReplicationProtectedItem 
      $ReplicationProtectedItem -AzureVMNetworkId $TFONetwork -Direction PrimaryToRecovery
      
    3. Attendez que le travail se termine.

      while (($TFOJob.State -eq "InProgress") -or ($TFOJob.State -eq 
      "NotStarted")){
       sleep 10;
       $TFOJob = Get-AzRecoveryServicesAsrJob -Job $TFOJob
      }
      
    4. Attendez que le test de basculement se termine.

      Get-AzRecoveryServicesAsrJob -Job $TFOJob
      

    Notes

    Vous pouvez également vérifier la progression du travail en accédant au portail, en sélectionnant le coffre, puis Travaux Site Recovery.

    Une fois le travail de basculement de test terminé, vous pouvez vous connecter à la machine virtuelle basculée de test et valider le basculement de test. Une fois le test terminé sur la machine virtuelle basculée de test, nettoyez la copie de test en démarrant l’opération de nettoyage de basculement de test. Cette opération supprime la copie de test de la machine virtuelle créée par le basculement de test. Vérifiez que tous les paramètres cibles sont corrects dans la machine virtuelle de basculement de test, notamment l’emplacement, les paramètres réseau, et l’absence d’altération et de perte de données dans la machine virtuelle cible. Vous pouvez maintenant supprimer le basculement de test et démarrer le basculement.

    $Job_TFOCleanup = Start-AzRecoveryServicesAsrTestFailoverCleanupJob -
    ReplicationProtectedItem $ReplicationProtectedItem 
    Get-AzRecoveryServicesAsrJob -Job $Job_TFOCleanup | Select State
    
  15. L’étape suivante consiste à basculer la machine virtuelle. Cette étape crée la machine virtuelle à l’aide des disques répliqués dans la région de récupération.

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

    La liste des points de récupération retournés peut ne pas être triée chronologiquement. Vous devez d’abord les trier pour trouver les points de récupération les plus anciens ou les plus récents pour la machine virtuelle.

     "{0} {1}" -f $RecoveryPoints[0].RecoveryPointType, $RecoveryPoints[-
    1].RecoveryPointTime
    
    1. Démarrez le travail de basculement.

      $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. Une fois le travail de basculement réussi, vous pouvez valider le basculement.

     $CommitFailoverJob = Start-AzRecoveryServicesAsrCommitFailoverJob -
    ReplicationProtectedItem $ReplicationProtectedItem 
    
    1. Attendez que le travail de validation de basculement soit terminé.

      while (($CommitFailoverJob.State -eq "InProgress") -or ($CommitFailoverJob.State 
      -eq "NotStarted")){
       sleep 10;
       $CommitFailoverJob = Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJob
      }
       Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJOb
      
  17. Après un basculement, lorsque vous êtes prêt à revenir à la région d’origine, démarrez la réplication inverse pour l’élément protégé de la réplication à l’aide de la cmdlet Update-AzRecoveryServicesAsrProtectionDirection.

    1. Créez un compte de stockage de cache pour les journaux de réplication dans la région de récupération.

      $EdgeZoneCacheStorageAccount = New-AzStorageAccount -Name "cachestorageedgezone" -
      ResourceGroupName "<ResourceGroupName>" -Location '<EdgeZoneRegion>' -SkuName 
      Standard_LRS -Kind Storage
      
    2. Utilisez le conteneur de protection de récupération, le nouveau compte de stockage de cache dans la région du MEC public Azure et le groupe de ressources VM de la région source.

      $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
      

    Cette étape prend environ 20 minutes, et l’état passe de En cours à Réussi.

    Capture d’écran de la liste d’éléments protégés.

  18. Désactiver la réplication.

    Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem 
    $ReplicationProtectedItem
    
  19. Nettoyez l’environnement. Cette étape est facultative et peut être utilisée pour supprimer le groupe de ressources.

    Remove-AzResourceGroup -Name $Name -Force