إعداد الإصلاح بعد الكارثة لأجهزة Azure الظاهرية باستخدام Azure PowerShell

ستتعرف في هذه المقالة على كيفية إعداد الإصلاح بعد كارثة واختبار تعافي أجهزة Azure الظاهرية باستخدام Azure PowerShell.

‏‫ستتعلم كيفية:

  • أنشئ مخزن خدمات الاسترداد.
  • تعيين سياق المخزن لجلسة PowerShell.
  • قم بإعداد المخزن لبدء نسخ أجهزة Azure الظاهرية.
  • إنشاء تعيينات الشبكة.
  • قم بإنشاء حسابات تخزين لنسخ الأجهزة الظاهرية إليها.
  • نسخ أجهزة Azure الظاهرية إلى منطقة استرداد للإصلاح بعد كارثة.
  • قم بإجراء اختبار تجاوز الفشل والتحقق من صحته وتنظيف اختبار تجاوز الفشل.
  • فشل الوصول إلى منطقة الاسترداد.

إشعار

قد لا يتيح Azure PowerShell جميع إمكانات السيناريو التي يوفرها المدخل. بعض إمكانات السيناريو التي لا يتوفر لها دعم من Azure PowerShell، هي:

  • القدرة على تحديد جميع الأقراص الموجودة في الجهاز الظاهري التي يجب نسخها دون الحاجة إلى تحديد كل قرص من أقراص الجهاز الظاهري بشكل صريح.

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. راجع تثبيت Azure PowerShell للبدء. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

المتطلبات الأساسية

قبل البدء:

تسجيل الدخول إلى اشتراك Microsoft Azure الخاص بك

سجل الدخول إلى اشتراك Azure باستخدام Connect-AzAccount cmdlet.

Connect-AzAccount

حدد اشتراك Azure الخاص بك. Get-AzSubscription استخدم cmdlet للحصول على قائمة اشتراكات Azure التي يمكنك الوصول إليها. حدد اشتراك Azure للعمل معه باستخدام cmdlet Set-AzContext.

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

الحصول على تفاصيل الأجهزة الظاهرية لإجراء نسخ متماثل لها

في هذه المقالة، يتم إجراء نسخ متماثل لجهاز ظاهري في منطقة شرق الولايات المتحدة واسترداده في منطقة غرب الولايات المتحدة 2. يحتوي الجهاز الظاهري الذي يتم عمل نسخة متماثلة له على قرص نظام تشغيل وقرص بيانات واحد. اسم الجهاز الظاهري المستخدم في المثال هو 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}

احصل على تفاصيل القرص لأقراص الجهاز الظاهري. ستستخدم تفاصيل القرص لاحقا عند بدء النسخ المتماثل للجهاز الظاهري.

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

أنشئ مخزن خدمات الاسترداد

إنشاء مجموعة موارد لإنشاء مخزن خدمات الاسترداد.

هام

  • يجب توزيع مخزن خدمات الاسترداد والأجهزة الظاهرية المحمية في مواقع Azure مختلفة.
  • يجب توزيع مخزن خدمات الاسترداد والأجهزة الظاهرية المحمية في مواقع Azure مختلفة.
  • يمكن أن يكون مخزن خدمات الاسترداد، ومجموعة الموارد التي ينتمي إليها، في نفس موقع Azure.

يوضح المثال الوارد في هذه المقالة وجود الجهاز الظاهري المحمي في منطقة شرق الولايات المتحدة. منطقة التعافي المختارة للإصلاح بعد كارثة هي منطقة غرب الولايات المتحدة 2. يقع كل من مخزن خدمات الاسترداد ومجموعة موارد المخزن في منطقة الاسترداد غرب الولايات المتحدة 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

إنشاء مخزن خدمات الاسترداد. في هذا المثال، يتم إنشاء خازنة خدمات الاسترداد باسم a2aDemoRecoveryVault في منطقة غرب الولايات المتحدة 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

تعيين سياق الخزنة

تعيين سياق الخزنة لجلسة PowerShell. بمجرد التعيين، تُنفذ عمليات Azure Site Recovery اللاحقة في جلسة PowerShell في سياق الخزنة المحددة.

#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-إلى Azure، يمكنك تعيين سياق الخزنة إلى خزنة منشئة حديثا:

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

قم بإعداد الخزنة لبدء النسخ المتماثل لأجهزة Azure الظاهرية

إنشاء عنصر fabric لاسترداد الموقع لتمثيل المنطقة الأساسية (المصدر)

يمثل عنصر الموقع في المخزن منطقة Azure. يتم إنشاء عنصر الموقع الأساسي لتمثيل منطقة Azure التي تنتمي إليها الأجهزة الظاهرية المحمية في الخازنة. يوضح المثال الوارد في هذه المقالة وجود الجهاز الظاهري المحمي في منطقة شرق الولايات المتحدة.

  • يمكن إنشاء عنصر fabric واحد فقط لكل منطقة.
  • إذا قمت مسبقا بتمكين النسخ المتماثل لاسترداد الموقع لجهاز ظاهري في مدخل Azure، فسيقوم استرداد الموقع بإنشاء عنصر fabric تلقائيا. في حالة وجود عنصر fabric لمنطقة، لا يمكنك إنشاء عنصر جديد.

قبل البدء، ينبغي معرفة أن عمليات استرداد الموقع تتم بشكل غير متزامن. عند بدء عملية، تُرسل مهمة Azure Site Recovery وتُرجع عنصر تعقب المهمة. استخدم عنصر تعقب المهمة للحصول على أحدث حالة للمهمة (Get-AzRecoveryServicesAsrJob)، ولمراقبة حالة العملية.

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

إذا كانت الأجهزة الظاهرية من مناطق Azure متعددة محمية إلى نفس المخزن، فقم بإنشاء عنصر fabric واحد لكل منطقة Azure مصدر.

إنشاء عنصر fabric لاسترداد الموقع لتمثيل منطقة الاسترداد

يمثل عنصر استرداد fabric موقع Azure للاسترداد. إذا كان هناك تجاوز فشل، يتم إجراء نسخ متماثل للأجهزة الظاهرية واستردادها إلى منطقة الاسترداد التي يمثلها استرداد fabric. منطقة استرداد Azure المستخدمة في هذا المثال هي منطقة غرب الولايات المتحدة الأمريكية 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"

إنشاء حاوية حماية استرداد الموقع في fabric الأساسي

حاوية الحماية هي حاوية تستخدم لتجميع العناصر المتماثلة داخل 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"

إنشاء حاوية حماية استرداد الموقع في 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"

إنشاء fabric والحاوية عند تمكين النسخ المتماثل من منطقة إلى أخرى

عند تمكين النسخ المتماثل من منطقة إلى أخرى، سيتم إنشاء fabric واحد فقط. ولكن سيكون هناك حاويتان. بفرض أن المنطقة المعنية هي أوروبا الغربية، استخدم الأوامر التالية للحصول على الحاويات الأساسية وحاويات الحماية -

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

إنشاء سياسة نسخ متماثل.

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

إنشاء تعيين حاوية حماية بين الحاوية الأساسية وحاوية الحماية

يقوم تعيين حاوية الحماية بتعيين حاوية الحماية الأساسية باستخدام حاوية حماية الاسترداد ونهج النسخ المتماثل. قم بإنشاء تعيين واحد لكل نهج نسخ متماثل ستستخدمه لنسخ الأجهزة الظاهرية بين زوج حاوية حماية.

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

إنشاء تعيين حاوية الحماية عند تمكين النسخ المتماثل من منطقة إلى أخرى

عند تمكين النسخ المتماثل من منطقة لأخرى، استخدم الأمر التالي لإنشاء تعيين حاوية حماية. بفرض أن المنطقة المعنية هي غرب أوروبا، فإن الأمر سيكون -

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

إنشاء تعيين حاوية حماية لإرجاع الموارد (النسخ المتماثل العكسي بعد تجاوز الفشل)

بعد تجاوز الفشل، عندما تكون مستعدا لإعادة الجهاز الظاهري الفاشل إلى منطقة Azure الأصلية، فأنت تقوم بعملية إرجاع للمورد. لإرجاع المورد، يجرى نسخ عكسي متماثل للجهاز الظاهري من منطقة الفشل إلى المنطقة الأصلية. بالنسبة للنسخ العكسي المتماثل، تتبادل الأدوار بين المنطقة الأصلية ومنطقة الاسترداد. فتصبح المنطقة الأصلية الآن منطقة استرداد جديدة، ومنطقة الاسترداد سابقاً تصبح الآن المنطقة الأساسية. يمثل تعيين حاوية الحماية للنسخ العكسي المتماثل تبادل الأدوار بين المناطق الأصلية ومناطق الاسترداد.

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

إنشاء حساب تخزين مؤقت وحساب تخزين مستهدف

حساب التخزين المؤقت هو حساب تخزين قياسي في نفس منطقة Azure مثل الجهاز الظاهري الذي يحدث له نسخ متماثل. يستخدم حساب التخزين المؤقت للاحتفاظ بتغييرات النسخ المتماثل مؤقتا، قبل نقل التغييرات إلى منطقة Azure للاسترداد. يتوفر دعم خسارة عالية أيضا في Azure Site Recovery للحصول على حدود خسارة أعلى. لاستخدام هذه الميزة، يرجى إنشاء نوع Premium Block Blob من حسابات التخزين ثم استخدامه كحساب تخزين ذاكرة التخزين المؤقت. بالرغم من عدم الضرورة، يمكنك اختيار تحديد حسابات تخزين مؤقت مختلفة لكل أقراص الجهاز الظاهري المختلفة. إذا كنت تستخدم حسابات تخزين ذاكرة تخزين مؤقت مختلفة، فتأكد من أنها من نفس النوع (الكائنات الثنائية كبيرة الحجم القياسية أو المميزة للكتلة). لمزيد من المعلومات، راجع Azure VM Disaster Recovery - High Churn Support.

#Create Cache storage account for replication logs in the primary region
$EastUSCacheStorageAccount = New-AzStorageAccount -Name "a2acachestorage" -ResourceGroupName "A2AdemoRG" -Location 'East US' -SkuName Standard_LRS -Kind Storage

بالنسبة للأجهزة الظاهرية التي لا تستخدم الأقراص المدارة، يكون حساب التخزين الهدف هو حساب التخزين في منطقة الاسترداد التي يُنسخ لها أقراص الجهاز الظاهري. يمكن أن يكون حساب التخزين الهدف إما حساب تخزين قياسي أو حساب تخزين متميز. حدد نوع حساب التخزين المطلوب حسب معدل تغيير البيانات (معدل كتابة IO) للأقراص وحدود التجميع المدعومة من Azure Site Recovery لنوع التخزين.

#Create Target storage account in the recovery region. In this case a Standard Storage account
$WestUSTargetStorageAccount = New-AzStorageAccount -Name "a2atargetstorage" -ResourceGroupName "a2ademorecoveryrg" -Location 'West US 2' -SkuName Standard_LRS -Kind Storage

إنشاء تعيينات الشبكة

يقوم تعيين الشبكة بتعيين الشبكات الظاهرية في المنطقة الأساسية إلى الشبكات الظاهرية في منطقة الاسترداد. يحدد تعيين الشبكة شبكة Azure الظاهرية في منطقة الاسترداد، التي يجب للجهاز الظاهري في الشبكة الظاهرية الأساسية أن يفشل فيها. يمكن تعيين شبكة واحدة ظاهرية Azure إلى شبكة واحدة أخرى Azure فقط في منطقة استرداد.

  • قم بإنشاء شبكة Azure ظاهرية في منطقة الاسترداد لتفشل في:

      #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
    
  • استرداد الشبكة الظاهرية الأساسية. VNet الذي يتصل به الجهاز الظاهري:

      #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("\","/")
    
  • إنشاء تعيين شبكة بين الشبكة الظاهرية الأساسية والشبكة الظاهرية للاسترداد:

      #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
    
  • إنشاء تعيين شبكة للاتجاه العكسي (إرجاع الموارد):

    #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 الظاهري

انسخ جهاز Azure الظاهري باستخدام أقراص مُدارة.

#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

انسخ جهاز Azure الظاهري باستخدام أقراص غير مُدارة.

#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

بعد نجاح عملية بدء النسخ المتماثل، تُنسخ بيانات الجهاز الظاهري إلى منطقة الاسترداد.

تبدأ عملية النسخ المتماثل مبدئيًا بنسخ نسخة من أقراص النسخ المتماثل للجهاز الظاهري في منطقة الاستعادة. وتُسمى هذه المرحلة مرحلة النسخ المتماثل الأولي.

بعد اكتمال النسخ المتماثل الأولي، ينتقل النسخ المتماثل إلى مرحلة المزامنة التفاضلية. في هذه المرحلة، يكون الجهاز الظاهري مشمولاً بالحماية، ويمكنك إجراء عملية تجاوز فشل الاختبار عليه. بعدها تصبح حالة النسخ المتماثل للعنصر المتماثل الذي يمثل الجهاز الظاهري حالة محمية بعد انتهاء النسخ المتماثل الأولي.

راقب حالة النسخ المتماثل وصحة النسخ المتماثل للجهاز الظاهري من خلال الحصول على تفاصيل العنصر المحمي من النسخ المتماثل المتوافق معه.

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

قم بإجراء اختبار تجاوز الفشل والتحقق من صحته وتنظيف اختبار تجاوز الفشل

بعد وصول النسخ المتماثل للجهاز الظاهري إلى حالة محمية، يمكن إجراء عملية تجاوز فشل اختبار على الجهاز الظاهري (على العنصر المحمي بالنسخ المتماثل للجهاز الظاهري).

#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

قم بإجراء اختبار تجاوز الفشل.

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

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

انتظر اكتمال عملية تجاوز الفشل الاختبار.

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

بعد نجاح عملية تجاوز فشل الاختبار، يمكنك الاتصال بالاختبار الفاشل عبر الجهاز الظاهري، والتحقق من صحة تجاوز فشل الاختبار.

بمجرد التحقق من صحة تجاوز فشل الاختبار عبر الجهاز الظاهري، قم بتنظيف نسخة الاختبار عن طريق بدء عملية تنظيف تجاوز فشل الاختبار. تقوم هذه العملية بحذف نسخة الاختبار من الجهاز الظاهري الذي تم إنشاؤه بواسطة تجاوز فشل الاختبار.

$Job_TFOCleanup = Start-AzRecoveryServicesAsrTestFailoverCleanupJob -ReplicationProtectedItem $ReplicationProtectedItem

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

تجاوز الفشل إلى Azure

فشل عبر الجهاز الظاهري إلى نقطة استرداد معينة.

$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

عند نجاح مهمة تجاوز الفشل، يمكنك تنفيذ عملية تجاوز الفشل.

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

إعادة الحماية وإرجاع الموارد مرة أخرى إلى منطقة المصدر

بعد تجاوز الفشل، عندما تكون مستعدا للعودة إلى المنطقة الأصلية، ابدأ النسخ المتماثل العكسي للعنصر المحمي بالنسخ المتماثل باستخدام cmdlet Update-AzRecoveryServicesAsrProtectionDirection.

#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

بعد اكتمال إعادة الحماية، يمكنك تجاوز الفشل في الاتجاه المعاكس، غرب الولايات المتحدة إلى شرق الولايات المتحدة، وإرجاع الموارد مرة أخرى في منطقة المصدر.

تعطيل النسخ المتماثل

يمكنك تعطيل النسخ المتماثل باستخدام cmdlet Remove-AzRecoveryServicesAsrReplicationProtectedItem.

Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem $ReplicationProtectedItem

الخطوات التالية

قم بعرض مرجع PowerShell لاسترداد موقع Azure لمعرفة كيفية القيام بمهام أخرى مثل إنشاء خطط الاسترداد واختبار تجاوز فشل خطط الاسترداد باستخدام PowerShell.