Configurar a recuperação após desastre para as máquinas virtuais do Azure com o Azure PowerShell
Neste artigo, você verá como configurar e testar a recuperação de desastres para máquinas virtuais do Azure usando o Azure PowerShell.
Sabe como:
- Crie um cofre dos Serviços de Recuperação.
- Defina o contexto do cofre para a sessão do PowerShell.
- Prepare o cofre para começar a replicar máquinas virtuais do Azure.
- Crie mapeamentos de rede.
- Crie contas de armazenamento para replicar máquinas virtuais.
- Replique máquinas virtuais do Azure para uma região de recuperação para recuperação de desastres.
- Execute um failover de teste, valide e limpe o failover de teste.
- Failover para a região de recuperação.
Nota
Nem todos os recursos de cenário disponíveis por meio do portal podem estar disponíveis por meio do Azure PowerShell. Alguns dos recursos de cenário atualmente não suportados pelo Azure PowerShell são:
- A capacidade de especificar que todos os discos em uma máquina virtual devem ser replicados sem ter que especificar explicitamente cada disco da máquina virtual.
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.
Pré-requisitos
Antes de começar:
- Certifique-se de que compreende a arquitetura e os componentes do cenário.
- Reveja os requisitos de suporte de todos os componentes.
- Você tem o módulo do Azure PowerShell
Az
. Se você precisar instalar ou atualizar o Azure PowerShell, siga este Guia para instalar e configurar o Azure PowerShell.
Iniciar sessão na sua subscrição do Microsoft Azure
Entre na sua assinatura do Azure com o Connect-AzAccount
cmdlet.
Connect-AzAccount
Selecione a subscrição do Azure. Use o Get-AzSubscription
cmdlet para obter a lista de assinaturas do Azure às quais você tem acesso. Selecione a assinatura do Azure com a qual trabalhar usando o Set-AzContext
cmdlet.
Set-AzContext -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Obter detalhes da máquina virtual a ser replicada
Neste artigo, uma máquina virtual na região Leste dos EUA é replicada e recuperada na região Oeste dos EUA 2. A máquina virtual que está sendo replicada tem um disco de sistema operacional e um único disco de dados. O nome da máquina virtual usada no exemplo é AzureDemoVM
.
# Get details of the virtual machine
$VM = Get-AzVM -ResourceGroupName "A2AdemoRG" -Name "AzureDemoVM"
Write-Output $VM
ResourceGroupName : A2AdemoRG
Id : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/A2AdemoRG/providers/Microsoft.Compute/virtualMachines/AzureDemoVM
VmId : 1b864902-c7ea-499a-ad0f-65da2930b81b
Name : AzureDemoVM
Type : Microsoft.Compute/virtualMachines
Location : eastus
Tags : {}
DiagnosticsProfile : {BootDiagnostics}
HardwareProfile : {VmSize}
NetworkProfile : {NetworkInterfaces}
OSProfile : {ComputerName, AdminUsername, WindowsConfiguration, Secrets}
ProvisioningState : Succeeded
StorageProfile : {ImageReference, OsDisk, DataDisks}
Obtenha detalhes do disco para os discos da máquina virtual. Os detalhes do disco serão usados posteriormente ao iniciar a replicação para a máquina virtual.
$OSDiskVhdURI = $VM.StorageProfile.OsDisk.Vhd
$DataDisk1VhdURI = $VM.StorageProfile.DataDisks[0].Vhd
Criar um cofre dos Serviços de Recuperação
Crie um grupo de recursos no qual criar o cofre dos Serviços de Recuperação.
Importante
- O cofre de serviços de recuperação e as máquinas virtuais que estão sendo protegidas devem estar em locais diferentes do Azure.
- O grupo de recursos do cofre de serviços de recuperação e as máquinas virtuais que estão sendo protegidas devem estar em locais diferentes do Azure.
- O cofre dos serviços de recuperação e o grupo de recursos ao qual ele pertence podem estar no mesmo local do Azure.
No exemplo deste artigo, a máquina virtual que está sendo protegida está na região Leste dos EUA. A região de recuperação selecionada para recuperação de desastres é a região Oeste dos EUA 2. O cofre de serviços de recuperação e o grupo de recursos do cofre estão ambos na região de recuperação, West US 2.
#Create a resource group for the recovery services vault in the recovery Azure region
New-AzResourceGroup -Name "a2ademorecoveryrg" -Location "West US 2"
ResourceGroupName : a2ademorecoveryrg
Location : westus2
ProvisioningState : Succeeded
Tags :
ResourceId : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/a2ademorecoveryrg
Crie um cofre de serviços de recuperação. Neste exemplo, um cofre dos Serviços de Recuperação nomeado a2aDemoRecoveryVault
é criado na região Oeste dos EUA 2.
#Create a new Recovery services vault in the recovery region
$vault = New-AzRecoveryServicesVault -Name "a2aDemoRecoveryVault" -ResourceGroupName "a2ademorecoveryrg" -Location "West US 2"
Write-Output $vault
Name : a2aDemoRecoveryVault
ID : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/a2ademorecoveryrg/providers/Microsoft.RecoveryServices/vaults/a2aDemoRecoveryVault
Type : Microsoft.RecoveryServices/vaults
Location : westus2
ResourceGroupName : a2ademorecoveryrg
SubscriptionId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Properties : Microsoft.Azure.Commands.RecoveryServices.ARSVaultProperties
Definir o contexto do cofre
Defina o contexto do cofre para uso na sessão do PowerShell. Depois que o contexto do cofre é definido, as operações do Azure Site Recovery na sessão do PowerShell são executadas no contexto do cofre selecionado.
#Setting the vault context.
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
ResourceName ResourceGroupName ResourceNamespace ResourceType
------------ ----------------- ----------------- -----------
a2aDemoRecoveryVault a2ademorecoveryrg Microsoft.RecoveryServices Vaults
#Delete the downloaded vault settings file
Remove-Item -Path $Vaultsettingsfile.FilePath
Para uma migração do Azure para o Azure, você pode definir o contexto do cofre para o cofre recém-criado:
#Set the vault context for the PowerShell session.
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
Preparar o cofre para começar a replicar máquinas virtuais do Azure
Criar um objeto de malha do Site Recovery para representar a região primária (de origem)
O objeto de malha no cofre representa uma região do Azure. O objeto de malha primário é criado para representar a região do Azure à qual pertencem as máquinas virtuais protegidas para o cofre. No exemplo deste artigo, a máquina virtual que está sendo protegida está na região Leste dos EUA.
- Apenas um objeto de malha pode ser criado por região.
- Se você tiver habilitado anteriormente a replicação do Site Recovery para uma VM no portal do Azure, o Site Recovery criará um objeto de malha automaticamente. Se existir um objeto de malha para uma região, não será possível criar um novo.
Antes de começar, entenda que as operações de Recuperação de Site são executadas de forma assíncrona. Quando você inicia uma operação, um trabalho do Azure Site Recovery é enviado e um objeto de controle de trabalho é retornado. Use o objeto de controle de trabalho para obter o status mais recente para o trabalho (Get-AzRecoveryServicesAsrJob
) e para monitorar o status da operação.
#Create Primary ASR fabric
$TempASRJob = New-AzRecoveryServicesAsrFabric -Azure -Location 'East US' -Name "A2Ademo-EastUS"
# Track Job status to check for completion
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
#If the job hasn't completed, sleep for 10 seconds before checking the job status again
sleep 10;
$TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
}
#Check if the Job completed successfully. The updated job state of a successfully completed job should be "Succeeded"
Write-Output $TempASRJob.State
$PrimaryFabric = Get-AzRecoveryServicesAsrFabric -Name "A2Ademo-EastUS"
Se as máquinas virtuais de várias regiões do Azure estiverem sendo protegidas para o mesmo cofre, crie um objeto de malha para cada região do Azure de origem.
Criar um objeto de malha de Recuperação de Site para representar a região de recuperação
O objeto de malha de recuperação representa o local de recuperação do Azure. Se houver um failover, as máquinas virtuais serão replicadas e recuperadas para a região de recuperação representada pela malha de recuperação. A região de recuperação do Azure usada neste exemplo é West US 2.
#Create Recovery ASR fabric
$TempASRJob = New-AzRecoveryServicesAsrFabric -Azure -Location 'West US 2' -Name "A2Ademo-WestUS"
# Track Job status to check for completion
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
sleep 10;
$TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
}
#Check if the Job completed successfully. The updated job state of a successfully completed job should be "Succeeded"
Write-Output $TempASRJob.State
$RecoveryFabric = Get-AzRecoveryServicesAsrFabric -Name "A2Ademo-WestUS"
Criar um contêiner de proteção de Recuperação de Site na malha primária
O contêiner de proteção é um contêiner usado para agrupar itens replicados dentro de uma malha.
#Create a Protection container in the primary Azure region (within the Primary fabric)
$TempASRJob = New-AzRecoveryServicesAsrProtectionContainer -InputObject $PrimaryFabric -Name "A2AEastUSProtectionContainer"
#Track Job status to check for completion
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
sleep 10;
$TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
}
Write-Output $TempASRJob.State
$PrimaryProtContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric $PrimaryFabric -Name "A2AEastUSProtectionContainer"
Criar um contêiner de proteção de Recuperação de Site na malha de recuperação
#Create a Protection container in the recovery Azure region (within the Recovery fabric)
$TempASRJob = New-AzRecoveryServicesAsrProtectionContainer -InputObject $RecoveryFabric -Name "A2AWestUSProtectionContainer"
#Track Job status to check for completion
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
sleep 10;
$TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
}
#Check if the Job completed successfully. The updated job state of a successfully completed job should be "Succeeded"
Write-Output $TempASRJob.State
$RecoveryProtContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric $RecoveryFabric -Name "A2AWestUSProtectionContainer"
Criação de malha e contêiner ao habilitar a replicação de zona para zona
Ao habilitar a replicação de zona para zona, apenas uma malha será criada. Mas haverá dois contentores. Supondo que a região seja a Europa Ocidental, use os seguintes comandos para obter os contêineres primários e de proteção -
$primaryProtectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric $fabric -Name "asr-a2a-default-westeurope-container"
$recoveryProtectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric $fabric -Name "asr-a2a-default-westeurope-t-container"
Criar uma política de replicação
#Create replication policy
$TempASRJob = New-AzRecoveryServicesAsrPolicy -AzureToAzure -Name "A2APolicy" -RecoveryPointRetentionInHours 24 -ApplicationConsistentSnapshotFrequencyInHours 4
#Track Job status to check for completion
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
sleep 10;
$TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
}
#Check if the Job completed successfully. The updated job state of a successfully completed job should be "Succeeded"
Write-Output $TempASRJob.State
$ReplicationPolicy = Get-AzRecoveryServicesAsrPolicy -Name "A2APolicy"
Criar um mapeamento de contêiner de proteção entre o contêiner de proteção principal e de recuperação
Um mapeamento de contêiner de proteção mapeia o contêiner de proteção principal com um contêiner de proteção de recuperação e uma política de replicação. Crie um mapeamento para cada política de replicação que você usará para replicar máquinas virtuais entre um par de contêineres de proteção.
#Create Protection container mapping between the Primary and Recovery Protection Containers with the Replication policy
$TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name "A2APrimaryToRecovery" -Policy $ReplicationPolicy -PrimaryProtectionContainer $PrimaryProtContainer -RecoveryProtectionContainer $RecoveryProtContainer
#Track Job status to check for completion
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
sleep 10;
$TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
}
#Check if the Job completed successfully. The updated job state of a successfully completed job should be "Succeeded"
Write-Output $TempASRJob.State
$EusToWusPCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -ProtectionContainer $PrimaryProtContainer -Name "A2APrimaryToRecovery"
Criação de mapeamento de contêiner de proteção ao habilitar a replicação de zona para zona
Ao habilitar a replicação de zona para zona, use o comando abaixo para criar o mapeamento de contêiner de proteção. Assumindo que a região é a Europa Ocidental, o comando será -
$protContainerMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -ProtectionContainer $PrimprotectionContainer -Name "westeurope-westeurope-24-hour-retention-policy-s"
Criar um mapeamento de contêiner de proteção para failback (replicação reversa após um failover)
Após um failover, quando estiver pronto para trazer a máquina virtual com failover de volta para a região original do Azure, você fará um failback. Para failback, a máquina virtual com failover é replicada inversamente da região com failover para a região original. Para replicação reversa, as funções da região original e da região de recuperação são alternadas. A região original torna-se agora a nova região de recuperação, e o que era originalmente a região de recuperação torna-se agora a região primária. O mapeamento de contêiner de proteção para replicação reversa representa as funções comutadas das regiões original e de recuperação.
#Create Protection container mapping (for fail back) between the Recovery and Primary Protection Containers with the Replication policy
$TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name "A2ARecoveryToPrimary" -Policy $ReplicationPolicy -PrimaryProtectionContainer $RecoveryProtContainer -RecoveryProtectionContainer $PrimaryProtContainer
#Track Job status to check for completion
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
sleep 10;
$TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
}
#Check if the Job completed successfully. The updated job state of a successfully completed job should be "Succeeded"
Write-Output $TempASRJob.State
$WusToEusPCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -ProtectionContainer $RecoveryProtContainer -Name "A2ARecoveryToPrimary"
Criar conta de armazenamento em cache e conta de armazenamento de destino
Uma conta de armazenamento em cache é uma conta de armazenamento padrão na mesma região do Azure que a máquina virtual que está sendo replicada. A conta de armazenamento de cache é usada para manter as alterações de replicação temporariamente, antes que as alterações sejam movidas para a região de recuperação do Azure. O suporte de alta rotatividade também está disponível no Azure Site Recovery para obter limites de rotatividade mais altos. Para usar esse recurso, crie um tipo de contas de armazenamento Premium Block Blob e use-o como a conta de armazenamento em cache. Você pode optar, mas não é necessário, especificar diferentes contas de armazenamento em cache para os diferentes discos de uma máquina virtual. Se você usar contas de armazenamento em cache diferentes, verifique se elas são do mesmo tipo (Blobs de bloco Standard ou Premium). Para obter mais informações, consulte Azure VM Disaster Recovery - High Churn Support.
#Create Cache storage account for replication logs in the primary region
$EastUSCacheStorageAccount = New-AzStorageAccount -Name "a2acachestorage" -ResourceGroupName "A2AdemoRG" -Location 'East US' -SkuName Standard_LRS -Kind Storage
Para máquinas virtuais que não usam discos gerenciados, a conta de armazenamento de destino é a conta de armazenamento na região de recuperação para a qual os discos da máquina virtual são replicados. A conta de armazenamento de destino pode ser uma conta de armazenamento padrão ou uma conta de armazenamento premium. Selecione o tipo de conta de armazenamento necessária com base na taxa de alteração de dados (taxa de gravação de E/S) para os discos e nos limites de rotatividade suportados pelo Azure Site Recovery para o tipo de armazenamento.
#Create Target storage account in the recovery region. In this case a Standard Storage account
$WestUSTargetStorageAccount = New-AzStorageAccount -Name "a2atargetstorage" -ResourceGroupName "a2ademorecoveryrg" -Location 'West US 2' -SkuName Standard_LRS -Kind Storage
Criar mapeamentos de rede
Um mapeamento de rede mapeia redes virtuais na região primária para redes virtuais na região de recuperação. O mapeamento de rede especifica a rede virtual do Azure na região de recuperação, para a qual uma máquina virtual na rede virtual primária deve fazer failover. Uma rede virtual do Azure pode ser mapeada para apenas uma única rede virtual do Azure em uma região de recuperação.
Crie uma rede virtual do Azure na região de recuperação para fazer failover para:
#Create a Recovery Network in the recovery region $WestUSRecoveryVnet = New-AzVirtualNetwork -Name "a2arecoveryvnet" -ResourceGroupName "a2ademorecoveryrg" -Location 'West US 2' -AddressPrefix "10.0.0.0/16" Add-AzVirtualNetworkSubnetConfig -Name "default" -VirtualNetwork $WestUSRecoveryVnet -AddressPrefix "10.0.0.0/20" | Set-AzVirtualNetwork $WestUSRecoveryNetwork = $WestUSRecoveryVnet.Id
Recupere a rede virtual primária. A VNet à qual a máquina virtual está conectada:
#Retrieve the virtual network that the virtual machine is connected to #Get first network interface card(nic) of the virtual machine $SplitNicArmId = $VM.NetworkProfile.NetworkInterfaces[0].Id.split("/") #Extract resource group name from the ResourceId of the nic $NICRG = $SplitNicArmId[4] #Extract resource name from the ResourceId of the nic $NICname = $SplitNicArmId[-1] #Get network interface details using the extracted resource group name and resource name $NIC = Get-AzNetworkInterface -ResourceGroupName $NICRG -Name $NICname #Get the subnet ID of the subnet that the nic is connected to $PrimarySubnet = $NIC.IpConfigurations[0].Subnet # Extract the resource ID of the Azure virtual network the nic is connected to from the subnet ID $EastUSPrimaryNetwork = (Split-Path(Split-Path($PrimarySubnet.Id))).Replace("\","/")
Crie um mapeamento de rede entre a rede virtual primária e a rede virtual de recuperação:
#Create an ASR network mapping between the primary Azure virtual network and the recovery Azure virtual network $TempASRJob = New-AzRecoveryServicesAsrNetworkMapping -AzureToAzure -Name "A2AEusToWusNWMapping" -PrimaryFabric $PrimaryFabric -PrimaryAzureNetworkId $EastUSPrimaryNetwork -RecoveryFabric $RecoveryFabric -RecoveryAzureNetworkId $WestUSRecoveryNetwork #Track Job status to check for completion while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob } #Check if the Job completed successfully. The updated job state of a successfully completed job should be "Succeeded" Write-Output $TempASRJob.State
Crie um mapeamento de rede para a direção inversa (failback):
#Create an ASR network mapping for fail back between the recovery Azure virtual network and the primary Azure virtual network $TempASRJob = New-AzRecoveryServicesAsrNetworkMapping -AzureToAzure -Name "A2AWusToEusNWMapping" -PrimaryFabric $RecoveryFabric -PrimaryAzureNetworkId $WestUSRecoveryNetwork -RecoveryFabric $PrimaryFabric -RecoveryAzureNetworkId $EastUSPrimaryNetwork #Track Job status to check for completion while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob } #Check if the Job completed successfully. The updated job state of a successfully completed job should be "Succeeded" Write-Output $TempASRJob.State
Replicar máquina virtual do Azure
Replique a máquina virtual do Azure com discos gerenciados.
#Get the resource group that the virtual machine must be created in when failed over.
$RecoveryRG = Get-AzResourceGroup -Name "a2ademorecoveryrg" -Location "West US 2"
#Specify replication properties for each disk of the VM that is to be replicated (create disk replication configuration)
#OsDisk
$OSdiskId = $vm.StorageProfile.OsDisk.ManagedDisk.Id
$RecoveryOSDiskAccountType = $vm.StorageProfile.OsDisk.ManagedDisk.StorageAccountType
$RecoveryReplicaDiskAccountType = $vm.StorageProfile.OsDisk.ManagedDisk.StorageAccountType
$OSDiskReplicationConfig = New-AzRecoveryServicesAsrAzureToAzureDiskReplicationConfig -ManagedDisk -LogStorageAccountId $EastUSCacheStorageAccount.Id `
-DiskId $OSdiskId -RecoveryResourceGroupId $RecoveryRG.ResourceId -RecoveryReplicaDiskAccountType $RecoveryReplicaDiskAccountType `
-RecoveryTargetDiskAccountType $RecoveryOSDiskAccountType
# Data disk
$datadiskId1 = $vm.StorageProfile.DataDisks[0].ManagedDisk.Id
$RecoveryReplicaDiskAccountType = $vm.StorageProfile.DataDisks[0].ManagedDisk.StorageAccountType
$RecoveryTargetDiskAccountType = $vm.StorageProfile.DataDisks[0].ManagedDisk.StorageAccountType
$DataDisk1ReplicationConfig = New-AzRecoveryServicesAsrAzureToAzureDiskReplicationConfig -ManagedDisk -LogStorageAccountId $EastUSCacheStorageAccount.Id `
-DiskId $datadiskId1 -RecoveryResourceGroupId $RecoveryRG.ResourceId -RecoveryReplicaDiskAccountType $RecoveryReplicaDiskAccountType `
-RecoveryTargetDiskAccountType $RecoveryTargetDiskAccountType
#Create a list of disk replication configuration objects for the disks of the virtual machine that are to be replicated.
$diskconfigs = @()
$diskconfigs += $OSDiskReplicationConfig, $DataDisk1ReplicationConfig
#Start replication by creating replication protected item. Using a GUID for the name of the replication protected item to ensure uniqueness of name.
$TempASRJob = New-AzRecoveryServicesAsrReplicationProtectedItem -AzureToAzure -AzureVmId $VM.Id -Name (New-Guid).Guid -ProtectionContainerMapping $EusToWusPCMapping -AzureToAzureDiskReplicationConfiguration $diskconfigs -RecoveryResourceGroupId $RecoveryRG.ResourceId
Replique a máquina virtual do Azure com discos não gerenciados.
#Specify replication properties for each disk of the VM that is to be replicated (create disk replication configuration)
#Disk replication configuration for the OS disk
$OSDiskReplicationConfig = New-AzRecoveryServicesAsrAzureToAzureDiskReplicationConfig -VhdUri $OSDiskVhdURI.Uri -LogStorageAccountId $EastUSCacheStorageAccount.Id -RecoveryAzureStorageAccountId $WestUSTargetStorageAccount.Id
#Disk replication configuration for data disk
$DataDisk1ReplicationConfig = New-AzRecoveryServicesAsrAzureToAzureDiskReplicationConfig -VhdUri $DataDisk1VhdURI.Uri -LogStorageAccountId $EastUSCacheStorageAccount.Id -RecoveryAzureStorageAccountId $WestUSTargetStorageAccount.Id
#Create a list of disk replication configuration objects for the disks of the virtual machine that are to be replicated.
$diskconfigs = @()
$diskconfigs += $OSDiskReplicationConfig, $DataDisk1ReplicationConfig
#Get the resource group that the virtual machine must be created in when failed over.
$RecoveryRG = Get-AzResourceGroup -Name "a2ademorecoveryrg" -Location "West US 2"
#Start replication by creating replication protected item. Using a GUID for the name of the replication protected item to ensure uniqueness of name.
$TempASRJob = New-AzRecoveryServicesAsrReplicationProtectedItem -AzureToAzure -AzureVmId $VM.Id -Name (New-Guid).Guid -ProtectionContainerMapping $EusToWusPCMapping -AzureToAzureDiskReplicationConfiguration $diskconfigs -RecoveryResourceGroupId $RecoveryRG.ResourceId
#Track Job status to check for completion
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
sleep 10;
$TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob
}
#Check if the Job completed successfully. The updated job state of a successfully completed job should be "Succeeded"
Write-Output $TempASRJob.State
Quando a operação de replicação inicial for bem-sucedida, os dados da máquina virtual serão replicados para a região de recuperação.
O processo de replicação começa com a propagação inicial de uma cópia dos discos replicantes da máquina virtual na região de recuperação. Essa fase é chamada de fase inicial de replicação.
Após a conclusão da replicação inicial, a replicação passa para a fase de sincronização diferencial. Neste ponto, a máquina virtual está protegida e uma operação de failover de teste pode ser executada nela. O estado de replicação do item replicado que representa a máquina virtual vai para o estado Protegido após a conclusão da replicação inicial.
Monitore o estado de replicação e a integridade da replicação para a máquina virtual obtendo detalhes do item protegido de replicação correspondente a ela.
Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $PrimaryProtContainer | Select FriendlyName, ProtectionState, ReplicationHealth
FriendlyName ProtectionState ReplicationHealth
------------ --------------- -----------------
AzureDemoVM Protected Normal
Faça um failover de teste, valide e limpe o failover de teste
Depois que a replicação para a máquina virtual atingir um estado protegido, uma operação de failover de teste pode ser executada na máquina virtual (no item protegido de replicação da máquina virtual).
#Create a separate network for test failover (not connected to my DR network)
$TFOVnet = New-AzVirtualNetwork -Name "a2aTFOvnet" -ResourceGroupName "a2ademorecoveryrg" -Location 'West US 2' -AddressPrefix "10.3.0.0/16"
Add-AzVirtualNetworkSubnetConfig -Name "default" -VirtualNetwork $TFOVnet -AddressPrefix "10.3.0.0/20" | Set-AzVirtualNetwork
$TFONetwork= $TFOVnet.Id
Faça um failover de teste.
$ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem -FriendlyName "AzureDemoVM" -ProtectionContainer $PrimaryProtContainer
$TFOJob = Start-AzRecoveryServicesAsrTestFailoverJob -ReplicationProtectedItem $ReplicationProtectedItem -AzureVMNetworkId $TFONetwork -Direction PrimaryToRecovery
Aguarde a conclusão da operação de failover de teste.
Get-AzRecoveryServicesAsrJob -Job $TFOJob
Name : 3dcb043e-3c6d-4e0e-a42e-8d4245668547
ID : /Subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/a2ademorecoveryrg/providers/Microsoft.RecoveryServices/vaults/a2aDemoR
ecoveryVault/replicationJobs/3dcb043e-3c6d-4e0e-a42e-8d4245668547
Type : Microsoft.RecoveryServices/vaults/replicationJobs
JobType : TestFailover
DisplayName : Test failover
ClientRequestId : 1ef8515b-b130-4452-a44d-91aaf071931c ActivityId: 907bb2bc-ebe6-4732-8b66-77d0546eaba8
State : Succeeded
StateDescription : Completed
StartTime : 4/25/2018 4:29:43 AM
EndTime : 4/25/2018 4:33:06 AM
TargetObjectId : ce86206c-bd78-53b4-b004-39b722c1ac3a
TargetObjectType : ProtectionEntity
TargetObjectName : azuredemovm
AllowedActions :
Tasks : {Prerequisites check for test failover, Create test virtual machine, Preparing the virtual machine, Start the virtual machine}
Errors : {}
Depois que o trabalho de failover de teste for concluído com êxito, você poderá se conectar à máquina virtual com failover de teste e validar o failover de teste.
Quando o teste estiver concluído na máquina virtual com falha de teste, limpe a cópia de teste iniciando a operação de failover do teste de limpeza. Esta operação exclui a cópia de teste da máquina virtual que foi criada pelo failover de teste.
$Job_TFOCleanup = Start-AzRecoveryServicesAsrTestFailoverCleanupJob -ReplicationProtectedItem $ReplicationProtectedItem
Get-AzRecoveryServicesAsrJob -Job $Job_TFOCleanup | Select State
State
-----
Succeeded
Ativação pós-falha para o Azure
Faça failover da máquina virtual para um ponto de recuperação específico.
$RecoveryPoints = Get-AzRecoveryServicesAsrRecoveryPoint -ReplicationProtectedItem $ReplicationProtectedItem
#The list of recovery points returned may not be sorted chronologically and will need to be sorted first, in order to be able to find the oldest or the latest recovery points for the virtual machine.
"{0} {1}" -f $RecoveryPoints[0].RecoveryPointType, $RecoveryPoints[-1].RecoveryPointTime
CrashConsistent 4/24/2018 11:10:25 PM
#Start the fail over job
$Job_Failover = Start-AzRecoveryServicesAsrUnplannedFailoverJob -ReplicationProtectedItem $ReplicationProtectedItem -Direction PrimaryToRecovery -RecoveryPoint $RecoveryPoints[-1]
do {
$Job_Failover = Get-AzRecoveryServicesAsrJob -Job $Job_Failover;
sleep 30;
} while (($Job_Failover.State -eq "InProgress") -or ($JobFailover.State -eq "NotStarted"))
$Job_Failover.State
Succeeded
Quando o trabalho de failover for bem-sucedido, você poderá confirmar a operação de failover.
$CommitFailoverJOb = Start-AzRecoveryServicesAsrCommitFailoverJob -ReplicationProtectedItem $ReplicationProtectedItem
Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJOb
Name : 58afc2b7-5cfe-4da9-83b2-6df358c6e4ff
ID : /Subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/a2ademorecoveryrg/providers/Microsoft.RecoveryServices/vaults/a2aDemoR
ecoveryVault/replicationJobs/58afc2b7-5cfe-4da9-83b2-6df358c6e4ff
Type : Microsoft.RecoveryServices/vaults/replicationJobs
JobType : CommitFailover
DisplayName : Commit
ClientRequestId : 10a95d6c-359e-4603-b7d9-b7ee3317ce94 ActivityId: 8751ada4-fc42-4238-8de6-a82618408fcf
State : Succeeded
StateDescription : Completed
StartTime : 4/25/2018 4:50:58 AM
EndTime : 4/25/2018 4:51:01 AM
TargetObjectId : ce86206c-bd78-53b4-b004-39b722c1ac3a
TargetObjectType : ProtectionEntity
TargetObjectName : azuredemovm
AllowedActions :
Tasks : {Prerequisite check, Commit}
Errors : {}
Reproteger e fazer failover para a região de origem
Após um failover, quando estiver pronto para voltar à região original, inicie a replicação reversa para o item protegido de replicação usando o Update-AzRecoveryServicesAsrProtectionDirection
cmdlet.
#Create Cache storage account for replication logs in the primary region
$WestUSCacheStorageAccount = New-AzStorageAccount -Name "a2acachestoragewestus" -ResourceGroupName "A2AdemoRG" -Location 'West US' -SkuName Standard_LRS -Kind Storage
#Use the recovery protection container, new cache storage account in West US and the source region VM resource group
Update-AzRecoveryServicesAsrProtectionDirection -ReplicationProtectedItem $ReplicationProtectedItem -AzureToAzure
-ProtectionContainerMapping $WusToEusPCMapping -LogStorageAccountId $WestUSCacheStorageAccount.Id -RecoveryResourceGroupID $sourceVMResourcegroup.ResourceId
Depois que a reproteção for concluída, você poderá fazer failover na direção inversa, Oeste dos EUA para Leste dos EUA, e failover para a região de origem.
Desativar a replicação
Você pode desabilitar a replicação com o Remove-AzRecoveryServicesAsrReplicationProtectedItem
cmdlet.
Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem $ReplicationProtectedItem
Próximos passos
Exiba a referência do PowerShell do Azure Site Recovery para saber como você pode executar outras tarefas, como criar planos de recuperação e testar o failover de planos de recuperação com o PowerShell.