PowerShell ve Azure Resource Manager kullanarak Hyper-V VM'leri için Azure'a olağanüstü durum kurtarmayı ayarlama

Azure Site Recovery , Azure sanal makinelerinin (VM' ler) ve şirket içi VM'lerinin ve fiziksel sunucuların çoğaltmasını, yük devretmesini ve kurtarmasını düzenleyerek iş sürekliliği ve olağanüstü durum kurtarma (BCDR) stratejinize katkıda bulunur.

Bu makalede, Hyper-V VM'lerini Azure'a çoğaltmak için Azure Resource Manager ile birlikte Windows PowerShell'in nasıl kullanılacağı açıklanmaktadır. Bu makalede kullanılan örnekte, Bir Hyper-V konağı üzerinde çalışan tek bir VM'yi Azure'a çoğaltma gösterilmektedir.

Dekont

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Azure PowerShell

Azure PowerShell, Windows PowerShell kullanarak Azure'ı yönetmek için cmdlet'ler sağlar. Azure Resource Manager için Azure PowerShell ile kullanılabilen Site Recovery PowerShell cmdlet'leri, Azure'daki sunucularınızı korumanıza ve kurtarmanıza yardımcı olur.

Bu makaleyi kullanmak için PowerShell uzmanı olmanız gerekmez, ancak modüller, cmdlet'ler ve oturumlar gibi temel kavramları anlamanız gerekir. Daha fazla bilgi için bkz . PowerShell Belgeleri ve Azure PowerShell'i Azure Resource Manager ile Kullanma.

Dekont

Bulut Çözümü Sağlayıcısı (CSP) programındaki Microsoft iş ortakları, müşteri sunucularının korumasını ilgili CSP aboneliklerine (kiracı abonelikleri) yapılandırabilir ve yönetebilir.

Başlamadan önce

Şu önkoşullara sahip olduğunuzdan emin olun:

Ayrıca, bu makalede açıklanan özel örnekte aşağıdaki önkoşullar vardır:

  • Bir veya daha fazla VM içeren Windows Server 2012 R2 veya Microsoft Hyper-V Server 2012 R2 çalıştıran bir Hyper-V konağı. Hyper-V sunucuları doğrudan veya bir ara sunucu aracılığıyla İnternet'e bağlanmalıdır.
  • Çoğaltmak istediğiniz VM'ler bu önkoşullara uygun olmalıdır.

1. Adım: Azure hesabınızda oturum açın

  1. Bir PowerShell konsolu açın ve Azure hesabınızda oturum açmak için bu komutu çalıştırın. Cmdlet bir web sayfası açar ve sizden hesap kimlik bilgilerinizi ister: Connect-AzAccount.

    • Alternatif olarak, Credential parametresini kullanarak hesap kimlik bilgilerinizi cmdlet'ine Connect-AzAccountparametre olarak ekleyebilirsiniz.
    • Kiracı adına çalışan bir CSP iş ortağıysanız, kiracı kimliği veya kiracı birincil etki alanı adını kullanarak müşteriyi kiracı olarak belirtin. Örneğin: Connect-AzAccount -Tenant "fabrikam.com"
  2. Bir hesabın birkaç aboneliği olabileceğinden, kullanmak istediğiniz aboneliği hesapla ilişkilendirin:

    Set-AzContext -Subscription $SubscriptionName
    
  3. Aşağıdaki komutları kullanarak aboneliğinizin Kurtarma Hizmetleri ve Site Recovery için Azure sağlayıcılarını kullanacak şekilde kaydedildiğini doğrulayın:

    Get-AzResourceProvider -ProviderNamespace  Microsoft.RecoveryServices
    
  4. Komut çıkışında RegistrationState değerinin Kayıtlı olarak ayarlandığını ve 2. Adıma geçebileceğinizi doğrulayın. Aksi takdirde, şu komutları çalıştırarak eksik sağlayıcıyı aboneliğinize kaydetmeniz gerekir:

    Register-AzResourceProvider -ProviderNamespace Microsoft.RecoveryServices
    
  5. Aşağıdaki komutları kullanarak Sağlayıcıların başarıyla kaydedildiğini doğrulayın:

    Get-AzResourceProvider -ProviderNamespace  Microsoft.RecoveryServices
    

2. Adım: Kasayı ayarlama

  1. Kasanın oluşturulacağı veya mevcut bir kaynak grubunun kullanılacağı bir Azure Resource Manager kaynak grubu oluşturun. Aşağıdaki gibi yeni bir kaynak grubu oluşturun. değişkeni $ResourceGroupName oluşturmak istediğiniz kaynak grubunun adını içerir ve $Geo değişkeni kaynak grubunun oluşturulacağı Azure bölgesini içerir (örneğin, "Brezilya Güney").

    New-AzResourceGroup -Name $ResourceGroupName -Location $Geo
    
  2. Aboneliğinizdeki kaynak gruplarının listesini almak için cmdlet'ini Get-AzResourceGroup çalıştırın.

  3. Aşağıdaki gibi yeni bir Azure Kurtarma Hizmetleri kasası oluşturun:

    $vault = New-AzRecoveryServicesVault -Name <string> -ResourceGroupName <string> -Location <string>
    

Cmdlet'iyle Get-AzRecoveryServicesVault mevcut kasaların listesini alabilirsiniz.

3. Adım: Kurtarma Hizmetleri kasası bağlamını ayarlama

Kasa bağlamını aşağıdaki gibi ayarlayın:

Set-AzRecoveryServicesAsrVaultContext -Vault $vault

4. Adım: Hyper-V sitesi oluşturma

  1. Aşağıdaki gibi yeni bir Hyper-V sitesi oluşturun:

    $sitename = "MySite"                #Specify site friendly name
    New-AzRecoveryServicesAsrFabric -Type HyperVSite -Name $sitename
    
  2. Bu cmdlet, siteyi oluşturmak için bir Site Recovery işi başlatır ve bir Site Recovery iş nesnesi döndürür. İşin tamamlanmasını bekleyin ve işin başarıyla tamamlandığını doğrulayın.

  3. Get-AzRecoveryServicesAsrJob İş nesnesini almak için cmdlet'ini kullanın ve işin geçerli durumunu denetleyin.

  4. Site için aşağıdaki gibi bir kayıt anahtarı oluşturun ve indirin:

    $SiteIdentifier = Get-AzRecoveryServicesAsrFabric -Name $sitename | Select-Object -ExpandProperty SiteIdentifier
    $path = Get-AzRecoveryServicesVaultSettingsFile -Vault $vault -SiteIdentifier $SiteIdentifier -SiteFriendlyName $sitename
    
  5. İndirilen anahtarı Hyper-V konağına kopyalayın. Hyper-V ana bilgisayarını siteye kaydetmek için anahtarına ihtiyacınız vardır.

5. Adım: Sağlayıcıyı ve aracıyı yükleme

  1. Microsoft'tan Sağlayıcının en son sürümü için yükleyiciyi indirin.

  2. Yükleyiciyi Hyper-V ana bilgisayarında çalıştırın.

  3. Yüklemenin sonunda kayıt adımına geçin.

  4. İstendiğinde, indirilen anahtarı sağlayın ve Hyper-V konağı kaydını tamamlayın.

  5. Hyper-V ana bilgisayarının siteye aşağıdaki gibi kaydedildiğini doğrulayın:

    $server = Get-AzRecoveryServicesAsrFabric -Name $siteName | Get-AzRecoveryServicesAsrServicesProvider -FriendlyName $server-friendlyname
    

Hyper-V çekirdek sunucusu çalıştırıyorsanız kurulum dosyasını indirin ve şu adımları izleyin:

  1. Şu komutu çalıştırarak AzureSiteRecoveryProvider.exe dosyasını yerel dizine ayıklayın:

    AzureSiteRecoveryProvider.exe /x:. /q
    
  2. Şu komutu çalıştırın:

    .\setupdr.exe /i
    

    Sonuçlar %ProgramData%\ASRLogs\DRASetupWizard.log dosyasına kaydedilir.

  3. Şu komutu çalıştırarak sunucuyu kaydedin:

    cd  C:\Program Files\Microsoft Azure Site Recovery Provider\DRConfigurator.exe" /r /Friendlyname "FriendlyName of the Server" /Credentials "path to where the credential file is saved"
    

6. Adım: Çoğaltma ilkesi oluşturma

Başlamadan önce, belirtilen depolama hesabının kasayla aynı Azure bölgesinde olması ve coğrafi çoğaltmanın etkinleştirilmiş olması gerekir.

  1. Aşağıdaki gibi bir çoğaltma ilkesi oluşturun:

    $ReplicationFrequencyInSeconds = "300";        #options are 30,300,900
    $PolicyName = “replicapolicy”
    $Recoverypoints = 6                    #specify the number of recovery points
    $storageaccountID = Get-AzStorageAccount -Name "mystorea" -ResourceGroupName "MyRG" | Select-Object -ExpandProperty Id
    
    $PolicyResult = New-AzRecoveryServicesAsrPolicy -Name $PolicyName -ReplicationProvider “HyperVReplicaAzure” -ReplicationFrequencyInSeconds $ReplicationFrequencyInSeconds -NumberOfRecoveryPointsToRetain $Recoverypoints -ApplicationConsistentSnapshotFrequencyInHours 1 -RecoveryAzureStorageAccountId $storageaccountID
    
  2. Çoğaltma ilkesi oluşturma işleminin başarılı olduğundan emin olmak için döndürülen işi denetleyin.

  3. Siteye karşılık gelen koruma kapsayıcısını aşağıdaki gibi alın:

    $protectionContainer = Get-AzRecoveryServicesAsrProtectionContainer
    
  4. Koruma kapsayıcısını çoğaltma ilkesiyle aşağıdaki gibi ilişkilendirin:

    $Policy = Get-AzRecoveryServicesAsrPolicy -FriendlyName $PolicyName
    $associationJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name $mappingName -Policy $Policy -PrimaryProtectionContainer $protectionContainer[0]
    
  5. İlişkilendirme işinin başarıyla tamamlanmasını bekleyin.

  6. Koruma kapsayıcısı eşlemesini alın.

    $ProtectionContainerMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -ProtectionContainer $protectionContainer
    

7. Adım: VM korumasını etkinleştirme

  1. Korumak istediğiniz VM'ye karşılık gelen korunabilir öğeyi aşağıdaki gibi alın:

    $VMFriendlyName = "Fabrikam-app"          #Name of the VM
    $ProtectableItem = Get-AzRecoveryServicesAsrProtectableItem -ProtectionContainer $protectionContainer -FriendlyName $VMFriendlyName
    
  2. VM'yi koruyun. Korumakta olduğunuz VM'nin bağlı birden fazla diski varsa OSDiskName parametresini kullanarak işletim sistemi diskini belirtin.

    $OSType = "Windows"          # "Windows" or "Linux"
    $DRjob = New-AzRecoveryServicesAsrReplicationProtectedItem -ProtectableItem $VM -Name $VM.Name -ProtectionContainerMapping $ProtectionContainerMapping -RecoveryAzureStorageAccountId $StorageAccountID -OSDiskName $OSDiskNameList[$i] -OS $OSType -RecoveryResourceGroupId $ResourceGroupID
    
  3. İlk çoğaltmadan sonra VM'lerin korumalı duruma ulaşmasını bekleyin. Çoğaltılacak veri miktarı ve Azure'a sağlanan yukarı akış bant genişliği gibi faktörlere bağlı olarak bu işlem biraz zaman alabilir. Korumalı bir durum gerçekleştiğinde, State ve StateDescription işi aşağıdaki gibi güncelleştirilir:

    PS C:\> $DRjob = Get-AzRecoveryServicesAsrJob -Job $DRjob
    
    PS C:\> $DRjob | Select-Object -ExpandProperty State
    Succeeded
    
    PS C:\> $DRjob | Select-Object -ExpandProperty StateDescription
    Completed
    
  4. Kurtarma özelliklerini (VM rol boyutu gibi) ve yük devretmeden sonra VM NIC'nin eklendiği Azure ağını güncelleştirin.

    PS C:\> $nw1 = Get-AzVirtualNetwork -Name "FailoverNw" -ResourceGroupName "MyRG"
    
    PS C:\> $VMFriendlyName = "Fabrikam-App"
    
    PS C:\> $rpi = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $protectionContainer -FriendlyName $VMFriendlyName
    
    PS C:\> $UpdateJob = Set-AzRecoveryServicesAsrReplicationProtectedItem -InputObject $rpi -PrimaryNic $VM.NicDetailsList[0].NicId -RecoveryNetworkId $nw1.Id -RecoveryNicSubnetName $nw1.Subnets[0].Name
    
    PS C:\> $UpdateJob = Get-AzRecoveryServicesAsrJob -Job $UpdateJob
    
    PS C:\> $UpdateJob | Select-Object -ExpandProperty state
    
    PS C:\> Get-AzRecoveryServicesAsrJob -Job $job | Select-Object -ExpandProperty state
    
    Succeeded
    

Dekont

Azure'da CMK özellikli yönetilen disklere çoğaltmak istiyorsanız Az PowerShell 3.3.0'ı kullanarak aşağıdaki adımları uygulayın:

  1. VM özelliklerini güncelleştirerek yönetilen disklere yük devretmeyi etkinleştirme
  2. Get-AzRecoveryServicesAsrReplicationProtectedItem Korumalı öğenin her diski için disk kimliğini getirmek için cmdlet'ini kullanın
  3. Disk kimliğinin disk şifreleme kümesine eşlenmesini içeren cmdlet'ini kullanarak New-Object "System.Collections.Generic.Dictionary``2[System.String,System.String]" bir sözlük nesnesi oluşturun. Bu disk şifreleme kümeleri, hedef bölgede sizin tarafınızdan önceden oluşturulmalıdır.
  4. DiskIdToDiskEncryptionSetMap parametresinde sözlük nesnesini geçirerek cmdlet'ini kullanarak Set-AzRecoveryServicesAsrReplicationProtectedItem VM özelliklerini güncelleştirin.

8. Adım: Yük devretme testi çalıştırma

  1. Yük devretme testlerini aşağıdaki gibi çalıştırın:

    $nw = Get-AzVirtualNetwork -Name "TestFailoverNw" -ResourceGroupName "MyRG" #Specify Azure vnet name and resource group
    
    $rpi = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $protectionContainer -FriendlyName $VMFriendlyName
    
    $TFjob = Start-AzRecoveryServicesAsrTestFailoverJob -ReplicationProtectedItem $VM -Direction PrimaryToRecovery -AzureVMNetworkId $nw.Id
    
  2. Test VM'sinin Azure'da oluşturulduğunu doğrulayın. Azure'da test VM'sini oluşturduktan sonra yük devretme testi işi askıya alınır.

  3. Yük devretme testini temizlemek ve tamamlamak için şunu çalıştırın:

    $TFjob = Start-AzRecoveryServicesAsrTestFailoverCleanupJob -ReplicationProtectedItem $rpi -Comment "TFO done"
    

Sonraki adımlar

Azure Resource Manager PowerShell cmdlet'leri ile Azure Site Recovery hakkında daha fazla bilgi edinin.