Azure-beli virtuális gépek vészhelyreállításának beállítása az Azure PowerShell használatával

Ebben a cikkben megtudhatja, hogyan állíthatja be és tesztelheti az Azure-beli virtuális gépek vészhelyreállítását az Azure PowerShell használatával.

Az alábbiak végrehajtásának módját ismerheti meg:

  • Recovery Services-tároló létrehozása.
  • Állítsa be a PowerShell-munkamenet tárolókörnyezetét.
  • Készítse elő a tárolót az Azure-beli virtuális gépek replikálásának megkezdéséhez.
  • Hálózati leképezések létrehozása.
  • Tárfiókok létrehozása virtuális gépek replikálásához.
  • Azure-beli virtuális gépek replikálása helyreállítási régióba vészhelyreállítás céljából.
  • Feladatátvételi, ellenőrzési és törlési teszt végrehajtása.
  • Feladatátvétel a helyreállítási régióba.

Megjegyzés:

Előfordulhat, hogy a portálon keresztül elérhető forgatókönyvek nem minden képessége érhető el az Azure PowerShellen keresztül. Az Azure PowerShell-lel jelenleg nem támogatott forgatókönyv-képességek némelyike a következő:

  • Megadhatja, hogy a virtuális gép összes lemezét replikálni kell anélkül, hogy explicit módon meg kellene adni a virtuális gép minden lemezét.

Megjegyzés:

We recommend that you use the Azure Az PowerShell module to interact with Azure. See Install Azure PowerShell to get started. To learn how to migrate to the Az PowerShell module, see Migrate Azure PowerShell from AzureRM to Az.

Előfeltételek

Before you start:

Bejelentkezés a Microsoft Azure-előfizetésbe

Jelentkezzen be az Azure-előfizetésbe a Connect-AzAccount parancsmaggal.

Connect-AzAccount

Válassza ki az Azure-előfizetését. Get-AzSubscription A parancsmaggal lekérheti azoknak az Azure-előfizetéseknek a listáját, amelyekhez hozzáféréssel rendelkezik. Válassza ki azt az Azure-előfizetést, amellyel a Set-AzContext parancsmagot használni szeretné.

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

A replikálni kívánt virtuális gép részleteinek lekérése

Ebben a cikkben az USA keleti régiójában lévő virtuális gépet replikáljuk és helyreállítjuk az USA 2. nyugati régiójában. A replikált virtuális gép operációsrendszer-lemezzel és egyetlen adatlemezzel rendelkezik. A példában használt virtuális gép neve a következő 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}

Kérje le a virtuális gép lemezeinek adatait. A lemez részletei később lesznek felhasználva a virtuális gép replikációjának indításakor.

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

Helyreállítási tár létrehozása

Hozzon létre egy erőforráscsoportot, amelyben létre kívánja hozni a Recovery Services-tárolót.

Fontos

  • A Helyreállítási tárnak és a védett virtuális gépeknek különböző Azure-helyeken kell lenniük.
  • A Recovery Services-tároló erőforráscsoportjának és a védett virtuális gépeknek különböző Azure-helyeken kell lenniük.
  • A Recovery Services-tároló és az erőforráscsoport, amelyhez tartozik, ugyanabban az Azure-helyen lehet.

A cikkben szereplő példában a védett virtuális gép az USA keleti régiójában található. A vészhelyreállításhoz kiválasztott helyreállítási régió az USA 2. nyugati régiója. A helyreállítási tár és a tároló erőforráscsoportja egyaránt az USA 2. nyugati régiójában található.

#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

Hozzon létre egy Helyreállítási tárat. Ebben a példában egy Recovery Services-tárolót hozunk a2aDemoRecoveryVault létre az USA 2. nyugati régiójában.

#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

A tároló környezetének beállítása

Állítsa be a tárolókörnyezetet a PowerShell-munkamenetben való használatra. A tárolókörnyezet beállítása után a PowerShell-munkamenetBen az Azure Site Recovery-műveletek a kijelölt tároló kontextusában lesznek végrehajtva.

#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

Azure-ból Azure-ba történő migrálás esetén a tárolókörnyezetet az újonnan létrehozott tárolóra állíthatja be:

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

A tároló előkészítése azure-beli virtuális gépek replikálásának megkezdéséhez

Site Recovery-hálóobjektum létrehozása az elsődleges (forrás)régió megjelenítéséhez

A tárolóban lévő hálóobjektum egy Azure-régiót jelöl. A rendszer az elsődleges hálóobjektumot annak az Azure-régiónak a megjelenítésére hozza létre, amelyhez a tárolóval védett virtuális gépek tartoznak. A cikkben szereplő példában a védett virtuális gép az USA keleti régiójában található.

  • Régiónként csak egy hálóobjektum hozható létre.
  • Ha korábban engedélyezte a Site Recovery replikációját egy virtuális géphez az Azure Portalon, a Site Recovery automatikusan létrehoz egy hálóobjektumot. Ha egy szövetobjektum létezik egy régióhoz, nem hozhat létre újat.

Mielőtt hozzákezd, ismerje meg, hogy a Site Recovery-műveletek aszinkron módon lesznek végrehajtva. Amikor műveletet kezdeményez, a rendszer elküld egy Azure Site Recovery-feladatot, és visszaad egy feladatkövetési objektumot. A feladatkövetési objektummal lekérheti a feladat (Get-AzRecoveryServicesAsrJob) legújabb állapotát, és figyelheti a művelet állapotát.

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

Ha több Azure-régióból származó virtuális gépeket véd ugyanabban a tárolóban, hozzon létre egy hálóobjektumot minden forrás Azure-régióhoz.

Site Recovery fabric objektum létrehozása a helyreállítási régió megjelenítéséhez

A helyreállítási háló objektum a helyreállítási Azure-helyet jelöli. Feladatátvétel esetén a rendszer replikálja és helyreállítja a virtuális gépeket a helyreállítási háló által képviselt helyreállítási régióba. A példában használt helyreállítási Azure-régió az USA 2. nyugati régiója.

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

Site Recovery védelmi tároló létrehozása az elsődleges hálóban

A védelmi tároló egy olyan tároló, amely a replikált elemek hálón belüli csoportosítására szolgál.

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

Site Recovery védelmi tároló létrehozása a helyreállítási hálóban

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

Háló- és tárolólétrehozás zónareplikáció engedélyezésekor

Ha engedélyezi a zóna zónareplikálását, a rendszer csak egy hálót hoz létre. De lesz két tároló. Feltételezve, hogy a régió Nyugat-Európa, az alábbi parancsokkal szerezze be az elsődleges és a védelmi tárolókat -

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

Replikációs házirend létrehozása

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

Védelmi tároló leképezésének létrehozása az elsődleges és a helyreállítási védelmi tároló között

A védelmi tárolók leképezése az elsődleges védelmi tárolót egy helyreállítási védelmi tárolóval és egy replikációs szabályzattal képezi le. Hozzon létre egy leképezést minden olyan replikációs szabályzathoz, amellyel virtuális gépeket replikálhat egy védelmi tárolópár között.

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

Védelmi tárolóleképezés létrehozása zónareplikáció engedélyezésekor

Ha engedélyezi a zóna zónareplikálását, az alábbi paranccsal hozzon létre védelmi tárolóleképezést. Feltételezve, hogy a régió Nyugat-Európa, a parancs a következő lesz:

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

Védelmi tárolóleképezés létrehozása feladat-visszavételhez (feladatátvétel utáni visszareplikálás)

A feladatátvétel után, amikor készen áll a feladatátvételi virtuális gép visszaállítására az eredeti Azure-régióban, feladat-visszavételt hajt végre. A feladat-visszavételhez a feladatátvételi virtuális gép vissza lesz replikálva a feladatátvételi régióból az eredeti régióba. Fordított replikáció esetén az eredeti régió szerepkörei és a helyreállítási régió kapcsolója. Az eredeti régió lesz az új helyreállítási régió, és az eredetileg a helyreállítási régió lett az elsődleges régió. A fordított replikáció védelmi tárolóleképezése az eredeti és a helyreállítási régiók átváltott szerepkörét jelöli.

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

Gyorsítótár-tárfiók és céltárfiók létrehozása

A gyorsítótár-tárfiók egy standard tárfiók ugyanabban az Azure-régióban, mint a replikált virtuális gép. A gyorsítótár tárfiókja a replikációs módosítások ideiglenes tárolására szolgál, mielőtt a módosítások átkerülnek a helyreállítási Azure-régióba. A magas forgalomtámogatás az Azure Site Recoveryben is elérhető a magasabb forgalomkorlátok eléréséhez. A funkció használatához hozzon létre egy prémium szintű blokkblob típusú tárfiókot, majd használja gyorsítótár-tárfiókként. Dönthet úgy, hogy különböző gyorsítótár-tárfiókokat ad meg a virtuális gép különböző lemezeihez, de nem szükséges. Ha különböző gyorsítótár-tárfiókokat használ, győződjön meg arról, hogy azonos típusúak (standard vagy prémium szintű blokkblobok). További információ: Azure-beli virtuális gépek vészhelyreállítása – Magas szintű forgalom támogatása.

#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

A felügyelt lemezeket nem használó virtuális gépek esetében a céltárfiók az a tárfiók a helyreállítási régióban, amelyre a virtuális gép lemezeit replikálja a rendszer. A céltárfiók lehet standard vagy prémium szintű tárfiók. Válassza ki a szükséges tárfiók típusát a lemezek adatváltozási sebessége (IO írási sebessége) és az Azure Site Recovery által támogatott tárolási típus változási korlátai alapján.

#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

Hálózati leképezések létrehozása

A hálózatleképezés leképezi az elsődleges régióban lévő virtuális hálózatokat a helyreállítási régióban lévő virtuális hálózatokra. A hálózatleképezés megadja a helyreállítási régióban lévő Azure-beli virtuális hálózatot, amelybe az elsődleges virtuális hálózaton lévő virtuális gépnek át kell adni a feladatátvételt. Egy Azure-beli virtuális hálózat csak egyetlen Azure-beli virtuális hálózatra képezhető le egy helyreállítási régióban.

  • Hozzon létre egy Azure-beli virtuális hálózatot a helyreállítási régióban a feladatátvételhez:

      #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
    
  • Kérje le az elsődleges virtuális hálózatot. Az a virtuális hálózat, amelyhez a virtuális gép csatlakozik:

      #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("\","/")
    
  • Hálózatleképezés létrehozása az elsődleges virtuális hálózat és a helyreállítási virtuális hálózat között:

      #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
    
  • Hálózatleképezés létrehozása fordított irányhoz (feladat-visszavétel):

    #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
    

Azure-beli virtuális gép replikálása

Replikálja az Azure-beli virtuális gépet felügyelt lemezekkel.

#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

Replikálja az Azure-beli virtuális gépet nem felügyelt lemezekkel.

#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

Miután a replikáció indítása sikeres volt, a rendszer replikálja a virtuálisgép-adatokat a helyreállítási régióba.

A replikációs folyamat először a virtuális gép replikáló lemezeinek másolatának a helyreállítási régióban való üzembe helyezésével kezdődik. Ezt a fázist kezdeti replikációs fázisnak nevezzük.

A kezdeti replikáció befejezése után a replikáció a különbségi szinkronizálási fázisba kerül. Ezen a ponton a virtuális gép védett, és egy feladatátvételi tesztművelet is elvégezhető rajta. A virtuális gépet képviselő replikált elem replikációs állapota a kezdeti replikáció befejezése után a Védett állapotba kerül.

A virtuális gép replikációs állapotának és replikációs állapotának monitorozásához lekérte az annak megfelelő replikációval védett elem részleteit.

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

Feladatátvételi, ellenőrzési és törlési teszt végrehajtása feladatátvételi teszt

Miután a virtuális gép replikációja elérte a védett állapotot, a virtuális gépen (a virtuális gép replikációval védett elemén) elvégezhető a feladatátvételi tesztművelet.

#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

Feladatátvételi teszt végrehajtása.

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

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

Várja meg, amíg a feladatátvételi tesztművelet befejeződik.

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

Miután a feladatátvételi feladat sikeresen befejeződött, csatlakozhat a virtuális gépen meghiúsult teszthez, és ellenőrizheti a feladatátvételi tesztet.

Ha a tesztelés befejeződött a virtuális gépen elvégzett teszten, a feladatátvételi művelet elindításával törölje a tesztpéldányt. Ez a művelet törli a feladatátvételi teszt által létrehozott virtuális gép tesztpéldányát.

$Job_TFOCleanup = Start-AzRecoveryServicesAsrTestFailoverCleanupJob -ReplicationProtectedItem $ReplicationProtectedItem

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

Feladatátvétel az Azure-ba

A virtuális gép feladatátvétele egy adott helyreállítási pontra.

$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

Ha a feladatátvételi feladat sikeres, véglegesítheti a feladatátvételi műveletet.

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

A forrásrégió ismételt védelme és visszavétele

A feladatátvétel után, amikor készen áll arra, hogy visszatérjen az eredeti régióba, indítsa el a replikációval védett elem fordított replikációját a Update-AzRecoveryServicesAsrProtectionDirection parancsmag használatával.

#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

Az újravédés befejezése után a feladatátvétel fordított irányban, az USA nyugati régiójától az USA keleti régiójáig, valamint a forrásrégióba való visszavétel.

A replikálás letiltása

A parancsmaggal letilthatja a Remove-AzRecoveryServicesAsrReplicationProtectedItem replikációt.

Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem $ReplicationProtectedItem

További lépések

Tekintse meg az Azure Site Recovery PowerShell-referenciáját , amelyből megtudhatja, hogyan végezhet más feladatokat, például helyreállítási tervek létrehozását és helyreállítási tervek feladatátvételének tesztelését a PowerShell-lel.