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.
Accedere all'account di Azure.
Connect-AzAccount
Selezionare la sottoscrizione corretta.
$subscription = Get-AzSubscription -SubscriptionName "<SubscriptionName>" Set-AzContext $subscription.Id
Ottenere i dettagli della macchina virtuale che si prevede di replicare.
$VM = Get-AzVM -ResourceGroupName "<ResourceGroupName>" -Name "<VMName>" Write-Output $VM
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>"
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
Impostare il contesto dell'insieme di credenziali.
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
Creare l'infrastruttura di Site Recovery primario.
$TempASRJob = New-AzRecoveryServicesAsrFabric -Azure -Location “<EdgeZoneRegion>” - Name "EdgeZoneFabric"
Tenere traccia dello stato del processo per verificarne il completamento.
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
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 }
Al termine, lo stato del processo deve essere Completato.
Write-Output $TempASRJob.State $PrimaryFabric = Get-AzRecoveryServicesAsrFabric -Name "EdgeZoneFabric"
Usare l'infrastruttura primaria per creare contenitori di protezione primaria e di ripristino.
$TempASRJob = New-AzRecoveryServicesAsrProtectionContainer -InputObject $PrimaryFabric -Name "EdgeZoneProtectionContainer"
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
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"
Creare i criteri di replica.
$TempASRJob = New-AzRecoveryServicesAsrPolicy -AzureToAzure -Name "ReplicationPolicy" -RecoveryPointRetentionInHours 24 - ApplicationConsistentSnapshotFrequencyInHours 4
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 }
Al termine, lo stato del processo deve essere Completato.
Write-Output $TempASRJob.State $ReplicationPolicy = Get-AzRecoveryServicesAsrPolicy -Name "ReplicationPolicy"
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
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 }
Al termine, lo stato del processo deve essere Completato.
Write-Output $TempASRJob.State $EdgeZoneToAzurePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping - ProtectionContainer $PrimaryProtectionContainer -Name "PrimaryToRecovery"
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
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 }
Al termine, lo stato del processo deve essere Completato.
Write-Output $TempASRJob.State $AzureToEdgeZonePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping - ProtectionContainer $RecoveryProtectionContainer -Name "RecoveryToPrimary"
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
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
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.
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>"
Ottenere la macchina virtuale e visualizzare il contenuto.
$vm = Get-AzVM -Name $vmName -ResourceGroupName $primaryResourceGroupName
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
Disco dati
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
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”
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 }
Controllare se il processo è stato completato correttamente. Lo stato aggiornato di un processo completato correttamente deve essere Operazione completata.
Write-Output $TempASRJob.State
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.
Al termine della replica, gli elementi di replica dell'insieme di credenziali verranno visualizzati come segue:
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.
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.
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
Eseguire un failover di test.
$ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem - FriendlyName "<VMName>" -ProtectionContainer $PrimaryProtectionContainer $TFOJob = Start-AzRecoveryServicesAsrTestFailoverJob -ReplicationProtectedItem $ReplicationProtectedItem -AzureVMNetworkId $TFONetwork -Direction PrimaryToRecovery
Attendere il completamento del processo.
while (($TFOJob.State -eq "InProgress") -or ($TFOJob.State -eq "NotStarted")){ sleep 10; $TFOJob = Get-AzRecoveryServicesAsrJob -Job $TFOJob }
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
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
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
Quando il processo di failover ha esito positivo, è possibile eseguire il commit del failover.
$CommitFailoverJob = Start-AzRecoveryServicesAsrCommitFailoverJob - ReplicationProtectedItem $ReplicationProtectedItem
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
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
.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
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.
Disabilitare la replica.
Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem $ReplicationProtectedItem
Pulire l'ambiente. Questo passaggio è facoltativo e può essere usato per rimuovere il gruppo di risorse.
Remove-AzResourceGroup -Name $Name -Force