Configurar a recuperação após desastre para o Azure para VMs Hyper-V com o PowerShell e com o Azure Resource Manager

O Azure Site Recovery contribui para sua estratégia de continuidade de negócios e recuperação de desastres (BCDR) orquestrando replicação, failover e recuperação de máquinas virtuais (VMs) do Azure e VMs locais e servidores físicos.

Este artigo descreve como usar o Windows PowerShell, juntamente com o Azure Resource Manager, para replicar VMs Hyper-V para o Azure. O exemplo usado neste artigo mostra como replicar uma única VM em execução em um host Hyper-V para o Azure.

Nota

Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Azure PowerShell

O Azure PowerShell fornece cmdlets para gerenciar o Azure usando o Windows PowerShell. Os cmdlets do PowerShell de Recuperação de Site, disponíveis com o Azure PowerShell para Azure Resource Manager, ajudam a proteger e recuperar seus servidores no Azure.

Você não precisa ser um especialista em PowerShell para usar este artigo, mas precisa entender conceitos básicos, como módulos, cmdlets e sessões. Para obter mais informações, consulte a Documentação do PowerShell e Usando o Azure PowerShell com o Azure Resource Manager.

Nota

Os parceiros da Microsoft no programa Provedor de Soluções na Nuvem (CSP) podem configurar e gerenciar a proteção dos servidores do cliente para suas respetivas assinaturas CSP (assinaturas de locatário).

Antes de começar

Certifique-se de que tem estes pré-requisitos:

Além disso, o exemplo específico descrito neste artigo tem os seguintes pré-requisitos:

  • Um host Hyper-V executando o Windows Server 2012 R2 ou o Microsoft Hyper-V Server 2012 R2 contendo uma ou mais VMs. Os servidores Hyper-V devem estar conectados à Internet, diretamente ou por meio de um proxy.
  • As VMs que você deseja replicar devem estar em conformidade com esses pré-requisitos.

Passo 1: Iniciar sessão na sua conta do Azure

  1. Abra um console do PowerShell e execute este comando para entrar em sua conta do Azure. O cmdlet exibe uma página da Web solicitando as credenciais da sua conta: Connect-AzAccount.

    • Como alternativa, você pode incluir suas credenciais de conta como um parâmetro no Connect-AzAccount cmdlet, usando o parâmetro Credential .
    • Se você for um parceiro CSP trabalhando em nome de um locatário, especifique o cliente como um locatário, usando seu tenantID ou tenant primary domain name. Por exemplo: Connect-AzAccount -Tenant "fabrikam.com"
  2. Associe a subscrição que pretende utilizar à conta, uma vez que uma conta pode ter várias subscrições:

    Set-AzContext -Subscription $SubscriptionName
    
  3. Verifique se sua assinatura está registrada para usar os provedores do Azure para Serviços de Recuperação e Recuperação de Site, usando estes comandos:

    Get-AzResourceProvider -ProviderNamespace  Microsoft.RecoveryServices
    
  4. Verifique se na saída do comando, o RegistrationState está definido como Registered, você pode prosseguir para a Etapa 2. Caso contrário, deve registar o fornecedor em falta na sua subscrição, executando estes comandos:

    Register-AzResourceProvider -ProviderNamespace Microsoft.RecoveryServices
    
  5. Verifique se os Provedores se registraram com êxito, usando os seguintes comandos:

    Get-AzResourceProvider -ProviderNamespace  Microsoft.RecoveryServices
    

Etapa 2: configurar o cofre

  1. Crie um grupo de recursos do Azure Resource Manager no qual criar o cofre ou use um grupo de recursos existente. Crie um novo grupo de recursos da seguinte maneira. A $ResourceGroupName variável contém o nome do grupo de recursos que você deseja criar e a variável $Geo contém a região do Azure na qual criar o grupo de recursos (por exemplo, "Sul do Brasil").

    New-AzResourceGroup -Name $ResourceGroupName -Location $Geo
    
  2. Para obter uma lista de grupos de recursos em sua assinatura, execute o Get-AzResourceGroup cmdlet.

  3. Crie um novo cofre dos Serviços de Recuperação do Azure da seguinte maneira:

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

Você pode recuperar uma lista de cofres existentes com o Get-AzRecoveryServicesVault cmdlet.

Etapa 3: Definir o contexto do cofre dos Serviços de Recuperação

Defina o contexto do cofre da seguinte forma:

Set-AzRecoveryServicesAsrVaultContext -Vault $vault

Etapa 4: Criar um site Hyper-V

  1. Crie um novo site Hyper-V da seguinte maneira:

    $sitename = "MySite"                #Specify site friendly name
    New-AzRecoveryServicesAsrFabric -Type HyperVSite -Name $sitename
    
  2. Este cmdlet inicia um trabalho de Recuperação de Site para criar o site e retorna um objeto de trabalho de Recuperação de Site. Aguarde a conclusão do trabalho e verifique se ele foi concluído com êxito.

  3. Use o Get-AzRecoveryServicesAsrJob cmdlet para recuperar o objeto de trabalho e verifique o status atual do trabalho.

  4. Gere e descarregue uma chave de registo para o site, da seguinte forma:

    $SiteIdentifier = Get-AzRecoveryServicesAsrFabric -Name $sitename | Select-Object -ExpandProperty SiteIdentifier
    $path = Get-AzRecoveryServicesVaultSettingsFile -Vault $vault -SiteIdentifier $SiteIdentifier -SiteFriendlyName $sitename
    
  5. Copie a chave baixada para o host Hyper-V. Você precisa da chave para registrar o host Hyper-V no site.

Etapa 5: Instalar o provedor e o agente

  1. Transfira o instalador para a versão mais recente do Fornecedor a partir da Microsoft.

  2. Execute o instalador no host Hyper-V.

  3. No final da instalação, continue para a etapa de registro.

  4. Quando solicitado, forneça a chave baixada e conclua o registro do host Hyper-V.

  5. Verifique se o host Hyper-V está registrado no site da seguinte maneira:

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

Se você estiver executando um servidor núcleo do Hyper-V, baixe o arquivo de instalação e siga estas etapas:

  1. Extraia os arquivos do AzureSiteRecoveryProvider.exe para um diretório local executando este comando:

    AzureSiteRecoveryProvider.exe /x:. /q
    
  2. Execute o seguinte comando:

    .\setupdr.exe /i
    

    Os resultados são registrados em %ProgramData%\ASRLogs\DRASetupWizard.log.

  3. Registre o servidor executando este 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"
    

Etapa 6: Criar uma política de replicação

Antes de começar, a conta de armazenamento especificada deve estar na mesma região do Azure que o cofre e deve ter a replicação geográfica habilitada.

  1. Crie uma política de replicação da seguinte maneira:

    $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. Verifique o trabalho retornado para garantir que a criação da política de replicação seja bem-sucedida.

  3. Recupere o contêiner de proteção que corresponde ao site, da seguinte maneira:

    $protectionContainer = Get-AzRecoveryServicesAsrProtectionContainer
    
  4. Associe o contêiner de proteção à política de replicação, da seguinte maneira:

    $Policy = Get-AzRecoveryServicesAsrPolicy -FriendlyName $PolicyName
    $associationJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name $mappingName -Policy $Policy -PrimaryProtectionContainer $protectionContainer[0]
    
  5. Aguarde até que o trabalho de associação seja concluído com êxito.

  6. Recupere o mapeamento do contêiner de proteção.

    $ProtectionContainerMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -ProtectionContainer $protectionContainer
    

Etapa 7: Habilitar a proteção de VM

  1. Recupere o item protegível que corresponde à VM que você deseja proteger, da seguinte maneira:

    $VMFriendlyName = "Fabrikam-app"          #Name of the VM
    $ProtectableItem = Get-AzRecoveryServicesAsrProtectableItem -ProtectionContainer $protectionContainer -FriendlyName $VMFriendlyName
    
  2. Proteja a VM. Se a VM que você está protegendo tiver mais de um disco conectado a ela, especifique o disco do sistema operacional usando o parâmetro 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. Aguarde até que as VMs atinjam um estado protegido após a replicação inicial. Isso pode demorar um pouco, dependendo de fatores como a quantidade de dados a serem replicados e a largura de banda upstream disponível para o Azure. Quando um estado protegido está em vigor, o estado do trabalho e StateDescription são atualizados da seguinte maneira:

    PS C:\> $DRjob = Get-AzRecoveryServicesAsrJob -Job $DRjob
    
    PS C:\> $DRjob | Select-Object -ExpandProperty State
    Succeeded
    
    PS C:\> $DRjob | Select-Object -ExpandProperty StateDescription
    Completed
    
  4. Atualize as propriedades de recuperação (como o tamanho da função VM) e a rede do Azure à qual anexar a NIC da VM após o 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 você deseja replicar para discos gerenciados habilitados para CMK no Azure, execute as seguintes etapas usando o Az PowerShell 3.3.0 em diante:

  1. Habilite o failover para discos gerenciados atualizando as propriedades da VM
  2. Use o Get-AzRecoveryServicesAsrReplicationProtectedItem cmdlet para buscar a ID do disco para cada disco do item protegido
  3. Crie um objeto de dicionário usando New-Object "System.Collections.Generic.Dictionary``2[System.String,System.String]" cmdlet para conter o mapeamento do ID do disco para o conjunto de criptografia de disco. Esses conjuntos de criptografia de disco devem ser pré-criados por você na região de destino.
  4. Atualize as propriedades da VM usando Set-AzRecoveryServicesAsrReplicationProtectedItem o cmdlet passando o objeto dictionary no parâmetro DiskIdToDiskEncryptionSetMap .

Etapa 8: Executar um failover de teste

  1. Execute um failover de teste da seguinte maneira:

    $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. Verifique se a VM de teste foi criada no Azure. O trabalho de failover de teste é suspenso após a criação da VM de teste no Azure.

  3. Para limpar e concluir o failover de teste, execute:

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

Próximos passos

Saiba mais sobre o Azure Site Recovery com cmdlets do PowerShell do Azure Resource Manager.