Configurare il ripristino di emergenza in Azure per le macchine virtuali Hyper-V tramite PowerShell e Azure Resource Manager

Azure Site Recovery favorisce l'attuazione della strategia di continuità aziendale e ripristino di emergenza orchestrando le operazioni di replica, failover e ripristino delle macchine virtuali di Azure e delle macchine virtuali e dei server fisici locali.

Questo articolo descrive come usare Windows PowerShell, insieme ad Azure Resource Manager, per replicare macchine virtuali Hyper-V in Azure. L'esempio usato in questo articolo illustra come replicare in Azure una singola macchina virtuale in esecuzione su un host Hyper-V.

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Azure PowerShell

Azure PowerShell offre i cmdlet per gestire Azure con Windows PowerShell. I cmdlet di PowerShell per Site Recovery disponibili con Azure PowerShell per Azure Resource Manager consentono di proteggere e ripristinare i server in Azure.

Non è necessario essere un esperto di PowerShell per usare questo articolo, ma si presume che si conoscano i concetti di base, ad esempio moduli, cmdlet e sessioni. Per altre informazioni, vedere la documentazione di PowerShell e l'uso di Azure PowerShell con Azure Resource Manager.

Nota

I partner Microsoft nel programma Cloud Solution Provider (CSP) possono configurare e gestire la protezione dei server dei clienti nelle rispettive sottoscrizioni CSP, ovvero le sottoscrizioni tenant.

Prima di iniziare

Assicurarsi che siano rispettati i prerequisiti seguenti:

Inoltre, l'esempio specifico descritto in questo articolo presenta i seguenti prerequisiti:

  • Host Hyper-V che esegue Windows Server 2012 R2 o Microsoft Hyper-V Server 2012 R2 contenente una o più macchine virtuali. I server Hyper-V devono essere connessi a Internet, in modo diretto o tramite proxy.
  • Le macchine virtuali da replicare devono essere conformi a questi prerequisiti.

Passaggio 1: Accedere al proprio account Azure

  1. Aprire una console di PowerShell ed eseguire questo comando per accedere all'account di Azure. Il cmdlet visualizza una pagina Web che richiede le credenziali dell'account: Connect-AzAccount.

    • In alternativa, è possibile includere le credenziali dell'account come parametro nel Connect-AzAccount cmdlet , usando il parametro Credential .
    • Se si è un partner CSP che lavora per conto di un tenant, specificare il cliente come tenant usando il proprio tenantID o il nome di dominio primario del tenant. Ad esempio: Connect-AzAccount -Tenant "fabrikam.com"
  2. Associare la sottoscrizione che si vuole usare all'account perché un account può avere molte sottoscrizioni:

    Set-AzContext -Subscription $SubscriptionName
    
  3. Verificare che la sottoscrizione sia registrata per l'uso dei provider di Azure per Servizi di ripristino e Site Recovery usando i comandi seguenti:

    Get-AzResourceProvider -ProviderNamespace  Microsoft.RecoveryServices
    
  4. Verificare che nell'output di questi comandi, RegistrationState sia impostato su Registered e quindi procedere con il passaggio 2. In caso contrario è necessario registrare il provider mancante nella sottoscrizione, eseguendo questi comandi:

    Register-AzResourceProvider -ProviderNamespace Microsoft.RecoveryServices
    
  5. Verificare che i provider siano stati registrati correttamente usando i comandi seguenti:

    Get-AzResourceProvider -ProviderNamespace  Microsoft.RecoveryServices
    

Passaggio 2: Configurare l'insieme di credenziali

  1. Creare un gruppo di risorse di Azure Resource Manager in cui creare l'insieme di credenziali o usare un gruppo di risorse esistente. Creare un nuovo gruppo di risorse come segue. La $ResourceGroupName variabile contiene il nome del gruppo di risorse che si vuole creare e la variabile $Geo contiene l'area di Azure in cui creare il gruppo di risorse, ad esempio "Brasile meridionale".

    New-AzResourceGroup -Name $ResourceGroupName -Location $Geo
    
  2. Per ottenere un elenco di gruppi di risorse nella sottoscrizione, eseguire il Get-AzResourceGroup cmdlet .

  3. Creare un nuovo insieme di credenziali di Servizi di ripristino di Azure, come segue:

    $vault = New-AzRecoveryServicesVault -Name <string> -ResourceGroupName <string> -Location <string>
    

È possibile recuperare un elenco di insiemi di credenziali esistenti con il Get-AzRecoveryServicesVault cmdlet .

Passaggio 3: Impostare il contesto dell’insieme di credenziali di Servizi di ripristino

Impostare il contesto dell'insieme di credenziali come segue:

Set-AzRecoveryServicesAsrVaultContext -Vault $vault

Passaggio 4: Creare un sito Hyper-V

  1. Creare un nuovo sito Hyper-V, come segue:

    $sitename = "MySite"                #Specify site friendly name
    New-AzRecoveryServicesAsrFabric -Type HyperVSite -Name $sitename
    
  2. Questo cmdlet avvia un processo di Site Recovery per creare il sito e restituisce un oggetto processo di Site Recovery. Attendere il completamento del processo e verificare che sia stato completato correttamente.

  3. Usare il Get-AzRecoveryServicesAsrJob cmdlet per recuperare l'oggetto processo e controllare lo stato corrente del processo.

  4. Generare e scaricare una chiave di registrazione per il sito come segue:

    $SiteIdentifier = Get-AzRecoveryServicesAsrFabric -Name $sitename | Select-Object -ExpandProperty SiteIdentifier
    $path = Get-AzRecoveryServicesVaultSettingsFile -Vault $vault -SiteIdentifier $SiteIdentifier -SiteFriendlyName $sitename
    
  5. Copiare la chiave scaricata nell'host Hyper-V. La chiave è necessaria per registrare l'host Hyper-V nel sito.

Passaggio 5: Installare provider e agente

  1. Scaricare il programma di installazione per l'ultima versione del provider da Microsoft.

  2. Eseguire il programma di installazione nell'host Hyper-V.

  3. Al termine dell'installazione, continuare con il passaggio di registrazione.

  4. Quando richiesto, fornire la chiave scaricata e completare la registrazione dell'host Hyper-V.

  5. Verificare che l'host Hyper-V sia stato registrato nel sito come segue:

    $server = Get-AzRecoveryServicesAsrFabric -Name $siteName | Get-AzRecoveryServicesAsrServicesProvider -FriendlyName $server-friendlyname
    

Se è in esecuzione un server Hyper-V Core, scaricare il file di installazione e completare questi passaggi:

  1. Estrarre i file da AzureSiteRecoveryProvider.exe in una directory locale eseguendo questo comando:

    AzureSiteRecoveryProvider.exe /x:. /q
    
  2. Esegui questo comando:

    .\setupdr.exe /i
    

    I risultati vengono registrati in %ProgramData%\ASRLogs\DRASetupWizard.log.

  3. Registrare il server eseguendo questo comando:

    cd  C:\Program Files\Microsoft Azure Site Recovery Provider\DRConfigurator.exe" /r /Friendlyname "FriendlyName of the Server" /Credentials "path to where the credential file is saved"
    

Passaggio 6: Creare un criterio di replica

Prima di iniziare, l'account di archiviazione specificato deve trovarsi nella stessa area di Azure dell'insieme di credenziali e deve avere la replica geografica abilitata.

  1. Creare un criterio di replica come segue:

    $ReplicationFrequencyInSeconds = "300";        #options are 30,300,900
    $PolicyName = “replicapolicy”
    $Recoverypoints = 6                    #specify the number of recovery points
    $storageaccountID = Get-AzStorageAccount -Name "mystorea" -ResourceGroupName "MyRG" | Select-Object -ExpandProperty Id
    
    $PolicyResult = New-AzRecoveryServicesAsrPolicy -Name $PolicyName -ReplicationProvider “HyperVReplicaAzure” -ReplicationFrequencyInSeconds $ReplicationFrequencyInSeconds -NumberOfRecoveryPointsToRetain $Recoverypoints -ApplicationConsistentSnapshotFrequencyInHours 1 -RecoveryAzureStorageAccountId $storageaccountID
    
  2. Controllare il processo restituito per assicurarsi che la creazione del criterio di replica sia riuscita.

  3. Recuperare il contenitore di protezione corrispondente al sito come segue:

    $protectionContainer = Get-AzRecoveryServicesAsrProtectionContainer
    
  4. Associare il contenitore di protezione al criterio di replica come segue:

    $Policy = Get-AzRecoveryServicesAsrPolicy -FriendlyName $PolicyName
    $associationJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name $mappingName -Policy $Policy -PrimaryProtectionContainer $protectionContainer[0]
    
  5. Attendere il corretto completamento del processo di associazione.

  6. Recuperare il mapping del contenitore di protezione.

    $ProtectionContainerMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -ProtectionContainer $protectionContainer
    

Passaggio 7: Abilitare la protezione della macchina virtuale

  1. Recuperare l'elemento di protezione corrispondente alla macchina virtuale da proteggere, come segue:

    $VMFriendlyName = "Fabrikam-app"          #Name of the VM
    $ProtectableItem = Get-AzRecoveryServicesAsrProtectableItem -ProtectionContainer $protectionContainer -FriendlyName $VMFriendlyName
    
  2. Proteggere la macchina virtuale. Se la macchina virtuale protetta contiene più dischi collegati, specificare il disco del sistema operativo usando il parametro OSDiskName .

    $OSType = "Windows"          # "Windows" or "Linux"
    $DRjob = New-AzRecoveryServicesAsrReplicationProtectedItem -ProtectableItem $VM -Name $VM.Name -ProtectionContainerMapping $ProtectionContainerMapping -RecoveryAzureStorageAccountId $StorageAccountID -OSDiskName $OSDiskNameList[$i] -OS $OSType -RecoveryResourceGroupId $ResourceGroupID
    
  3. Attendere che le macchine virtuali raggiungano uno stato protetto dopo la replica iniziale. L’operazione può richiedere un certo tempo a seconda di fattori quali la quantità di dati da replicare e la larghezza di banda upstream disponibile in Azure. Quando viene raggiunto lo stato protetto, i valori State e StateDescription del processo vengono aggiornati come segue:

    PS C:\> $DRjob = Get-AzRecoveryServicesAsrJob -Job $DRjob
    
    PS C:\> $DRjob | Select-Object -ExpandProperty State
    Succeeded
    
    PS C:\> $DRjob | Select-Object -ExpandProperty StateDescription
    Completed
    
  4. Aggiornare le proprietà di ripristino, ad esempio le dimensioni del ruolo macchina virtuale, e la rete di Azure a cui associare la scheda di interfaccia di rete della macchina virtuale dopo il failover.

    PS C:\> $nw1 = Get-AzVirtualNetwork -Name "FailoverNw" -ResourceGroupName "MyRG"
    
    PS C:\> $VMFriendlyName = "Fabrikam-App"
    
    PS C:\> $rpi = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $protectionContainer -FriendlyName $VMFriendlyName
    
    PS C:\> $UpdateJob = Set-AzRecoveryServicesAsrReplicationProtectedItem -InputObject $rpi -PrimaryNic $VM.NicDetailsList[0].NicId -RecoveryNetworkId $nw1.Id -RecoveryNicSubnetName $nw1.Subnets[0].Name
    
    PS C:\> $UpdateJob = Get-AzRecoveryServicesAsrJob -Job $UpdateJob
    
    PS C:\> $UpdateJob | Select-Object -ExpandProperty state
    
    PS C:\> Get-AzRecoveryServicesAsrJob -Job $job | Select-Object -ExpandProperty state
    
    Succeeded
    

Nota

Se si vuole eseguire la replica nei dischi gestiti abilitati per la gestione cloud in Azure, seguire questa procedura usando Az PowerShell 3.3.0 e versioni successive:

  1. Abilitare il failover in dischi gestiti aggiornando le proprietà della macchina virtuale
  2. Usare il Get-AzRecoveryServicesAsrReplicationProtectedItem cmdlet per recuperare l'ID disco per ogni disco dell'elemento protetto
  3. Creare un oggetto dizionario usando New-Object "System.Collections.Generic.Dictionary``2[System.String,System.String]" il cmdlet per contenere il mapping dell'ID disco al set di crittografia del disco. Questi set di crittografia del disco devono essere creati in modo preliminare dall'utente nell'area di destinazione.
  4. Aggiornare le proprietà della macchina virtuale usando Set-AzRecoveryServicesAsrReplicationProtectedItem il cmdlet passando l'oggetto dizionario nel parametro DiskIdToDiskEncryptionSetMap .

Passaggio 8: Eseguire un failover di test

  1. Eseguire un failover di test come segue:

    $nw = Get-AzVirtualNetwork -Name "TestFailoverNw" -ResourceGroupName "MyRG" #Specify Azure vnet name and resource group
    
    $rpi = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $protectionContainer -FriendlyName $VMFriendlyName
    
    $TFjob = Start-AzRecoveryServicesAsrTestFailoverJob -ReplicationProtectedItem $VM -Direction PrimaryToRecovery -AzureVMNetworkId $nw.Id
    
  2. Verificare che la VM di test sia creata in Azure. Il processo di failover di test viene sospeso dopo la creazione della macchina virtuale di test in Azure.

  3. Per pulire e completare il failover di test, eseguire:

    $TFjob = Start-AzRecoveryServicesAsrTestFailoverCleanupJob -ReplicationProtectedItem $rpi -Comment "TFO done"
    

Passaggi successivi

Altre informazioni su Azure Site Recovery con i cmdlet PowerShell per Azure Resource Manager.