Nastavení zotavení po havárii pro virtuální počítače Azure s využitím Azure PowerShellu

V tomto článku se dozvíte, jak nastavit a otestovat zotavení po havárii pro virtuální počítače Azure pomocí Azure PowerShellu.

Získáte informace pro:

  • Vytvořte trezor služby Recovery Services.
  • Nastavte kontext trezoru pro relaci PowerShellu.
  • Připravte trezor na spuštění replikace virtuálních počítačů Azure.
  • Vytvoření mapování sítě
  • Vytvořte účty úložiště pro replikaci virtuálních počítačů do.
  • Replikace virtuálních počítačů Azure do oblasti zotavení po havárii
  • Proveďte testovací převzetí služeb při selhání, ověřte a vyčistěte testovací převzetí služeb při selhání.
  • Převzetí služeb při selhání do oblasti obnovení

Poznámka:

Ne všechny možnosti scénářů dostupné prostřednictvím portálu můžou být dostupné prostřednictvím Azure PowerShellu. Mezi možnosti scénáře, které azure PowerShell v současné době nepodporuje, patří:

  • Možnost určit, že všechny disky ve virtuálním počítači by se měly replikovat, aniž by bylo nutné explicitně zadat každý disk virtuálního počítače.

Poznámka:

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Požadavky

Než začnete, potřebujete:

Přihlášení k předplatnému Microsoft Azure

Přihlaste se ke svému předplatnému Azure pomocí rutiny Connect-AzAccount .

Connect-AzAccount

Vyberte své předplatné Azure. Pomocí rutiny Get-AzSubscription získáte seznam předplatných Azure, ke kterým máte přístup. Vyberte předplatné Azure, se kterým chcete pracovat pomocí rutiny Set-AzContext .

Set-AzContext -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Získání podrobností o virtuálním počítači, který se má replikovat

V tomto článku se virtuální počítač v oblasti USA – východ replikuje a obnoví v oblasti USA – západ 2. Replikovaný virtuální počítač má disk s operačním systémem a jeden datový disk. Název virtuálního počítače použitého v příkladu je 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}

Získejte podrobnosti o discích virtuálního počítače. Podrobnosti o disku se použijí později při spuštění replikace virtuálního počítače.

$OSDiskVhdURI = $VM.StorageProfile.OsDisk.Vhd
$DataDisk1VhdURI = $VM.StorageProfile.DataDisks[0].Vhd

Vytvoření trezoru služby Recovery Services

Vytvořte skupinu prostředků, ve které chcete vytvořit trezor služby Recovery Services.

Důležité

  • Trezor služby Recovery Services a chráněné virtuální počítače musí být v různých umístěních Azure.
  • Skupina prostředků trezoru služby Recovery Services a chráněné virtuální počítače musí být v různých umístěních Azure.
  • Trezor služby Recovery Services a skupina prostředků, do které patří, může být ve stejném umístění Azure.

V příkladu v tomto článku je chráněný virtuální počítač v oblasti USA – východ. Oblast obnovení vybraná pro zotavení po havárii je oblast USA – západ 2. Trezor služby Recovery Services a skupina prostředků trezoru jsou v oblasti obnovení USA – západ 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

Vytvořte trezor služby Recovery Services. V tomto příkladu se vytvoří trezor služby Recovery Services s názvem a2aDemoRecoveryVault v oblasti USA – západ 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

Nastavení kontextu trezoru

Nastavte kontext trezoru pro použití v relaci PowerShellu. Po nastavení kontextu trezoru se operace Azure Site Recovery v relaci PowerShellu provádějí v kontextu vybraného trezoru.

#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

Pro migraci z Azure do Azure můžete nastavit kontext trezoru na nově vytvořený trezor:

#Set the vault context for the PowerShell session.
Set-AzRecoveryServicesAsrVaultContext -Vault $vault

Příprava trezoru na zahájení replikace virtuálních počítačů Azure

Vytvoření objektu infrastruktury Site Recovery pro reprezentaci primární (zdrojové) oblasti

Objekt infrastruktury v trezoru představuje oblast Azure. Vytvoří se primární objekt infrastruktury, který představuje oblast Azure, do které patří virtuální počítače chráněné do trezoru. V příkladu v tomto článku je chráněný virtuální počítač v oblasti USA – východ.

  • Pro každou oblast je možné vytvořit pouze jeden objekt infrastruktury.
  • Pokud jste dříve povolili replikaci Site Recovery pro virtuální počítač na webu Azure Portal, Site Recovery automaticky vytvoří objekt infrastruktury. Pokud objekt infrastruktury existuje pro oblast, nemůžete vytvořit nový objekt.

Než začnete, uvědomte si, že se operace Site Recovery spouští asynchronně. Při zahájení operace se odešle úloha Azure Site Recovery a vrátí se objekt sledování úloh. Pomocí objektu sledování úloh získejte nejnovější stav úlohy (Get-AzRecoveryServicesAsrJob) a monitorujte stav operace.

#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"

Pokud jsou virtuální počítače z více oblastí Azure chráněné do stejného trezoru, vytvořte jeden objekt infrastruktury pro každou zdrojovou oblast Azure.

Vytvoření objektu infrastruktury Site Recovery, který představuje oblast obnovení

Objekt prostředků infrastruktury obnovení představuje umístění Azure pro obnovení. Pokud dojde k převzetí služeb při selhání, virtuální počítače se replikují a obnoví do oblasti obnovení reprezentované prostředky infrastruktury obnovení. Oblast Azure pro obnovení použitá v tomto příkladu je USA – západ 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"

Vytvoření kontejneru ochrany Site Recovery v primárních prostředcích infrastruktury

Kontejner ochrany je kontejner používaný k seskupení replikovaných položek v prostředcích infrastruktury.

#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"

Vytvoření kontejneru ochrany Site Recovery v prostředcích infrastruktury obnovení

#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"

Vytváření prostředků infrastruktury a kontejneru při povolování replikace zón do zóny

Při povolování replikace zón pro zónu se vytvoří pouze jeden prostředky infrastruktury. Ale budou tam dva kontejnery. Za předpokladu, že je oblast Západní Evropa, pomocí následujících příkazů získejte primární kontejnery a kontejnery ochrany –

$primaryProtectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric $fabric -Name "asr-a2a-default-westeurope-container"
$recoveryPprotectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric $fabric -Name "asr-a2a-default-westeurope-t-container"

Vytvoření zásady replikace

#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"

Vytvoření mapování kontejneru ochrany mezi primárním kontejnerem a kontejnerem ochrany pro obnovení

Mapování kontejneru ochrany mapuje primární kontejner ochrany pomocí kontejneru ochrany obnovení a zásad replikace. Vytvořte jedno mapování pro každou zásadu replikace, kterou použijete k replikaci virtuálních počítačů mezi párem kontejneru ochrany.

#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"

Vytvoření mapování kontejnerů ochrany při povolení replikace zón do zóny

Pokud povolíte replikaci zón pro zónu, pomocí následujícího příkazu vytvořte mapování kontejneru ochrany. Za předpokladu, že je oblast Západní Evropa, bude příkaz -

$protContainerMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -ProtectionContainer $PrimprotectionContainer -Name "westeurope-westeurope-24-hour-retention-policy-s"

Vytvoření mapování kontejneru ochrany pro navrácení služeb po obnovení (zpětná replikace po převzetí služeb při selhání)

Po převzetí služeb při selhání provedete navrácení služeb po obnovení po obnovení virtuálního počítače s převzetím služeb při selhání zpět do původní oblasti Azure. Pokud chcete provést navrácení služeb po obnovení, virtuální počítač, který převezme služby při selhání, se vrátí zpět z oblasti převzetí služeb při selhání do původní oblasti. Pro zpětnou replikaci role původní oblasti a přepnutí oblasti obnovení. Původní oblast se teď stane novou oblastí obnovení a tím, co byla původně oblast obnovení, se teď stane primární oblastí. Mapování kontejneru ochrany pro zpětnou replikaci představuje přepínané role původních oblastí a oblastí obnovení.

#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"

Vytvoření účtu úložiště mezipaměti a cílového účtu úložiště

Účet úložiště mezipaměti je účet úložiště úrovně Standard ve stejné oblasti Azure jako replikovaný virtuální počítač. Účet úložiště mezipaměti slouží k dočasnému uložení změn replikace před přesunem změn do oblasti Azure pro obnovení. K dispozici je také podpora vysoké četnosti změn ve službě Azure Site Recovery, abyste získali vyšší limity četnosti změn. Pokud chcete tuto funkci použít, vytvořte typ objektu blob bloku Úrovně Premium účtů úložiště a pak ji použijte jako účet úložiště mezipaměti. Můžete se rozhodnout, ale není nutné zadat různé účty úložiště mezipaměti pro různé disky virtuálního počítače. Pokud používáte různé účty úložiště mezipaměti, ujistěte se, že jsou stejného typu (objekty blob bloku úrovně Standard nebo Premium). Další informace najdete v tématu Zotavení po havárii virtuálního počítače Azure – podpora vysoké četnosti změn.

#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

Pro virtuální počítače , které nepoužívají spravované disky, je cílovým účtem úložiště účet úložiště v oblasti obnovení, do které se disky virtuálního počítače replikují. Cílovým účtem úložiště může být účet úložiště úrovně Standard nebo účet služby Premium Storage. Vyberte typ požadovaného účtu úložiště na základě rychlosti změny dat (rychlost zápisu vstupně-výstupních operací) pro disky a podporované limity četnosti změn pro typ úložiště azure Site Recovery.

#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

Vytvoření mapování sítě

Mapování sítě mapuje virtuální sítě v primární oblasti na virtuální sítě v oblasti obnovení. Mapování sítě určuje virtuální síť Azure v oblasti obnovení, do které by měl převzít služby při selhání virtuální počítač v primární virtuální síti. Jednu virtuální síť Azure je možné mapovat pouze na jednu virtuální síť Azure v oblasti obnovení.

  • Vytvořte virtuální síť Azure v oblasti obnovení, která převezme služby při selhání:

      #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
    
  • Načtěte primární virtuální síť. Virtuální síť, ke které je virtuální počítač připojený:

      #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("\","/")
    
  • Vytvořte mapování sítě mezi primární virtuální sítí a virtuální sítí pro obnovení:

      #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
    
  • Vytvoření mapování sítě pro opačný směr (navrácení služeb po obnovení):

    #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
    

Replikace virtuálního počítače Azure

Replikujte virtuální počítač Azure se spravovanými disky.

#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

Replikujte virtuální počítač Azure s nespravovanými disky.

#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

Po úspěšném spuštění operace replikace se data virtuálního počítače replikují do oblasti obnovení.

Proces replikace začíná počátečním nasazením kopie replikujících disků virtuálního počítače v oblasti obnovení. Tato fáze se nazývá počáteční fáze replikace.

Po dokončení počáteční replikace se replikace přesune do fáze rozdílové synchronizace. V tomto okamžiku je virtuální počítač chráněný a na něm lze provést operaci testovacího převzetí služeb při selhání. Po dokončení počáteční replikace přejde stav replikace replikované položky představující virtuální počítač do chráněného stavu.

Sledujte stav replikace a stav replikace virtuálního počítače získáním podrobností o chráněné položce replikace odpovídající ho.

Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $PrimaryProtContainer | Select FriendlyName, ProtectionState, ReplicationHealth
FriendlyName ProtectionState ReplicationHealth
------------ --------------- -----------------
AzureDemoVM  Protected       Normal

Testovací převzetí služeb při selhání, ověření a vyčištění testovacího převzetí služeb při selhání

Po dosažení chráněného stavu replikace virtuálního počítače je možné na virtuálním počítači provést operaci testovacího převzetí služeb při selhání (v položce chráněné replikací virtuálního počítače).

#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

Proveďte testovací převzetí služeb při selhání.

$ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem -FriendlyName "AzureDemoVM" -ProtectionContainer $PrimaryProtContainer

$TFOJob = Start-AzRecoveryServicesAsrTestFailoverJob -ReplicationProtectedItem $ReplicationProtectedItem -AzureVMNetworkId $TFONetwork -Direction PrimaryToRecovery

Počkejte na dokončení operace testovacího převzetí služeb při selhání.

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           : {}

Po úspěšném dokončení úlohy testovacího převzetí služeb při selhání se můžete připojit k testovacímu virtuálnímu počítači, který převzal služby při selhání, a ověřit testovací převzetí služeb při selhání.

Po dokončení testování na virtuálním počítači, u které došlo k převzetí služeb při selhání, vyčistíte testovací kopii spuštěním operace testovacího převzetí služeb při selhání. Tato operace odstraní testovací kopii virtuálního počítače vytvořeného testovacím převzetím služeb při selhání.

$Job_TFOCleanup = Start-AzRecoveryServicesAsrTestFailoverCleanupJob -ReplicationProtectedItem $ReplicationProtectedItem

Get-AzRecoveryServicesAsrJob -Job $Job_TFOCleanup | Select State
State
-----
Succeeded

Převzetí služeb při selhání do Azure

Převzetí služeb při selhání virtuálního počítače do konkrétního bodu obnovení

$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

Pokud je úloha převzetí služeb při selhání úspěšná, můžete operaci převzetí služeb při selhání potvrdit.

$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           : {}

Znovunastavení ochrany a navrácení služeb po obnovení do zdrojové oblasti

Po převzetí služeb při selhání, až budete připraveni se vrátit k původní oblasti, spusťte pomocí rutiny zpětnou replikaci chráněné položky Update-AzRecoveryServicesAsrProtectionDirection replikace.

#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

Po dokončení opětovné ochrany můžete provést převzetí služeb při selhání v opačném směru, v oblasti USA – západ na východ a navrátit služby po obnovení do zdrojové oblasti.

Zákaz replikace

Replikaci můžete zakázat pomocí rutiny Remove-AzRecoveryServicesAsrReplicationProtectedItem .

Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem $ReplicationProtectedItem

Další kroky

Projděte si referenční informace k Prostředí PowerShell pro Azure Site Recovery a zjistěte, jak můžete provádět další úlohy, jako je vytváření plánů obnovení a testování převzetí služeb při selhání plánů obnovení pomocí PowerShellu.