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:
- Uma conta do Microsoft Azure . Pode começar com uma avaliação gratuita. Além disso, você pode ler sobre os preços do Azure Site Recovery Manager.
- Azure PowerShell. Para obter informações sobre esta versão e como instalá-la, consulte Instalar o Azure PowerShell.
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
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"
- Como alternativa, você pode incluir suas credenciais de conta como um parâmetro no
Associe a subscrição que pretende utilizar à conta, uma vez que uma conta pode ter várias subscrições:
Set-AzContext -Subscription $SubscriptionName
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
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
Verifique se os Provedores se registraram 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 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
Para obter uma lista de grupos de recursos em sua assinatura, execute o
Get-AzResourceGroup
cmdlet.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
Crie um novo site Hyper-V da seguinte maneira:
$sitename = "MySite" #Specify site friendly name New-AzRecoveryServicesAsrFabric -Type HyperVSite -Name $sitename
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.
Use o
Get-AzRecoveryServicesAsrJob
cmdlet para recuperar o objeto de trabalho e verifique o status atual do trabalho.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
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
Transfira o instalador para a versão mais recente do Fornecedor a partir da Microsoft.
Execute o instalador no host Hyper-V.
No final da instalação, continue 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 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:
Extraia os arquivos do AzureSiteRecoveryProvider.exe para um diretório local executando este comando:
AzureSiteRecoveryProvider.exe /x:. /q
Execute o seguinte comando:
.\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 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.
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 seja bem-sucedida.
Recupere o contêiner de proteção que 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 até que o trabalho de associação seja concluído com êxito.
Recupere o mapeamento do contêiner de proteção.
$ProtectionContainerMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -ProtectionContainer $protectionContainer
Etapa 7: Habilitar a proteção de VM
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
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
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
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:
- Habilite o failover para discos gerenciados atualizando as propriedades da VM
- Use o
Get-AzRecoveryServicesAsrReplicationProtectedItem
cmdlet para buscar a ID do disco para cada disco do item protegido - 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. - 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
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
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óximos passos
Saiba mais sobre o Azure Site Recovery com cmdlets do PowerShell do Azure Resource Manager.