Konfigurera haveriberedskap för virtuella Azure-datorer med Azure PowerShell

I den här artikeln får du se hur du konfigurerar och testar haveriberedskap för virtuella Azure-datorer med Hjälp av Azure PowerShell.

Du lär dig att:

  • Skapa ett Recovery Services-valv.
  • Ange valvkontexten för PowerShell-sessionen.
  • Förbered valvet för att börja replikera virtuella Azure-datorer.
  • Skapa nätverksmappningar.
  • Skapa lagringskonton att replikera virtuella datorer till.
  • Replikera virtuella Azure-datorer till en återställningsregion för haveriberedskap.
  • Utför ett redundanstest, validera och rensa redundanstest.
  • Redundansväxla till återställningsregionen.

Kommentar

Alla scenariofunktioner som är tillgängliga via portalen kan inte vara tillgängliga via Azure PowerShell. Några av de scenariofunktioner som för närvarande inte stöds via Azure PowerShell är:

  • Möjligheten att ange att alla diskar på en virtuell dator ska replikeras utan att uttryckligen behöva ange varje disk på den virtuella datorn.

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Information om hur du kommer igång finns i Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Förutsättningar

Innan du börjar:

Logga in på din Microsoft Azure-prenumeration

Logga in på din Azure-prenumeration med cmdleten Connect-AzAccount .

Connect-AzAccount

Välj din Azure-prenumerationen. Använd cmdleten Get-AzSubscription för att hämta listan över Azure-prenumerationer som du har åtkomst till. Välj den Azure-prenumeration som du vill arbeta med med hjälp av cmdleten Set-AzContext .

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

Hämta information om den virtuella dator som ska replikeras

I den här artikeln replikeras en virtuell dator i regionen USA, östra till och återställs i regionen USA, västra 2. Den virtuella datorn som replikeras har en OS-disk och en enda datadisk. Namnet på den virtuella dator som används i exemplet är 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}

Hämta diskinformation för den virtuella datorns diskar. Diskinformation används senare när replikeringen startas för den virtuella datorn.

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

Skapa ett Recovery Services-valv

Skapa en resursgrupp där Du kan skapa Recovery Services-valvet.

Viktigt!

  • Recovery Services-valvet och de virtuella datorer som skyddas måste finnas på olika Azure-platser.
  • Resursgruppen för Recovery Services-valvet och de virtuella datorer som skyddas måste finnas på olika Azure-platser.
  • Recovery Services-valvet och resursgruppen som det tillhör kan finnas på samma Azure-plats.

I exemplet i den här artikeln finns den virtuella dator som skyddas i regionen USA, östra. Återställningsregionen som valts för haveriberedskap är regionen USA, västra 2. Recovery Services-valvet och resursgruppen för valvet finns båda i återställningsregionen, USA, västra 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

Skapa ett Recovery Services-valv. I det här exemplet skapas ett Recovery Services-valv med namnet a2aDemoRecoveryVault i regionen USA, västra 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

Ange valvkontexten

Ange valvkontexten för användning i PowerShell-sessionen. När valvkontexten har angetts utförs Azure Site Recovery-åtgärder i PowerShell-sessionen i kontexten för det valda valvet.

#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

För en Azure-till-Azure-migrering kan du ange valvkontexten till det nyligen skapade valvet:

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

Förbereda valvet för att börja replikera virtuella Azure-datorer

Skapa ett Site Recovery-infrastrukturobjekt som representerar den primära regionen (källregionen)

Infrastrukturobjektet i valvet representerar en Azure-region. Det primära infrastrukturobjektet skapas för att representera den Azure-region som virtuella datorer som skyddas i valvet tillhör. I exemplet i den här artikeln finns den virtuella dator som skyddas i regionen USA, östra.

  • Endast ett infrastrukturobjekt kan skapas per region.
  • Om du tidigare har aktiverat Site Recovery-replikering för en virtuell dator i Azure-portalen skapar Site Recovery automatiskt ett infrastrukturobjekt. Om det finns ett infrastrukturobjekt för en region kan du inte skapa ett nytt.

Innan du börjar bör du förstå att Site Recovery-åtgärder körs asynkront. När du initierar en åtgärd skickas ett Azure Site Recovery-jobb och ett jobbspårningsobjekt returneras. Använd jobbspårningsobjektet för att hämta den senaste statusen för jobbet (Get-AzRecoveryServicesAsrJob) och för att övervaka åtgärdens status.

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

Om virtuella datorer från flera Azure-regioner skyddas till samma valv skapar du ett infrastrukturobjekt för varje Azure-källregion.

Skapa ett Site Recovery-infrastrukturobjekt som representerar återställningsregionen

Återställningsinfrastrukturobjektet representerar återställningsplatsen för Azure. Om det sker en redundans replikeras och återställs virtuella datorer till återställningsregionen som representeras av återställningsinfrastrukturen. Återställningsregionen i Azure som används i det här exemplet är USA, västra 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"

Skapa en Site Recovery-skyddscontainer i den primära infrastrukturresursen

Skyddscontainern är en container som används för att gruppera replikerade objekt i en infrastrukturresurs.

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

Skapa en Site Recovery-skyddscontainer i återställningsinfrastrukturen

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

Skapa infrastrukturresurser och containrar när zon-till-zon-replikering aktiveras

När zon-till-zon-replikering aktiveras skapas endast en infrastrukturresurs. Men det kommer att finnas två containrar. Förutsatt att regionen är Europa, västra använder du följande kommandon för att hämta de primära containrarna och skyddscontainrarna -

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

Skapa replikeringsprincip

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

Skapa en skyddscontainermappning mellan den primära containern och återställningsskyddscontainern

En skyddscontainermappning mappar den primära skyddscontainern med en återställningsskyddscontainer och en replikeringsprincip. Skapa en mappning för varje replikeringsprincip som du ska använda för att replikera virtuella datorer mellan ett skyddscontainerpar.

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

Skapa skyddscontainermappning när zon-till-zon-replikering aktiveras

När du aktiverar zon-till-zon-replikering använder du kommandot nedan för att skapa skyddscontainermappning. Förutsatt att regionen är Europa, västra, kommer kommandot att vara -

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

Skapa en skyddscontainermappning för återställning efter fel (omvänd replikering efter en redundansväxling)

När du efter en redundansväxling är redo att ta tillbaka den redundansväxla virtuella datorn till den ursprungliga Azure-regionen gör du en återställning efter fel. Om du vill växla tillbaka replikeras den redundansväxlade virtuella datorn från den redundansväxlade regionen till den ursprungliga regionen. För omvänd replikering växlar rollerna för den ursprungliga regionen och återställningsregionen. Den ursprungliga regionen blir nu den nya återställningsregionen och det som ursprungligen var återställningsregionen blir nu den primära regionen. Skyddscontainerns mappning för omvänd replikering representerar de växlade rollerna för de ursprungliga regionerna och återställningsregionerna.

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

Skapa cachelagringskonto och mållagringskonto

Ett cachelagringskonto är ett standardlagringskonto i samma Azure-region som den virtuella dator som replikeras. Cachelagringskontot används för att tillfälligt lagra replikeringsändringar innan ändringarna flyttas till återställningsregionen i Azure. Stöd för hög omsättning är också tillgängligt i Azure Site Recovery för att få högre omsättningsgränser. Om du vill använda den här funktionen skapar du en Premium Block Blob-typ av lagringskonton och använder den sedan som cachelagringskonto. Du kan välja att ange olika cachelagringskonton för de olika diskarna på en virtuell dator, men det är inte nödvändigt. Om du använder olika cachelagringskonton kontrollerar du att de är av samma typ (Standard- eller Premium-blockblobar). Mer information finns i Haveriberedskap för virtuella Azure-datorer – stöd för hög omsättning.

#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

För virtuella datorer som inte använder hanterade diskar är mållagringskontot lagringskontot i återställningsregionen som diskarna på den virtuella datorn replikeras till. Mållagringskontot kan vara antingen ett standardlagringskonto eller ett Premium Storage-konto. Välj den typ av lagringskonto som krävs baserat på dataändringshastigheten (I/O-skrivfrekvens) för diskarna och de omsättningsgränser som stöds av Azure Site Recovery för lagringstypen.

#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

Skapa nätverksmappningar

En nätverksmappning mappar virtuella nätverk i den primära regionen till virtuella nätverk i återställningsregionen. Nätverksmappningen anger det virtuella Azure-nätverket i återställningsregionen, som en virtuell dator i det primära virtuella nätverket ska redundansväxla till. Ett virtuellt Azure-nätverk kan endast mappas till ett enda virtuellt Azure-nätverk i en återställningsregion.

  • Skapa ett virtuellt Azure-nätverk i återställningsregionen för redundansväxling till:

      #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
    
  • Hämta det primära virtuella nätverket. Det virtuella nätverk som den virtuella datorn är ansluten till:

      #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("\","/")
    
  • Skapa nätverksmappning mellan det primära virtuella nätverket och det virtuella återställningsnätverket:

      #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
    
  • Skapa nätverksmappning för omvänd riktning (återställning efter fel):

    #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
    

Replikera en virtuell Azure-dator

Replikera den virtuella Azure-datorn med hanterade diskar.

#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

Replikera den virtuella Azure-datorn med ohanterade diskar.

#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

När replikeringsåtgärden har startats replikeras data från virtuella datorer till återställningsregionen.

Replikeringsprocessen börjar med att först seeda en kopia av de replikerande diskarna för den virtuella datorn i återställningsregionen. Den här fasen kallas för den inledande replikeringsfasen.

När den inledande replikeringen är klar flyttas replikeringen till differentiell synkroniseringsfas. I det här läget skyddas den virtuella datorn och en redundansteståtgärd kan utföras på den. Replikeringstillståndet för det replikerade objektet som representerar den virtuella datorn går till det skyddade tillståndet när den inledande replikeringen har slutförts.

Övervaka replikeringstillståndet och replikeringshälsan för den virtuella datorn genom att hämta information om det replikeringsskyddade objekt som motsvarar det.

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

Gör ett redundanstest, verifiera och rensa redundanstest

När replikeringen för den virtuella datorn har nått ett skyddat tillstånd kan en redundansteståtgärd utföras på den virtuella datorn (på det replikeringsskyddade objektet på den virtuella datorn).

#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

Gör ett redundanstest.

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

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

Vänta tills redundanstestet har slutförts.

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

När redundanstestet har slutförts kan du ansluta till testet redundansväxla den virtuella datorn och verifiera redundanstestet.

När testningen har slutförts på den virtuella datorn redundansväxla du testkopian genom att starta redundanstestet. Den här åtgärden tar bort testkopian av den virtuella datorn som skapades vid redundanstestet.

$Job_TFOCleanup = Start-AzRecoveryServicesAsrTestFailoverCleanupJob -ReplicationProtectedItem $ReplicationProtectedItem

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

Redundansväxla till Azure

Redundansväxla den virtuella datorn till en specifik återställningspunkt.

$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

När redundansjobbet lyckas kan du genomföra redundansåtgärden.

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

Återaktivera skyddet och återställa till källregionen

Efter en redundansväxling startar du omvänd replikering för det replikeringsskyddade objektet med hjälp av cmdleten Update-AzRecoveryServicesAsrProtectionDirection när du är redo att gå tillbaka till den ursprungliga regionen.

#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

När återaktiveringen av skyddet är klar kan du redundansväxla i omvänd riktning, USA, västra till USA, östra och växla tillbaka till källregionen.

Inaktivera replikering

Du kan inaktivera replikering med cmdleten Remove-AzRecoveryServicesAsrReplicationProtectedItem .

Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem $ReplicationProtectedItem

Nästa steg

Visa PowerShell-referensen för Azure Site Recovery för att lära dig hur du kan utföra andra uppgifter, till exempel att skapa återställningsplaner och testa redundans för återställningsplaner med PowerShell.