Configurar a recuperação de desastres para o Azure para máquinas virtuais do Hyper-V usando o PowerShell e o Azure Resource Manager
O Azure Site Recovery contribui para sua estratégia de BCDR (continuidade de negócios e recuperação de desastre) gerenciando replicação, failover e recuperação de máquinas virtuais (VMs) do Azure e servidores físicos e VMs locais.
Este artigo descreve como usar o Windows PowerShell, junto com o Azure Resource Manager para replicar máquinas virtuais do Hyper-V no Azure. O exemplo usado neste artigo mostra como replicar uma única VM em execução em um host Hyper-V no Azure.
Observação
Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Para começar, confira Instalar o Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira 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 da Recuperação de Site disponíveis com o Azure PowerShell para o Azure Resource Manager permitem que você proteja e recupere seus servidores no Azure.
Não é preciso ser um especialista no PowerShell para usar este artigo, mas é necessário entender os conceitos básicos, como módulos, cmdlets e sessões. Para obter mais informações, veja a Documentação do Azure e Usando o Azure PowerShell com o Azure Resource Manager.
Observação
Os parceiros da Microsoft no programa CSP (Provedor de Solução na Nuvem) podem configurar e gerenciar a proteção dos servidores de clientes em suas respectivas assinaturas de CSP (assinaturas de locatário).
Antes de começar
Verifique se estes pré-requisitos estão em vigor:
- Uma conta do Microsoft Azure . Você pode começar com uma avaliação gratuita. Além disso, você pode ler sobre preços do Azure Site Recovery Manager.
- PowerShell do Azure. Para obter informações sobre essa versão e como instalá-la, veja Instalar o Azure PowerShell.
Além disso, o exemplo específico descrito neste artigo tem os seguintes pré-requisitos:
- Um host Hyper-V que executa o Windows Server 2012 R2 ou o Microsoft Hyper-V Server 2012 R2 contendo uma ou mais máquinas virtuais. Os servidores Hyper-V devem estar conectados à Internet, diretamente ou por meio de um proxy.
- As máquinas virtuais que você deseja replicar devem estar em conformidade com esses pré-requisitos.
Etapa 1: Entrar em sua conta do Azure
Abra um console do PowerShell e execute este comando para entrar em sua conta do Azure. Esse cmdlet abre uma página da Web que solicita suas credenciais de conta:
Connect-AzAccount
.- Como alternativa, é possível incluir as credenciais de conta como um parâmetro no cmdlet
Connect-AzAccount
, usando o parâmetro Credential. - Se você é um parceiro CSP trabalhando em nome de um locatário, especifique o cliente como um locatário usando a tenantID ou o nome de domínio primário do locatário. Por exemplo:
Connect-AzAccount -Tenant "fabrikam.com"
- Como alternativa, é possível incluir as credenciais de conta como um parâmetro no cmdlet
Associe a assinatura que deseja usar com a conta, uma vez que uma conta pode ter várias assinaturas:
Set-AzContext -Subscription $SubscriptionName
Verifique se sua assinatura está registrada para usar os provedores do Azure para os Serviços de Recuperação e o Site Recovery usando os seguintes comandos:
Get-AzResourceProvider -ProviderNamespace Microsoft.RecoveryServices
Se, na saída de comando, o RegistrationState estiver definido como Registrado, você poderá prosseguir para a Etapa 2. Caso contrário, você deverá registrar o provedor ausente em sua assinatura executando estes comandos:
Register-AzResourceProvider -ProviderNamespace Microsoft.RecoveryServices
Verifique se os provedores foram registrados com êxito usando os seguintes comandos:
Get-AzResourceProvider -ProviderNamespace Microsoft.RecoveryServices
Etapa 2: configurar o cofre
Crie um grupo de recursos do Azure Resource Manager no qual você criará o cofre ou use um grupo de recursos existente. Crie um novo grupo de recursos da seguinte maneira. A variável
$ResourceGroupName
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 o grupo de recursos será criado (por exemplo, “Sul do Brasil”).New-AzResourceGroup -Name $ResourceGroupName -Location $Geo
Para obter uma lista de grupos de recursos em sua assinatura, execute o cmdlet
Get-AzResourceGroup
.Crie um novo cofre dos Serviços de Recuperação do Azure da seguinte maneira:
$vault = New-AzRecoveryServicesVault -Name <string> -ResourceGroupName <string> -Location <string>
É possível recuperar uma lista de cofres existentes usando o cmdlet Get-AzRecoveryServicesVault
.
Etapa 3: Configurar o contexto do Cofre dos Serviços de Recuperação
Defina o contexto do cofre da seguinte maneira:
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
Etapa 4: criar um site do Hyper-V
Crie um novo site do Hyper-V da seguinte maneira:
$sitename = "MySite" #Specify site friendly name New-AzRecoveryServicesAsrFabric -Type HyperVSite -Name $sitename
Este cmdlet inicia um trabalho da Recuperação de Site para a criação do site e retorna um objeto de trabalho da Recuperação de Site. Aguarde a conclusão do trabalho e verifique se ele foi concluído com êxito.
Use o cmdlet
Get-AzRecoveryServicesAsrJob
para recuperar o objeto de trabalho e verifique o status atual do trabalho.Gere e baixe uma chave de registro para o site da seguinte maneira:
$SiteIdentifier = Get-AzRecoveryServicesAsrFabric -Name $sitename | Select-Object -ExpandProperty SiteIdentifier $path = Get-AzRecoveryServicesVaultSettingsFile -Vault $vault -SiteIdentifier $SiteIdentifier -SiteFriendlyName $sitename
Copie a chave baixada no host Hyper-V. Você precisa da chave para registrar o host Hyper-V no site.
Etapa 5: instalar o Provedor e o agente
Baixe o instalador para obter a versão mais recente do provedor na Microsoft.
Execute o instalador no host Hyper-V.
No final da instalação, vá para a etapa de registro.
Quando solicitado, forneça a chave baixada e conclua o registro do host Hyper-V.
Verifique se o host Hyper-V foi registrado no site da seguinte maneira:
$server = Get-AzRecoveryServicesAsrFabric -Name $siteName | Get-AzRecoveryServicesAsrServicesProvider -FriendlyName $server-friendlyname
Se você estiver executando um servidor de núcleo do Hyper-V, baixe o arquivo de instalação e siga estas etapas:
Extraia os arquivos de AzureSiteRecoveryProvider.exe para um diretório local executando este comando:
AzureSiteRecoveryProvider.exe /x:. /q
Execute o comando a seguir:
.\setupdr.exe /i
Os resultados são registrados em %Programdata%\ASRLogs\DRASetupWizard.log.
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 iniciar, 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.
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
Verifique o trabalho retornado para garantir que a criação da política de replicação foi bem-sucedida.
Recupere o contêiner de proteção corresponde ao site da seguinte maneira:
$protectionContainer = Get-AzRecoveryServicesAsrProtectionContainer
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]
Aguarde o conclusão bem-sucedida do trabalho de associação.
Recupere o mapeamento de contêiner de proteção.
$ProtectionContainerMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -ProtectionContainer $protectionContainer
Etapa 7: habilitar a proteção de VM
Recupere o item protegido que corresponde à VM que você deseja proteger, da seguinte maneira:
$VMFriendlyName = "Fabrikam-app" #Name of the VM $ProtectableItem = Get-AzRecoveryServicesAsrProtectableItem -ProtectionContainer $protectionContainer -FriendlyName $VMFriendlyName
Proteja a VM. Se a VM que você estiver protegendo tiver mais de um disco anexado, 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
Aguarde até que as máquinas virtuais 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 no Azure. Quando um estado protegido estiver implantado, o State e StateDescription do trabalho 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
Atualize as propriedades de recuperação (como o tamanho da função da VM) e a rede do Azure à qual o NIC da VM será anexado 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
Observação
Se você desejar replicar para discos gerenciados habilitados para CMK no Azure, faça as seguintes etapas usando o Az PowerShell 3.3.0 em diante:
- Habilitar o failover para discos gerenciados atualizando as propriedades da VM
- Use o cmdlet
Get-AzRecoveryServicesAsrReplicationProtectedItem
para buscar a ID do disco para cada disco do item protegido - Crie um objeto de dicionário usando o cmdlet
New-Object "System.Collections.Generic.Dictionary``2[System.String,System.String]"
para conter o mapeamento da ID de 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. - Atualize as propriedades da VM usando o cmdlet
Set-AzRecoveryServicesAsrReplicationProtectedItem
passando o objeto de dicionário no parâmetro DiskIdToDiskEncryptionSetMap.
Etapa 8: Execute um teste de failover
Execute o 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
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.
Para limpar e concluir o failover de teste, execute:
$TFjob = Start-AzRecoveryServicesAsrTestFailoverCleanupJob -ReplicationProtectedItem $rpi -Comment "TFO done"
Próximas etapas
Saiba mais sobre o Azure Site Recovery com cmdlets do PowerShell do Azure Resource Manager.