Kurtarma planlarına Azure Otomasyonu runbook’ları ekleme
Bu makalede, Azure Site Recovery kurtarma planlarını genişletmek için Azure Otomasyonu runbook'ları tümleştirme işlemi açıklanır. Normalde el ile yapmanız gereken temel görevleri nasıl otomatikleştireceğinizi ve çok aşamalı bir kurtarma işlemini tek tıklamayla nasıl tamamlayacağınızı göstereceğiz.
Kurtarma planları
Şirket içi makinelerde veya Azure VM'lerinde yük devretme yaparken kurtarma planlarını kullanabilirsiniz. Kurtarma planları, makinelerin yük devretme şeklini ve yük devretme sonrasında nasıl başlatılıp kurtarıldığını tanımlayan sistematik bir kurtarma işlemi tanımlamanıza yardımcı olur.
Büyük uygulamaların kurtarılması karmaşık olabilir. Kurtarma planları, kurtarmanın tutarlı bir şekilde doğru, yinelenebilir ve otomatik olması için sıra uygulanmasına yardımcı olur. Betikleri ve Azure Otomasyonu runbook'ları kullanarak kurtarma planındaki görevleri otomatikleştirebilirsiniz. Tipik örnekler, yük devretmeden sonra Azure VM'sinde ayarları yapılandırmak veya VM'de çalışan bir uygulamayı yeniden yapılandırmak olabilir.
- Kurtarma planları hakkında daha fazla bilgi edinin.
- Azure Otomasyonu runbook'ları hakkında daha fazla bilgi edinin.
Kurtarma planlarındaki runbook'lar
Kurtarma planına bir Azure Otomasyonu hesabı ve runbook'ları eklersiniz. Kurtarma planı çalıştırıldığında runbook çağrılır.
- Otomasyon hesabı herhangi bir Azure bölgesinde olabilir ve Site Recovery kasasıyla aynı abonelikte olmalıdır.
- Runbook, birincil konumdan ikincil konuma yük devretme sırasında veya ikincil konumdan birincil konuma yeniden çalışma sırasında kurtarma planında çalışabilir.
- Kurtarma planındaki runbook'lar seri olarak, sırayla, birbiri ardına çalıştırılır.
- Kurtarma planındaki runbook'lar VM'leri farklı gruplarda başlatılacak şekilde yapılandırırsa, kurtarma planı yalnızca Azure tüm VM'leri çalışıyor olarak bildirdiğinde devam eder.
- Bir betik başarısız olsa bile kurtarma planları çalışmaya devam ediyor.
Kurtarma planı bağlamı
Betik çalıştırıldığında runbook'a bir kurtarma planı bağlamı ekler. Bağlam, tabloda özetlenen değişkenleri içerir.
Değişken adı | Açıklama |
---|---|
RecoveryPlanName | Kurtarma planı adı. Ada göre eylemlerde kullanılır. |
Yük Devretme Türü | Bunun bir test mi yoksa üretim yük devretmesi mi olduğunu belirtir. |
Yük DevretmeDirection | Kurtarmanın birincil konuma mı yoksa ikincil konuma mı olduğunu belirtir. |
Groupıd | Plan çalışırken kurtarma planındaki grup numarasını tanımlar. |
VmMap | Gruptaki tüm VM'lerin dizisi. |
VMMap anahtarı | Her VM için benzersiz bir anahtar (GUID). |
SubscriptionId | VM'nin oluşturulduğu Azure abonelik kimliği. |
ResourceGroupName | VM'nin bulunduğu kaynak grubunun adı. |
CloudServiceName | VM'nin oluşturulduğu Azure bulut hizmeti adı. |
RoleName | Azure VM'sinin adı. |
RecoveryPointId | VM kurtarma için zaman damgası. |
Not
Yük devretme durumunda 'FailoverDirection' değişkeninin değeri 'PrimaryToSecondary' ve yeniden çalışma durumunda 'SecondaryToPrimary' olacaktır.
Aşağıdaki örnekte bir bağlam değişkeni gösterilmektedir:
{
"RecoveryPlanName": "hrweb-recovery",
"FailoverType": "Test",
"FailoverDirection": "PrimaryToSecondary",
"GroupId": "1",
"VmMap": {
"7a1069c6-c1d6-49c5-8c5d-33bfce8dd183": {
"SubscriptionId": "7a1111111-c1d6-49c5-8c5d-111ce8dd183",
"ResourceGroupName": "ContosoRG",
"CloudServiceName": "pod02hrweb-Chicago-test",
"RoleName": "Fabrikam-Hrweb-frontend-test",
"RecoveryPointId": "TimeStamp"
}
}
}
VMMap'teki tüm VM'lere döngü içinde erişmek istiyorsanız aşağıdaki kodu kullanabilirsiniz:
param (
[parameter(Mandatory=$false)]
[Object]$RecoveryPlanContext
)
$VMinfo = $RecoveryPlanContext.VmMap | Get-Member | Where-Object MemberType -EQ NoteProperty | select -ExpandProperty Name
$vmMap = $RecoveryPlanContext.VmMap
foreach($VMID in $VMinfo)
{
$VM = $vmMap.$VMID
if( !(($VM -eq $Null) -Or ($VM.ResourceGroupName -eq $Null) -Or ($VM.RoleName -eq $Null))) {
#this check is to ensure that we skip when some data is not available else it will fail
Write-output "Resource group name ", $VM.ResourceGroupName
Write-output "Rolename " = $VM.RoleName
}
}
Aman Sharma'nın Harvesting Clouds'taki blogu, kurtarma planı bağlam betiğinin yararlı bir örneğine sahiptir.
Başlamadan önce
Azure Otomasyonu yeniyseniz kaydolabilir ve örnek betikleri indirebilirsiniz. Daha fazla bilgi için bkz . Otomasyon runbook'ları - bilinen sorunlar ve sınırlamalar.
Otomasyon hesabının aşağıdaki modüllere sahip olduğundan emin olun:
- AzureRM.profile
- AzureRM.Resources
- AzureRM.Automation
- AzureRM.Network
- AzureRM.Compute
Tüm modüller uyumlu sürümlerde olmalıdır. En basit yol her zaman tüm modüllerin en son sürümlerini kullanmaktır.
Kurtarma planını özelleştirme
Kasada Kurtarma Planları (Site Recovery) öğesini seçin
Kurtarma planı oluşturmak için +Kurtarma Planı'na tıklayın. Daha fazla bilgi edinin. Zaten bir kurtarma planınız varsa, açmak için seçin.
Kurtarma planı sayfasında Özelleştir'i seçin.
Grup 1: Gönderi ekleme eylemini başlat'ın>yanındaki üç noktayı (...) seçin.
Ekle eyleminde Betik'in seçili olduğunu doğrulayın ve betik için bir ad belirtin (Merhaba Dünya).
Bir otomasyon hesabı belirtin ve bir runbook seçin. Betiği kaydetmek için Tamam'ı seçin. Betik, Grup 1: Son adımlar'a eklenir.
Runbook betiğini yeniden kullanma
Dış değişkenleri kullanarak birden çok kurtarma planında tek bir runbook betiği kullanabilirsiniz.
- Kurtarma planı çalıştırmaya yönelik parametreleri depolamak için Azure Otomasyonu değişkenleri kullanırsınız.
- Kurtarma planı adını değişkene ön ek olarak ekleyerek, her kurtarma planı için bağımsız değişkenler oluşturabilirsiniz. Ardından değişkenleri parametre olarak kullanın.
- Betiği değiştirmeden bir parametreyi değiştirebilirsiniz, ancak yine de betiğin çalışma şeklini değiştirebilirsiniz.
Runbook betiğinde basit bir dize değişkeni kullanma
Bu örnekte, bir betik bir Ağ Güvenlik Grubu'nun (NSG) girişini alır ve bunu bir kurtarma planındaki VM'lere uygular.
Betiğin hangi kurtarma planının çalıştığını algılaması için şu kurtarma planı bağlamını kullanın:
workflow AddPublicIPAndNSG { param ( [parameter(Mandatory=$false)] [Object]$RecoveryPlanContext ) $RPName = $RecoveryPlanContext.RecoveryPlanName }
NSG adını ve kaynak grubunu not edin. Bu değişkenleri kurtarma planı betikleri için giriş olarak kullanırsınız.
Otomasyon hesabı varlıklarında. NSG adını depolamak için bir değişken oluşturun. Değişken adına kurtarma planının adıyla bir ön ek ekleyin.
NSG kaynağının kaynak grubu adını depolamak için bir değişken oluşturun. Değişken adına kurtarma planının adıyla bir ön ek ekleyin.
Betikte, değişken değerlerini almak için şu başvuru kodunu kullanın:
Betikte, değişken değerlerini almak için şu başvuru kodunu kullanın:
$NSGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSG" $NSGRGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSGRG" $NSGnameVar = Get-AutomationVariable -Name $NSGValue $RGnameVar = Get-AutomationVariable -Name $NSGRGValue
NSG'yi yük devretme sanal makinesinin ağ arabirimine uygulamak için runbook'taki değişkenleri kullanın:
InlineScript { if (($Using:NSGname -ne $Null) -And ($Using:NSGRGname -ne $Null)) { $NSG = Get-AzureRmNetworkSecurityGroup -Name $Using:NSGname -ResourceGroupName $Using:NSGRGname Write-output $NSG.Id #Apply the NSG to a network interface #$vnet = Get-AzureRmVirtualNetwork -ResourceGroupName TestRG -Name TestVNet #Set-AzureRmVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name FrontEnd ` # -AddressPrefix 192.168.1.0/24 -NetworkSecurityGroup $NSG } }
Her kurtarma planı için betiği yeniden kullanabilmeniz için bağımsız değişkenler oluşturun. Kurtarma planı adını kullanarak bir ön ek ekleyin.
Daha fazla bilgi depolamak için karmaşık bir değişken kullanma
Bazı senaryolarda her kurtarma planı için ayrı değişkenler oluşturamayabilirsiniz. Belirli VM'lerde tek bir betiğin genel IP adresi atamasını istediğiniz bir senaryo düşünün. Başka bir senaryoda, farklı VM'lere (tüm VM'lerde değil) farklı NSG'ler uygulamak isteyebilirsiniz. Şunlara dikkat edin:
- Herhangi bir kurtarma planı için yeniden kullanılabilir bir betik oluşturabilirsiniz.
- Her kurtarma planında değişken sayıda VM olabilir.
- Örneğin, SharePoint kurtarmanın iki ön ucu vardır. Temel bir iş kolu (LOB) uygulamasının yalnızca bir ön ucu vardır.
- Bu senaryoda, her kurtarma planı için ayrı değişkenler oluşturamazsınız.
Aşağıdaki örnekte, Azure Otomasyonu hesabında karmaşık bir değişken oluşturacağız.
Bunu, Azure PowerShell kullanarak birden çok değer belirterek yaparız.
PowerShell'de Azure aboneliğinizde oturum açın:
Connect-AzureRmAccount $sub = Get-AzureRmSubscription -Name <SubscriptionName> $sub | Select-AzureRmSubscription
Parametreleri depolamak için, kurtarma planının adını kullanarak karmaşık değişkeni oluşturun:
$VMDetails = @{"VMGUID"=@{"ResourceGroupName"="RGNameOfNSG";"NSGName"="NameOfNSG"};"VMGUID2"=@{"ResourceGroupName"="RGNameOfNSG";"NSGName"="NameOfNSG"}} New-AzureRmAutomationVariable -ResourceGroupName <RG of Automation Account> -AutomationAccountName <AA Name> -Name <RecoveryPlanName> -Value $VMDetails -Encrypted $false
Bu karmaşık değişkende VMDetails, korumalı VM'nin VM kimliğidir. VM kimliğini almak için Azure portalında VM özelliklerini görüntüleyin. Aşağıdaki ekran görüntüsünde iki VM'nin ayrıntılarını depolayan bir değişken gösterilmektedir:
Runbook'unuzda bu değişkeni kullanın. Belirtilen VM GUID'i kurtarma planı bağlamında bulunursa, VM'ye NSG'yi uygulayın:
$VMDetailsObj = (Get-AutomationVariable -Name $RecoveryPlanContext.RecoveryPlanName).ToObject([hashtable])
Runbook'unuzda kurtarma planı bağlamının VM'leri arasında döngü yapın. VM'nin $VMDetailsObj olup olmadığını denetleyin. Varsa, değişkenin özelliklerine erişerek NSG'yi uygulayın:
$VMinfo = $RecoveryPlanContext.VmMap | Get-Member | Where-Object MemberType -EQ NoteProperty | select -ExpandProperty Name $vmMap = $RecoveryPlanContext.VmMap foreach ($VMID in $VMinfo) { $VMDetails = $VMDetailsObj[$VMID].ToObject([hashtable]); Write-output $VMDetails if ($VMDetails -ne $Null) { #If the VM exists in the context, this will not be Null $VM = $vmMap.$VMID # Access the properties of the variable $NSGname = $VMDetails.NSGName $NSGRGname = $VMDetails.NSGResourceGroupName # Add code to apply the NSG properties to the VM } }
Farklı kurtarma planları için aynı betiği kullanabilirsiniz. Kurtarma planına karşılık gelen değeri farklı değişkenlerde depolayarak farklı parametreler girin.
Örnek betikler
Örnek betikleri Otomasyon hesabınıza dağıtmak için Azure'a Dağıt düğmesini seçin.
Sonraki adımlar
- Şu konularda bilgi edinin:
- Inceleme:
- Azure Site Recovery DR sırasında çalıştırmak isteyebileceğiniz birkaç görev.