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.
Connectez-vous à votre compte Azure.
Connect-AzAccount
Sélectionnez le bon abonnement.
$subscription = Get-AzSubscription -SubscriptionName "<SubscriptionName>" Set-AzContext $subscription.Id
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
Créez un groupe de ressources pour le coffre Recovery Services dans la région Azure secondaire.
New-AzResourceGroup -Name "edgezonerecoveryrg" -Location "<EdgeZoneRegion>"
Créez un coffre Recovery Services dans la région secondaire.
$vault = New-AzRecoveryServicesVault -Name "EdgeZoneRecoveryVault" - ResourceGroupName "edgezonerecovery" -Location "\<EdgeZoneRegion\>" Write-Output $vault
Définir le contexte d’archivage.
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
Créez la structure Site Recovery principale.
$TempASRJob = New-AzRecoveryServicesAsrFabric -Azure -Location “<EdgeZoneRegion>” - Name "EdgeZoneFabric"
Suivez l’état du travail pour vérifier l’achèvement.
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
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 }
Une fois l’exécution réussie, l’état du travail doit être Réussi.
Write-Output $TempASRJob.State $PrimaryFabric = Get-AzRecoveryServicesAsrFabric -Name "EdgeZoneFabric"
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"
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
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"
Créer une stratégie de réplication.
$TempASRJob = New-AzRecoveryServicesAsrPolicy -AzureToAzure -Name "ReplicationPolicy" -RecoveryPointRetentionInHours 24 - ApplicationConsistentSnapshotFrequencyInHours 4
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 }
Une fois l’exécution réussie, l’état du travail doit être Réussi.
Write-Output $TempASRJob.State $ReplicationPolicy = Get-AzRecoveryServicesAsrPolicy -Name "ReplicationPolicy"
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
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 }
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"
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
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 }
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"
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
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
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.
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>"
Obtenez la machine virtuelle et affichez le contenu.
$vm = Get-AzVM -Name $vmName -ResourceGroupName $primaryResourceGroupName
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
Disque de données
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
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”
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 }
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
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.
Une fois la réplication terminée, les éléments de réplication du coffre s’affichent comme suit :
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.
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.
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
Exécution d’un basculement de test.
$ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem - FriendlyName "<VMName>" -ProtectionContainer $PrimaryProtectionContainer $TFOJob = Start-AzRecoveryServicesAsrTestFailoverJob -ReplicationProtectedItem $ReplicationProtectedItem -AzureVMNetworkId $TFONetwork -Direction PrimaryToRecovery
Attendez que le travail se termine.
while (($TFOJob.State -eq "InProgress") -or ($TFOJob.State -eq "NotStarted")){ sleep 10; $TFOJob = Get-AzRecoveryServicesAsrJob -Job $TFOJob }
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
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
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
Une fois le travail de basculement réussi, vous pouvez valider le basculement.
$CommitFailoverJob = Start-AzRecoveryServicesAsrCommitFailoverJob - ReplicationProtectedItem $ReplicationProtectedItem
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
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
.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
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.
Désactiver la réplication.
Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem $ReplicationProtectedItem
Nettoyez l’environnement. Cette étape est facultative et peut être utilisée pour supprimer le groupe de ressources.
Remove-AzResourceGroup -Name $Name -Force