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:
- Account Microsoft Azure. È possibile iniziare con una versione di valutazione gratuita. Inoltre, è possibile leggere le informazioni sui prezzi di Azure Site Recovery Manager.
- Azure PowerShell. Per informazioni su questa versione e su come installarla, vedere Installare Azure PowerShell.
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
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"
- In alternativa, è possibile includere le credenziali dell'account come parametro nel
Associare la sottoscrizione che si vuole usare all'account perché un account può avere molte sottoscrizioni:
Set-AzContext -Subscription $SubscriptionName
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
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
Verificare che i provider siano stati registrati correttamente usando i comandi seguenti:
Get-AzResourceProvider -ProviderNamespace Microsoft.RecoveryServices
Passaggio 2: Configurare l'insieme di credenziali
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
Per ottenere un elenco di gruppi di risorse nella sottoscrizione, eseguire il
Get-AzResourceGroup
cmdlet .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
Creare un nuovo sito Hyper-V, come segue:
$sitename = "MySite" #Specify site friendly name New-AzRecoveryServicesAsrFabric -Type HyperVSite -Name $sitename
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.
Usare il
Get-AzRecoveryServicesAsrJob
cmdlet per recuperare l'oggetto processo e controllare lo stato corrente del processo.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
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
Scaricare il programma di installazione per l'ultima versione del provider da Microsoft.
Eseguire il programma di installazione nell'host Hyper-V.
Al termine dell'installazione, continuare con il passaggio di registrazione.
Quando richiesto, fornire la chiave scaricata e completare la registrazione dell'host Hyper-V.
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:
Estrarre i file da AzureSiteRecoveryProvider.exe a una directory locale eseguendo questo comando:
AzureSiteRecoveryProvider.exe /x:. /q
Esegui questo comando:
.\setupdr.exe /i
I risultati vengono registrati in %ProgramData%\ASRLogs\DRASetupWizard.log.
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.
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
Controllare il processo restituito per assicurarsi che la creazione del criterio di replica sia riuscita.
Recuperare il contenitore di protezione corrispondente al sito come segue:
$protectionContainer = Get-AzRecoveryServicesAsrProtectionContainer
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]
Attendere il corretto completamento del processo di associazione.
Recuperare il mapping del contenitore di protezione.
$ProtectionContainerMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -ProtectionContainer $protectionContainer
Passaggio 7: Abilitare la protezione della macchina virtuale
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
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
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
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:
- Abilitare il failover in dischi gestiti aggiornando le proprietà della macchina virtuale
- Usare il
Get-AzRecoveryServicesAsrReplicationProtectedItem
cmdlet per recuperare l'ID disco per ogni disco dell'elemento protetto - 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. - 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
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
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.
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.