Einrichten der Notfallwiederherstellung für virtuelle Azure-Computer über Azure PowerShellSet up disaster recovery for Azure virtual machines using Azure PowerShell

In diesem Artikel wird beschrieben, wie Sie die Notfallwiederherstellung für virtuelle Azure-Computer über Azure PowerShell einrichten und testen.In this article, you see how to setup and test disaster recovery for Azure virtual machines using Azure PowerShell.

Folgendes wird vermittelt:You learn how to:

  • Erstellen Sie einen Recovery Services-Tresor.Create a Recovery Services vault.
  • Festlegen des Tresorkontexts für die PowerShell-SitzungSet the vault context for the PowerShell session.
  • Vorbereiten des Tresors für die Replikation virtueller Azure-ComputerPrepare the vault to start replicating Azure virtual machines.
  • Erstellen von NetzwerkzuordnungenCreate network mappings.
  • Erstellen Sie Speicherkonten zum Replizieren der virtuellen Computer.Create storage accounts to replicate virtual machines to.
  • Replizieren virtueller Azure-Computer in eine Wiederherstellungsregion für die NotfallwiederherstellungReplicate Azure virtual machines to a recovery region for disaster recovery.
  • Führen Sie ein Testfailover aus, und überprüfen und bereinigen Sie das Testfailover.Perform a test failover, validate, and cleanup test failover.
  • Failover zur WiederherstellungsregionFailover to the recovery region.

Hinweis

Möglicherweise stehen nicht alle Szenariofunktionen, die über das Portal verfügbar sind, über Azure PowerShell bereit.Not all scenario capabilities available through the portal may be available through Azure PowerShell. Unter anderem werden die folgenden Szenariofunktionen derzeit nicht über Azure PowerShell unterstützt:Some of the scenario capabilities not currently supported through Azure PowerShell are:

  • Die Möglichkeit festzulegen, dass alle Datenträger eines virtuellen Computers repliziert werden sollen, ohne jeden einzelnen Datenträger des virtuellen Computers explizit angeben zu müssen.The ability to specify that all disks in a virtual machine should be replicated without having to explicitly specify each disk of the virtual machine.

Hinweis

Dieser Artikel wurde aktualisiert und beinhaltet jetzt das neue Az-Modul von Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Sie können das AzureRM-Modul weiterhin verwenden, das bis mindestens Dezember 2020 weiterhin Fehlerbehebungen erhält.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Weitere Informationen zum neuen Az-Modul und zur Kompatibilität mit AzureRM finden Sie unter Introducing the new Azure PowerShell Az module (Einführung in das neue Az-Modul von Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Anweisungen zur Installation des Az-Moduls finden Sie unter Install Azure PowerShell (Installieren von Azure PowerShell).For Az module installation instructions, see Install Azure PowerShell.

VoraussetzungenPrerequisites

Vorbereitungen:Before you start:

Anmelden bei Ihrem Microsoft Azure-AbonnementLog in to your Microsoft Azure subscription

Melden Sie sich mithilfe des Cmdlets Connect-AzAccount bei Ihrem Azure-Abonnement an.Log in to your Azure subscription using the Connect-AzAccount cmdlet.

Connect-AzAccount

Wählen Sie Ihr Azure-Abonnement.Select your Azure subscription. Verwenden Sie das Cmdlet Get-AzSubscription zum Abrufen der Liste der Azure-Abonnements, auf die Sie Zugriff haben.Use the Get-AzSubscription cmdlet to get the list of Azure subscriptions you have access to. Wählen Sie mit dem Cmdlet Set-AzContext das Azure-Abonnement aus, mit dem Sie arbeiten möchten.Select the Azure subscription to work with using the Set-AzContext cmdlet.

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

Abrufen von Details der zu replizierenden virtuellen ComputerGet details of the virtual machine(s) to be replicated

In dem Beispiel in diesem Artikel wird ein virtueller Computer in der Region „USA, Osten“ in der Region „USA, Westen 2“ repliziert und wiederhergestellt.In the example in this article, a virtual machine in the East US region will be replicated to and recovered in the West US 2 region. Der zu replizierende virtuelle Computer umfasst einen Betriebssystemdatenträger und einen einzelnen Datenträger für Daten.The virtual machine being replicated is a virtual machine with an OS disk and a single data disk. Der Name des virtuellen Computers im Beispiel lautet AzureDemoVM.The name of the virtual machine used in the example is 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}

Rufen Sie detaillierte Informationen zu den Datenträgern des virtuellen Computers ab.Get disk details for the disks of the virtual machine. Die Datenträgerdetails werden später beim Starten der Replikation für den virtuellen Computer verwendet.Disk details will be used later when starting replication for the virtual machine.

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

Erstellen eines Recovery Services-TresorsCreate a Recovery Services vault

Erstellen Sie eine Ressourcengruppe, in der der Recovery Services-Tresor erstellt werden soll.Create a resource group in which to create the Recovery Services vault.

Wichtig

  • Der Recovery Services-Tresor und die zu schützenden virtuellen Computer müssen sich an verschiedenen Azure-Standorten befinden.The Recovery services vault and the virtual machines being protected, must be in different Azure locations.
  • Die Ressourcengruppe des Recovery Services-Tresors und die zu schützenden virtuellen Computer müssen sich an verschiedenen Azure-Standorten befinden.The resource group of the Recovery services vault, and the virtual machines being protected, must be in different Azure locations.
  • Der Recovery Services-Tresor und die Ressourcengruppe, der er angehört, können sich am gleichen Azure-Standort befinden.The Recovery services vault, and the resource group to which it belongs, can be in the same Azure location.

In dem Beispiel in diesem Artikel befindet sich der zu schützende virtuelle Computer in der Region „USA, Osten“.In the example in this article, the virtual machine being protected is in the East US region. Die für die Notfallwiederherstellung ausgewählte Wiederherstellungsregion ist die Region „USA, Westen 2“.The recovery region selected for disaster recovery is the West US 2 region. Der Recovery Services-Tresor und die Ressourcengruppe des Tresors befinden sich beide in der Wiederherstellungsregion (USA, Westen 2).The recovery services vault, and the resource group of the vault, are both in the recovery region (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

Erstellen Sie einen Recovery Services-Tresor.Create a Recovery services vault. In dem folgenden Beispiel wird ein Recovery Services-Tresor mit dem Namen a2aDemoRecoveryVault in der Region „USA, Westen 2“ erstellt.In the example below a Recovery Services vault named a2aDemoRecoveryVault is created in the West US 2 region.

#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

Festlegen des TresorkontextsSet the vault context

Legen Sie den Tresorkontext zur Verwendung in der PowerShell-Sitzung fest.Set the vault context for use in the PowerShell session. Nach dem Festlegen werden nachfolgende Azure Site Recovery-Vorgänge in der PowerShell-Sitzung im Kontext des ausgewählten Tresors ausgeführt.Once set, subsequent Azure Site Recovery operations in the PowerShell session are performed in the context of the selected vault.

#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 eine Migration von Azure zu Azure können Sie den Tresorkontext auf den neu erstellten Tresor festlegen:For an Azure-to-Azure migration, you can set the vault context to the newly created vault:

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

Vorbereiten des Tresors für die Replikation virtueller Azure-ComputerPrepare the vault to start replicating Azure virtual machines

Erstellen eines Site Recovery-Fabricobjekts zur Darstellung der primären Region (Quellregion)Create a Site Recovery fabric object to represent the primary (source) region

Das Fabricobjekt im Tresor stellt eine Azure-Region dar.The fabric object in the vault represents an Azure region. Das primäre Fabricobjekt wird zur Darstellung der Azure-Region erstellt, der die im Tresor zu schützenden virtuellen Computer angehören.The primary fabric object is created to represent the Azure region that virtual machines being protected to the vault belong to. In dem Beispiel in diesem Artikel befindet sich der zu schützende virtuelle Computer in der Region „USA, Osten“.In the example in this article, the virtual machine being protected is in the East US region.

  • Pro Region kann nur ein Fabricobjekt erstellt werden.Only one fabric object can be created per region.
  • Wenn Sie zuvor im Azure-Portal die Site Recovery-Replikation für einen virtuellen Computer aktiviert haben, erstellt Site Recovery automatisch ein Fabricobjekt.If you've previously enabled Site Recovery replication for a VM in the Azure portal, Site Recovery creates a fabric object automatically. Ist für eine Region bereits ein Fabricobjekt vorhanden, können Sie kein neues erstellen.If a fabric object exists for a region, you can't create a new one.

Bevor Sie beginnen, beachten Sie Folgendes: Azure Site Recovery-Vorgänge werden asynchron ausgeführt.Before you start, note that Site Recovery operations are executed asynchronously. Wenn Sie einen Vorgang einleiten, wird ein Azure Site Recovery-Auftrag übermittelt und ein Auftragsverfolgungsobjekt zurückgegeben.When you initiate an operation, an Azure Site Recovery job is submitted and a job tracking object is returned. Verwenden Sie das Auftragsverfolgungsobjekt, um den aktuellen Status des Auftrags (Get-AzRecoveryServicesAsrJob) abzurufen und den Status des Vorgangs zu überwachen.Use the job tracking object to get the latest status for the job (Get-AzRecoveryServicesAsrJob), and to monitor the status of the operation.

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

Wenn virtuelle Computer aus mehreren Azure-Regionen im gleichen Tresor geschützt werden sollen, erstellen Sie ein Fabricobjekt für jede Azure-Quellregion.If virtual machines from multiple Azure regions are being protected to the same vault, create one fabric object for each source Azure region.

Erstellen eines Site Recovery-Fabricobjekts zur Darstellung der WiederherstellungsregionCreate a Site Recovery fabric object to represent the recovery region

Dieses Fabricobjekt stellt den Azure-Standort für die Wiederherstellung dar.The recovery fabric object represents the recovery Azure location. Virtuelle Computer werden in der durch das Wiederherstellungsfabric dargestellten Wiederherstellungsregion repliziert und (im Falle eines Failovers) wiederhergestellt.Virtual machines will be replicated to and recovered to (in the event of a failover) the recovery region represented by the recovery fabric. Die in diesem Beispiel verwendete Azure-Wiederherstellungsregion ist „USA, Westen 2“.The recovery Azure region used in this example is 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"

Erstellen eines Site Recovery-Schutzcontainers im primären FabricCreate a Site Recovery protection container in the primary fabric

Der Schutzcontainer wird zum Gruppieren replizierter Elemente innerhalb eines Fabrics verwendet.The protection container is a container used to group replicated items within a fabric.

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

Erstellen eines Site Recovery-Schutzcontainers im WiederherstellungsfabricCreate a Site Recovery protection container in the recovery fabric

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

Erstellen einer ReplikationsrichtlinieCreate a replication policy

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

Erstellen einer Schutzcontainerzuordnung zwischen dem primären Schutzcontainer und dem Schutzcontainer für die WiederherstellungCreate a protection container mapping between the primary and recovery protection container

Eine Schutzcontainerzuordnung ordnet den primären Schutzcontainer einem Schutzcontainer für die Wiederherstellung und einer Replikationsrichtlinie zu.A protection container mapping maps the primary protection container with a recovery protection container and a replication policy. Erstellen Sie eine Zuordnung für jede Replikationsrichtlinie, die Sie zum Replizieren virtueller Computer zwischen den beiden Schutzcontainern verwenden.Create one mapping for each replication policy that you'll use to replicate virtual machines between a protection container pair.

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

Erstellen einer Schutzcontainerzuordnung für Failbacks (umgekehrte Replikation nach einem Failover)Create a protection container mapping for failback (reverse replication after a failover)

Wenn ein virtueller Computer nach dem Failover wieder in die ursprüngliche Azure-Region zurückgeführt werden kann, führen Sie ein Failback aus.After a failover, when you're ready to bring the failed over virtual machine back to the original Azure region, you failback. Bei einem Failback wird eine umgekehrte Replikation des virtuellen Computers, für den ein Failover erfolgte, aus der Failoverregion in die ursprüngliche Region ausgeführt.To failback, the failed over virtual machine is reverse replicated from the failed over region to the original region. Bei einer umgekehrten Replikation werden die Rollen der ursprünglichen Region und der Wiederherstellungsregion getauscht.For reverse replication the roles of the original region and the recovery region switch. Die ursprüngliche Region wird nun zur neuen Wiederherstellungsregion, und die bisherige Wiederherstellungsregion wird nun zur primären Region.The original region now becomes the new recovery region, and what was originally the recovery region now becomes the primary region. Die Schutzcontainerzuordnung für eine umgekehrte Replikation entspricht den getauschten Rollen der ursprünglichen Region und der Wiederherstellungsregion.The protection container mapping for reverse replication represents the switched roles of the original and recovery regions.

#Create Protection container mapping (for failback) 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

Erstellen von Cachespeicherkonten und ZielspeicherkontenCreate cache storage account(s) and target storage account(s)

Ein Cachespeicherkonto ist ein Standard-Speicherkonto in derselben Azure-Region wie der zu replizierende virtuelle Computer.A cache storage account is a standard storage account in the same Azure region as the virtual machine being replicated. Das Cachespeicherkonto wird zum vorübergehenden Speichern von Replikationsänderungen verwendet, bevor die Änderungen in die Azure-Wiederherstellungsregion verschoben werden.The cache storage account is used to hold replication changes temporarily, before the changes are moved to the recovery Azure region. Sie können (müssen aber nicht) unterschiedliche Cachespeicherkonten für verschiedene Datenträger eines virtuellen Computers festlegen.You can choose to (but need not) specify different cache storage accounts for the different disks of a virtual machine.

#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

Bei virtuellen Computern, die keine verwalteten Datenträger verwenden, ist das Zielspeicherkonto das Speicherkonto in der Wiederherstellungsregion, in der Datenträger des virtuellen Computers repliziert werden.For virtual machines not using managed disks, the target storage account is the storage account(s) in the recovery region to which disks of the virtual machine are replicated. Das Zielspeicherkonto kann entweder ein Standard-Speicherkonto oder ein Premium-Speicherkonto sein.The target storage account can be either a standard storage account or a premium storage account. Wählen Sie die Art des erforderlichen Speicherkontos auf Grundlage der Datenänderungsrate (E/A-Schreibrate) für die Datenträger und der von Azure Site Recovery unterstützten Änderungsgrenzwerte für den Speichertyp aus.Select the kind of storage account required based on the data change rate (IO write rate) for the disks and the Azure Site Recovery supported churn limits for the storage type.

#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

Erstellen von NetzwerkzuordnungenCreate network mappings

Eine Netzwerkzuordnung ordnet virtuelle Netzwerke in der primären Region virtuellen Netzwerken in der Wiederherstellungsregion zu.A network mapping maps virtual networks in the primary region to virtual networks in the recovery region. Die Netzwerkzuordnung gibt das virtuelle Azure-Netzwerk in der Wiederherstellungsregion an, in das ein Failover eines virtuellen Computers im primären virtuellen Netzwerk ausgeführt werden soll.The network mapping specifies the Azure virtual network in the recovery region, that a virtual machine in the primary virtual network should failover to. Ein virtuelles Azure-Netzwerk kann nur einem einzelnen virtuellen Azure-Netzwerk in einer Wiederherstellungsregion zugeordnet werden.One Azure virtual network can be mapped to only a single Azure virtual network in a recovery region.

  • Erstellen eines virtuellen Azure-Netzwerks in der Wiederherstellungsregion für ein Failover:Create an Azure virtual network in the recovery region to failover to:

      #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
    
  • Abrufen des primären virtuellen Netzwerks (VNET, mit dem der virtuelle Computer verbunden ist):Retrieve the primary virtual network (the VNet that the virtual machine is connected to):

      #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("\","/")
    
  • Erstellen einer Netzwerkzuordnung zwischen dem primären virtuellen Netzwerk und dem virtuellen Wiederherstellungsnetzwerk:Create network mapping between the primary virtual network and the recovery virtual network:

      #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
    
  • Erstellen einer Netzwerkzuordnung für die umgekehrte Richtung (Failback):Create network mapping for the reverse direction (failback):

    #Create an ASR network mapping for failback 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
    

Replizieren eines virtuellen Azure-ComputersReplicate Azure virtual machine

Replizieren Sie den virtuellen Azure-Computer mit verwalteten Datenträgern.Replicate the Azure virtual machine with managed disks.

#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 $CacheStorageAccount.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

Replizieren Sie den virtuellen Azure-Computer mit nicht verwalteten Datenträgern.Replicate the Azure virtual machine with unmanaged disks.

#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

Sobald der Replikationsvorgang erfolgreich gestartet wurde, werden Daten des virtuellen Computers in die Wiederherstellungsregion repliziert.Once the start replication operation succeeds, virtual machine data is replicated to the recovery region.

Zu Beginn des Replikationsprozesses wird zunächst durch Seeding eine Kopie der zu replizierenden Datenträger des virtuellen Computers in die Wiederherstellungsregion übernommen.The replication process starts by initially seeding a copy of the replicating disks of the virtual machine in the recovery region. Diese Phase wird als erste Replikationsphase bezeichnet.This phase is called the initial replication phase.

Sobald die erste Replikation abgeschlossen ist, wird in die Phase der differenziellen Synchronisierung gewechselt.Once initial replication completes, replication moves to the differential synchronization phase. An diesem Punkt ist der virtuelle Computer geschützt, und es kann ein Testfailover ausgeführt werden.At this point, the virtual machine is protected and a test failover operation can be performed on it. Nach Abschluss der ersten Replikation wechselt der Replikationsstatus des replizierten Elements, das den virtuellen Computer darstellt, in den Zustand Geschützt.The replication state of the replicated item representing the virtual machine goes to the Protected state after initial replication completes.

Überwachen Sie den Replikationsstatus und die Replikationsintegrität für den virtuellen Computer, indem Sie Details des entsprechenden replikationsgeschützten Elements abrufen.Monitor the replication state and replication health for the virtual machine by getting details of the replication protected item corresponding to it.

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

Ausführen eines Testfailovers, Überprüfen und Bereinigen des TestfailoversPerform a test failover, validate, and cleanup test failover

Sobald die Replikation für den virtuellen Computer den Status „Geschützt“ erreicht hat, kann ein Testfailover für den virtuellen Computer (für das replikationsgeschützte Element des virtuellen Computers) ausgeführt werden.Once replication for the virtual machine has reached a protected state, a test failover operation can be performed on the virtual machine (on the replication protected item of the virtual machine).

#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

Führen Sie ein Testfailover aus.Perform test failover.

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

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

Warten Sie, bis das Testfailover abgeschlossen wurde.Wait for the test failover operation to complete.

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

Sobald das Testfailover erfolgreich angeschlossen wurde, können Sie eine Verbindung mit dem virtuellen Testfailover-Computer herstellen und das Testfailover überprüfen.Once the test failover job completes successfully, you can connect to the test failed over virtual machine, and validate the test failover.

Nachdem Sie den Test für den virtuellen Testfailover-Computer abgeschlossen haben, bereinigen Sie die Testkopie, indem Sie den Vorgang zum Bereinigen des Testfailovers starten.Once testing is complete on the test failed over virtual machine, clean up the test copy by starting the cleanup test failover operation. Dieser Vorgang löscht die Testkopie des virtuellen Computers, die vom Testfailover erstellt wurde.This operation deletes the test copy of the virtual machine that was created by the test failover.

$Job_TFOCleanup = Start-AzRecoveryServicesAsrTestFailoverCleanupJob -ReplicationProtectedItem $ReplicationProtectedItem

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

Failover zu AzureFailover to Azure

Führen Sie ein Failover des virtuellen Computers auf einem bestimmten Wiederherstellungspunkt aus.Failover the virtual machine to a specific recovery point.

$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 failover 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

Sobald das Failover erfolgreich ausgeführt wurde, können Sie ein Commit für das Failover ausführen.Once failed over successfully, you can commit the failover operation.

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

Erneuter Schutz und Failback auf die QuellregionReprotect and failback to source region

Wenn Sie nach einem Failover zur ursprünglichen Region zurückkehren möchten, starten Sie eine umgekehrte Replikation für das replikationsgeschützte Element mit dem Cmdlet Update-AzRecoveryServicesAsrProtectionDirection.After a failover, when you're ready to go back to the original region, start reverse replication for the replication protected item using the 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 accountin West US and the source region VM resource group
Update-AzRecoveryServicesAsrProtectionDirection -ReplicationProtectedItem $ReplicationProtectedItem -AzureToAzure
-ProtectionContainerMapping $RecoveryProtContainer -LogStorageAccountId $WestUSCacheStorageAccount.Id -RecoveryResourceGroupID $sourceVMResourcegroup.Id

Nachdem der erneute Schutz abgeschlossen ist, können Sie ein Failover in umgekehrter Richtung (USA, Westen nach USA, Osten) und ein Failback auf die Quellregion initiieren.Once reprotection is complete, you can initiate failover in reverse direction (West US to East US) and failback to source region.

Deaktivieren der ReplikationDisable replication

Sie können die Replikation mithilfe des Cmdlets Remove-AzRecoveryServicesAsrReplicationProtectedItem deaktivieren.You can disable replication by using the Remove-AzRecoveryServicesAsrReplicationProtectedItem cmdlet.

Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem $ReplicatedItem

Nächste SchritteNext steps

In der Azure Site Recovery-PowerShell-Referenz erfahren Sie, wie Sie andere Aufgaben wie das Erstellen von Wiederherstellungsplänen und das Testen des Failovers von Wiederherstellungsplänen mithilfe von PowerShell ausführen können.View the Azure Site Recovery PowerShell reference to learn how you can perform other tasks such as creating Recovery Plans and testing failover of Recovery plans through PowerShell.