Configurare il ripristino di emergenza in Azure per le macchine virtuali Hyper-V tramite PowerShell e Azure Resource ManagerSet up disaster recovery to Azure for Hyper-V VMs using PowerShell and 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.Azure Site Recovery contributes to your business continuity and disaster recovery (BCDR) strategy by orchestrating replication, failover, and recovery of Azure virtual machines (VMs), and on-premises VMs and physical servers.

Questo articolo descrive come usare Windows PowerShell, insieme ad Azure Resource Manager, per replicare macchine virtuali Hyper-V in Azure.This article describes how to use Windows PowerShell, together with Azure Resource Manager, to replicate Hyper-V VMs to Azure. L'esempio usato in questo articolo illustra come replicare in Azure una singola macchina virtuale in esecuzione su un host Hyper-V.The example used in this article shows you how to replicate a single VM running on a Hyper-V host, to Azure.

PanoramicaOverview

Azure PowerShell offre i cmdlet per gestire Azure con Windows PowerShell.Azure PowerShell provides cmdlets to manage Azure using 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.Site Recovery PowerShell cmdlets, available with Azure PowerShell for Azure Resource Manager, help you protect and recover your servers 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.You don't need to be a PowerShell expert to use this article, but you do need to understand basic concepts, such as modules, cmdlets, and sessions. Leggere Introduzione a Windows PowerShell e Uso di Azure PowerShell con Azure Resource Manager.Read Getting started with Windows PowerShell, and Using Azure PowerShell with 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.Microsoft partners in the Cloud Solution Provider (CSP) program can configure and manage protection of customer servers to their respective CSP subscriptions (tenant subscriptions).

Prima di iniziareBefore you start

Assicurarsi che siano rispettati i prerequisiti seguenti:Make sure you have these prerequisites in place:

Inoltre, l'esempio specifico descritto in questo articolo presenta i seguenti prerequisiti:In addition, the specific example described in this article has the following prerequisites:

  • Host Hyper-V che esegue Windows Server 2012 R2 o Microsoft Hyper-V Server 2012 R2 contenente una o più macchine virtuali.A Hyper-V host running Windows Server 2012 R2 or Microsoft Hyper-V Server 2012 R2 containing one or more VMs. I server Hyper-V devono essere connessi a Internet, in modo diretto o tramite proxy.Hyper-V servers should be connected to the Internet, either directly or through a proxy.
  • Le macchine virtuali da replicare devono essere conformi a questi prerequisiti.The VMs you want to replicate should conform with these prerequisites.

Passaggio 1: Accedere al proprio account AzureStep 1: Sign in to your Azure account

  1. Aprire una console di PowerShell ed eseguire questo comando per accedere all'account di Azure.Open a PowerShell console and run this command to sign in to your Azure account. Il cmdlet visualizza una pagina Web che richiede le credenziali dell'account: Login-AzureRmAccount.The cmdlet brings up a web page prompts you for your account credentials: Login-AzureRmAccount.
    • In alternativa, è possibile includere le credenziali dell'account come parametro nel cmdlet Login-AzureRmAccount, usando il parametro -Credential.Alternately, you can include your account credentials as a parameter in the Login-AzureRmAccount cmdlet, using the -Credential parameter.
    • Se si è un partner CSP che opera per conto di un tenant, è necessario specificare il cliente come tenant usando l'ID tenant o il nome di dominio primario del tenant.If you are CSP partner working on behalf of a tenant, specify the customer as a tenant, by using their tenantID or tenant primary domain name. Ad esempio: Login-AzureRmAccount -Tenant "fabrikam.com"For example: Login-AzureRmAccount -Tenant "fabrikam.com"
  2. Associare la sottoscrizione che si vuole usare all'account perché un account può avere molte sottoscrizioni:Associate the subscription you want to use with the acount, since an account can have several subscriptions:

    Select-AzureRmSubscription -SubscriptionName $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:Verify that your subscription is registered to use the Azure providers for Recovery Services and Site Recovery, using these commands:

    Get-AzureRmResourceProvider -ProviderNamespace Microsoft.RecoveryServices``Get-AzureRmResourceProvider -ProviderNamespace Microsoft.SiteRecoveryGet-AzureRmResourceProvider -ProviderNamespace Microsoft.RecoveryServices Get-AzureRmResourceProvider -ProviderNamespace Microsoft.SiteRecovery

  4. Verificare che nell'output di questi comandi, RegistrationState sia impostato su Registered e quindi procedere con il passaggio 2.Verify that in the command output, the RegistrationState is set to Registered, you can proceed to Step 2. In caso contrario è necessario registrare il provider mancante nella sottoscrizione, eseguendo questi comandi:If not, you should register the missing provider in your subscription, by running these commands:

    Register-AzureRmResourceProvider -ProviderNamespace Microsoft.SiteRecovery``Register-AzureRmResourceProvider -ProviderNamespace Microsoft.RecoveryServicesRegister-AzureRmResourceProvider -ProviderNamespace Microsoft.SiteRecovery Register-AzureRmResourceProvider -ProviderNamespace Microsoft.RecoveryServices

  5. Verificare che i provider siano stati registrati correttamente usando i comandi seguenti:Verify that the Providers registered successfully, using the following commands:

    Get-AzureRmResourceProvider -ProviderNamespace Microsoft.RecoveryServices Get-AzureRmResourceProvider -ProviderNamespace Microsoft.SiteRecovery.Get-AzureRmResourceProvider -ProviderNamespace Microsoft.RecoveryServices Get-AzureRmResourceProvider -ProviderNamespace Microsoft.SiteRecovery.

Passaggio 2: Configurare l'insieme di credenzialiStep 2: Set up the vault

  1. Creare un gruppo di risorse di Azure Resource Manager in cui creare l'insieme di credenziali o usare un gruppo di risorse esistente.Create an Azure Resource Manager resource group in which to create the vault, or use an existing resource group. Creare un nuovo gruppo di risorse come segue.Create a new resource group as follows. La variabile $ResourceGroupName 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).The $ResourceGroupName variable contains the name of the resource group you want to create, and the $Geo variable contains the Azure region in which to create the resource group (for example, "Brazil South").

    New-AzureRmResourceGroup -Name $ResourceGroupName -Location $Geo

  2. Per ottenere un elenco di gruppi di risorse disponibili nella sottoscrizione, eseguire il cmdlet Get-AzureRmResourceGroup.To obtain a list of resource groups in your subscription run the Get-AzureRmResourceGroup cmdlet.

  3. Creare un nuovo insieme di credenziali di Servizi di ripristino di Azure, come segue:Create a new Azure Recovery Services vault as follows:

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

    È possibile recuperare un elenco degli insiemi di credenziali esistente con il cmdlet Get AzureRmRecoveryServicesVault.You can retrieve a list of existing vaults with the Get-AzureRmRecoveryServicesVault cmdlet.

Passaggio 3: Impostare il contesto dell’insieme di credenziali di Servizi di ripristinoStep 3: Set the Recovery Services vault context

Impostare il contesto dell'insieme di credenziali come segue:Set the vault context as follows:

Set-AzureRmSiteRecoveryVaultSettings -ARSVault $vault

Passaggio 4: Creare un sito Hyper-VStep 4: Create a Hyper-V site

  1. Creare un nuovo sito Hyper-V, come segue:Create a new Hyper-V site as follows:

     $sitename = "MySite"                #Specify site friendly name
     New-AzureRmSiteRecoverySite -Name $sitename
    
  2. Questo cmdlet avvia un processo di Site Recovery per creare il sito e restituisce un oggetto processo di Site Recovery.This cmdlet starts a Site Recovery job to create the site, and returns a Site Recovery job object. Attendere il completamento del processo e verificare che sia stato completato correttamente.Wait for the job to complete and verify that the job completed successfully.

  3. Usare Get-AzureRmSiteRecoveryJob cmdlet per recuperare l'oggetto processo e controllare lo stato corrente del processo.Use the Get-AzureRmSiteRecoveryJob cmdlet, to retrieve the job object, and check the current status of the job.
  4. Generare e scaricare una chiave di registrazione per il sito come segue:Generate and download a registration key for the site, as follows:

    $SiteIdentifier = Get-AzureRmSiteRecoverySite -Name $sitename | Select -ExpandProperty SiteIdentifier
        Get-AzureRmRecoveryServicesVaultSettingsFile -Vault $vault -SiteIdentifier $SiteIdentifier -SiteFriendlyName $sitename -Path $Path
    
  5. Copiare la chiave scaricata nell'host Hyper-V.Copy the downloaded key to the Hyper-V host. La chiave è necessaria per registrare l'host Hyper-V nel sito.You need the key to register the Hyper-V host to the site.

Passaggio 5: Installare provider e agenteStep 5: Install the Provider and agent

  1. Scaricare il programma di installazione per l'ultima versione del provider da Microsoft.Download the installer for the latest version of the Provider from Microsoft.
  2. Eseguire il programma di installazione nell'host Hyper-V.Run the installer on theHyper-V host.
  3. Al termine dell'installazione, continuare con il passaggio di registrazione.At the end of the installation continue to the registration step.
  4. Quando richiesto, fornire la chiave scaricata e completare la registrazione dell'host Hyper-V.When prompted, provide the downloaded key, and complete registration of the Hyper-V host.
  5. Verificare che l'host Hyper-V sia stato registrato nel sito come segue:Verify that the Hyper-V host is registered to the site as follows:

     $server =  Get-AzureRmSiteRecoveryServer -FriendlyName $server-friendlyname
    

Passaggio 6: Creare un criterio di replicaStep 6: Create a replication policy

Prima di iniziare, tenere presente che l'account di archiviazione specificato deve essere nella stessa area di Azure dell'insieme di credenziali e avere la replica geografica abilitata.Before you start, note that the storage account specified should be in the same Azure region as the vault, and should have geo-replication enabled.

  1. Creare un criterio di replica come segue:Create a replication policy as follows:

     $ReplicationFrequencyInSeconds = "300";        #options are 30,300,900
     $PolicyName = “replicapolicy”
     $Recoverypoints = 6                    #specify the number of recovery points
     $storageaccountID = Get-AzureRmStorageAccount -Name "mystorea" -ResourceGroupName "MyRG" | Select -ExpandProperty Id
    
     $PolicyResult = New-AzureRmSiteRecoveryPolicy -Name $PolicyName -ReplicationProvider “HyperVReplicaAzure” -ReplicationFrequencyInSeconds $ReplicationFrequencyInSeconds  -RecoveryPoints $Recoverypoints -ApplicationConsistentSnapshotFrequencyInHours 1 -RecoveryAzureStorageAccountId $storageaccountID
    
  2. Controllare il processo restituito per assicurarsi che la creazione del criterio di replica sia riuscita.Check the returned job to ensure that the replication policy creation succeeds.

  3. Recuperare il contenitore di protezione corrispondente al sito come segue:Retrieve the protection container that corresponds to the site, as follows:

     $protectionContainer = Get-AzureRmSiteRecoveryProtectionContainer
    
  4. Associare il contenitore di protezione al criterio di replica come segue:Associate the protection container with the replication policy, as follows:

    $Policy = Get-AzureRmSiteRecoveryPolicy -FriendlyName $PolicyName $associationJob = Start-AzureRmSiteRecoveryPolicyAssociationJob -Policy $Policy -PrimaryProtectionContainer $protectionContainer$Policy = Get-AzureRmSiteRecoveryPolicy -FriendlyName $PolicyName $associationJob = Start-AzureRmSiteRecoveryPolicyAssociationJob -Policy $Policy -PrimaryProtectionContainer $protectionContainer

  5. Attendere il corretto completamento del processo di associazione.Wait for the association job to complete successfully.

Passaggio 7: Abilitare la protezione della macchina virtualeStep 7: Enable VM protection

  1. Recuperare l'entità di protezione corrispondente alla macchina virtuale da proteggere, come segue:Retrieve the protection entity that corresponds to the VM you want to protect, as follows:

     $VMFriendlyName = "Fabrikam-app"                    #Name of the VM
     $protectionEntity = Get-AzureRmSiteRecoveryProtectionEntity -ProtectionContainer $protectionContainer -FriendlyName $VMFriendlyName
    
  2. Proteggere la macchina virtuale.Protect the VM. Se alla VM protetta è collegato più di un disco, specificare il disco del sistema operativo usando il parametro OSDiskName .If the VM you are protecting has more than one disk attached to it, specify the operating system disk by using the OSDiskName parameter.

     $Ostype = "Windows"                                 # "Windows" or "Linux"
     $DRjob = Set-AzureRmSiteRecoveryProtectionEntity -ProtectionEntity $protectionEntity -Policy $Policy -Protection Enable -RecoveryAzureStorageAccountId $storageaccountID  -OS $OStype -OSDiskName $protectionEntity.Disks[0].Name
    
  3. Attendere che le macchine virtuali raggiungano uno stato protetto dopo la replica iniziale.Wait for the VMs to reach a protected state after the initial replication. 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.This can take a while, depending on factors such as the amount of data to be replicated, and the available upstream bandwidth to Azure. Quando viene raggiunto lo stato protetto, i valori State e StateDescription del processo vengono aggiornati come segue:When a protected state is in place, the job State and StateDescription are updated as follows:

     PS C:\> $DRjob = Get-AzureRmSiteRecoveryJob -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 la dimensione del ruolo macchina virtuale, e la rete di Azure a cui associare la scheda di interfaccia di rete della macchina virtuale dopo il failover.Update recovery properties (such as the VM role size,), and the Azure network to which to attach the VM NIC after failover.

     PS C:\> $nw1 = Get-AzureRmVirtualNetwork -Name "FailoverNw" -ResourceGroupName "MyRG"
    
     PS C:\> $VMFriendlyName = "Fabrikam-App"
    
     PS C:\> $VM = Get-AzureRmSiteRecoveryVM -ProtectionContainer $protectionContainer -FriendlyName $VMFriendlyName
    
     PS C:\> $UpdateJob = Set-AzureRmSiteRecoveryVM -VirtualMachine $VM -PrimaryNic $VM.NicDetailsList[0].NicId -RecoveryNetworkId $nw1.Id -RecoveryNicSubnetName $nw1.Subnets[0].Name
    
     PS C:\> $UpdateJob = Get-AzureRmSiteRecoveryJob -Job $UpdateJob
    
     PS C:\> $UpdateJob
    
     Name             : b8a647e0-2cb9-40d1-84c4-d0169919e2c5
     ID               : /Subscriptions/a731825f-4bf2-4f81-a611-c331b272206e/resourceGroups/MyRG/providers/Microsoft.RecoveryServices/vault
                        s/MyVault/replicationJobs/b8a647e0-2cb9-40d1-84c4-d0169919e2c5
     Type             : Microsoft.RecoveryServices/vaults/replicationJobs
     JobType          : UpdateVmProperties
     DisplayName      : Update the virtual machine
     ClientRequestId  : 805a22a3-be86-441c-9da8-f32685673112-2015-12-10 17:55:51Z-P
     State            : Succeeded
     StateDescription : Completed
     StartTime        : 10-12-2015 17:55:53 +00:00
     EndTime          : 10-12-2015 17:55:54 +00:00
     TargetObjectId   : 289682c6-c5e6-42dc-a1d2-5f9621f78ae6
     TargetObjectType : ProtectionEntity
     TargetObjectName : Fabrikam-App
     AllowedActions   : {Restart}
     Tasks            : {UpdateVmPropertiesTask}
     Errors           : {}
    

Passaggio 8: Eseguire un failover di testStep 8: Run a test failover

  1. Eseguire un failover di test come segue:Run a test failover as follows:

     $nw = Get-AzureRmVirtualNetwork -Name "TestFailoverNw" -ResourceGroupName "MyRG" #Specify Azure vnet name and resource group
    
     $protectionEntity = Get-AzureRmSiteRecoveryProtectionEntity -FriendlyName $VMFriendlyName -ProtectionContainer $protectionContainer
    
     $TFjob = Start-AzureRmSiteRecoveryTestFailoverJob -ProtectionEntity $protectionEntity -Direction PrimaryToRecovery -AzureVMNetworkId $nw.Id
    
  2. Verificare che la VM di test sia creata in Azure.Verify that the test VM is created in Azure. Il processo di failover di test viene sospeso dopo la creazione della macchina virtuale di test in Azure.The test failover job is suspended after creating the test VM in Azure.
  3. Per pulire e completare il failover di test, eseguire:To clean up and complete the test failover, run:

     $TFjob = Resume-AzureRmSiteRecoveryJob -Job $TFjob
    

Passaggi successiviNext steps

Altre informazioni su Azure Site Recovery con i cmdlet PowerShell per Azure Resource Manager.Learn more about Azure Site Recovery with Azure Resource Manager PowerShell cmdlets.