Konfigurera haveriberedskap till Azure för virtuella Hyper-V-datorer med PowerShell och Azure Resource Manager
Azure Site Recovery bidrar till din BCDR-strategi (affärskontinuitet och haveriberedskap) genom att samordna replikering, redundans och återställning av virtuella Azure-datorer (VM) samt lokala virtuella datorer och fysiska servrar.
Den här artikeln beskriver hur du använder Windows PowerShell tillsammans med Azure Resource Manager för att replikera virtuella Hyper-V-datorer till Azure. Exemplet som används i den här artikeln visar hur du replikerar en enskild virtuell dator som körs på en Hyper-V-värd till Azure.
Kommentar
Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Information om hur du kommer igång finns i Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.
Azure PowerShell
Azure PowerShell tillhandahåller cmdletar för att hantera Azure med Hjälp av Windows PowerShell. Site Recovery PowerShell-cmdletar, som är tillgängliga med Azure PowerShell för Azure Resource Manager, hjälper dig att skydda och återställa dina servrar i Azure.
Du behöver inte vara PowerShell-expert för att kunna använda den här artikeln, men du behöver förstå grundläggande begrepp, till exempel moduler, cmdletar och sessioner. Mer information finns i PowerShell-dokumentationen och Använda Azure PowerShell med Azure Resource Manager.
Kommentar
Microsoft-partner i Molnlösningsleverantör-programmet (CSP) kan konfigurera och hantera skydd av kundservrar till respektive CSP-prenumerationer (klientprenumerationer).
Innan du börjar
Se till att du har följande förutsättningar på plats:
- Ett Microsoft Azure-konto . Du kan börja med en kostnadsfri utvärderingsversion. Dessutom kan du läsa om priser för Azure Site Recovery Manager.
- Azure PowerShell. Information om den här versionen och hur du installerar den finns i Installera Azure PowerShell.
Dessutom har det specifika exemplet som beskrivs i den här artikeln följande förutsättningar:
- En Hyper-V-värd som kör Windows Server 2012 R2 eller Microsoft Hyper-V Server 2012 R2 som innehåller en eller flera virtuella datorer. Hyper-V-servrar ska vara anslutna till Internet, antingen direkt eller via en proxy.
- De virtuella datorer som du vill replikera ska överensstämma med dessa krav.
Steg 1: Logga in på ditt Azure-konto
Öppna en PowerShell-konsol och kör det här kommandot för att logga in på ditt Azure-konto. Cmdleten visar en webbsida där du uppmanas att ange dina autentiseringsuppgifter för kontot:
Connect-AzAccount
.- Alternativt kan du inkludera dina kontoautentiseringsuppgifter som en parameter i cmdleten
Connect-AzAccount
med hjälp av parametern Credential . - Om du är en CSP-partner som arbetar för en klientorganisation anger du kunden som klient genom att använda deras klient-ID eller klientorganisationens primära domännamn. Till exempel:
Connect-AzAccount -Tenant "fabrikam.com"
- Alternativt kan du inkludera dina kontoautentiseringsuppgifter som en parameter i cmdleten
Associera den prenumeration som du vill använda med kontot, eftersom ett konto kan ha flera prenumerationer:
Set-AzContext -Subscription $SubscriptionName
Kontrollera att din prenumeration är registrerad för att använda Azure-leverantörerna för Recovery Services och Site Recovery med hjälp av följande kommandon:
Get-AzResourceProvider -ProviderNamespace Microsoft.RecoveryServices
Kontrollera att i kommandoutdata är RegistrationState inställt på Registrerad, kan du gå vidare till steg 2. Annars bör du registrera den saknade providern i din prenumeration genom att köra följande kommandon:
Register-AzResourceProvider -ProviderNamespace Microsoft.RecoveryServices
Kontrollera att providrar har registrerats med hjälp av följande kommandon:
Get-AzResourceProvider -ProviderNamespace Microsoft.RecoveryServices
Steg 2: Konfigurera valvet
Skapa en Azure Resource Manager-resursgrupp där du kan skapa valvet eller använda en befintlig resursgrupp. Skapa en ny resursgrupp på följande sätt. Variabeln
$ResourceGroupName
innehåller namnet på den resursgrupp som du vill skapa och variabeln $Geo innehåller den Azure-region där resursgruppen ska skapas (till exempel "Brasilien, södra").New-AzResourceGroup -Name $ResourceGroupName -Location $Geo
Kör cmdleten
Get-AzResourceGroup
för att hämta en lista över resursgrupper i din prenumeration.Skapa ett nytt Azure Recovery Services-valv på följande sätt:
$vault = New-AzRecoveryServicesVault -Name <string> -ResourceGroupName <string> -Location <string>
Du kan hämta en lista över befintliga valv med cmdleten Get-AzRecoveryServicesVault
.
Steg 3: Ange Recovery Services-valvkontexten
Ange valvkontexten på följande sätt:
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
Steg 4: Skapa en Hyper-V-webbplats
Skapa en ny Hyper-V-webbplats på följande sätt:
$sitename = "MySite" #Specify site friendly name New-AzRecoveryServicesAsrFabric -Type HyperVSite -Name $sitename
Den här cmdleten startar ett Site Recovery-jobb för att skapa platsen och returnerar ett Site Recovery-jobbobjekt. Vänta tills jobbet har slutförts och kontrollera att jobbet har slutförts.
Använd cmdleten
Get-AzRecoveryServicesAsrJob
för att hämta jobbobjektet och kontrollera jobbets aktuella status.Generera och ladda ned en registreringsnyckel för webbplatsen enligt följande:
$SiteIdentifier = Get-AzRecoveryServicesAsrFabric -Name $sitename | Select-Object -ExpandProperty SiteIdentifier $path = Get-AzRecoveryServicesVaultSettingsFile -Vault $vault -SiteIdentifier $SiteIdentifier -SiteFriendlyName $sitename
Kopiera den nedladdade nyckeln till Hyper-V-värden. Du behöver nyckeln för att registrera Hyper-V-värden på platsen.
Steg 5: Installera providern och agenten
Ladda ned installationsprogrammet för den senaste versionen av providern från Microsoft.
Kör installationsprogrammet på Hyper-V-värden.
I slutet av installationen fortsätter du till registreringssteget.
När du uppmanas till det anger du den nedladdade nyckeln och slutför registreringen av Hyper-V-värden.
Kontrollera att Hyper-V-värden är registrerad på webbplatsen på följande sätt:
$server = Get-AzRecoveryServicesAsrFabric -Name $siteName | Get-AzRecoveryServicesAsrServicesProvider -FriendlyName $server-friendlyname
Om du kör en Hyper-V-kärnserver laddar du ned installationsfilen och följer dessa steg:
Extrahera filerna från AzureSiteRecoveryProvider.exe till en lokal katalog genom att köra det här kommandot:
AzureSiteRecoveryProvider.exe /x:. /q
Kör följande kommando:
.\setupdr.exe /i
Resultaten loggas till %ProgramData%\ASRLogs\DRASetupWizard.log.
Registrera servern genom att köra det här kommandot:
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"
Steg 6: Skapa en replikeringsprincip
Innan du börjar bör det angivna lagringskontot finnas i samma Azure-region som valvet och ha geo-replikering aktiverat.
Skapa en replikeringsprincip på följande sätt:
$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
Kontrollera det returnerade jobbet för att säkerställa att skapandet av replikeringsprincipen lyckas.
Hämta skyddscontainern som motsvarar platsen enligt följande:
$protectionContainer = Get-AzRecoveryServicesAsrProtectionContainer
Associera skyddscontainern med replikeringsprincipen enligt följande:
$Policy = Get-AzRecoveryServicesAsrPolicy -FriendlyName $PolicyName $associationJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name $mappingName -Policy $Policy -PrimaryProtectionContainer $protectionContainer[0]
Vänta tills associationsjobbet har slutförts.
Hämta skyddscontainerns mappning.
$ProtectionContainerMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -ProtectionContainer $protectionContainer
Steg 7: Aktivera VM-skydd
Hämta det skyddsbara objekt som motsvarar den virtuella dator som du vill skydda, enligt följande:
$VMFriendlyName = "Fabrikam-app" #Name of the VM $ProtectableItem = Get-AzRecoveryServicesAsrProtectableItem -ProtectionContainer $protectionContainer -FriendlyName $VMFriendlyName
Skydda den virtuella datorn. Om den virtuella dator som du skyddar har fler än en disk ansluten till den anger du operativsystemdisken med hjälp av parametern OSDiskName .
$OSType = "Windows" # "Windows" or "Linux" $DRjob = New-AzRecoveryServicesAsrReplicationProtectedItem -ProtectableItem $VM -Name $VM.Name -ProtectionContainerMapping $ProtectionContainerMapping -RecoveryAzureStorageAccountId $StorageAccountID -OSDiskName $OSDiskNameList[$i] -OS $OSType -RecoveryResourceGroupId $ResourceGroupID
Vänta tills de virtuella datorerna har nått ett skyddat tillstånd efter den inledande replikeringen. Det kan ta en stund, beroende på faktorer som mängden data som ska replikeras och den tillgängliga uppströmsbandbredden till Azure. När ett skyddat tillstånd är på plats uppdateras jobbtillståndet och StateDescription på följande sätt:
PS C:\> $DRjob = Get-AzRecoveryServicesAsrJob -Job $DRjob PS C:\> $DRjob | Select-Object -ExpandProperty State Succeeded PS C:\> $DRjob | Select-Object -ExpandProperty StateDescription Completed
Uppdatera återställningsegenskaperna (till exempel storleken på den virtuella datorns roll) och det Azure-nätverk som nätverkskortet för den virtuella datorn ska kopplas till efter redundansväxlingen.
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
Kommentar
Om du vill replikera till CMK-aktiverade hanterade diskar i Azure utför du följande steg med Az PowerShell 3.3.0 och senare:
- Aktivera redundans till hanterade diskar genom att uppdatera vm-egenskaper
- Använd cmdleten
Get-AzRecoveryServicesAsrReplicationProtectedItem
för att hämta disk-ID:t för varje disk i det skyddade objektet - Skapa ett ordlisteobjekt med hjälp av
New-Object "System.Collections.Generic.Dictionary``2[System.String,System.String]"
cmdlet för att innehålla mappningen av disk-ID till diskkrypteringsuppsättning. Dessa diskkrypteringsuppsättningar ska skapas i förväg av dig i målregionen. - Uppdatera egenskaperna för den virtuella datorn med hjälp
Set-AzRecoveryServicesAsrReplicationProtectedItem
av cmdleten genom att skicka ordlisteobjektet i parametern DiskIdToDiskEncryptionSetMap .
Steg 8: Kör ett redundanstest
Kör ett redundanstest enligt följande:
$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
Kontrollera att den virtuella testdatorn har skapats i Azure. Redundanstestjobbet pausas när du har skapat den virtuella testdatorn i Azure.
Om du vill rensa och slutföra redundanstestet kör du:
$TFjob = Start-AzRecoveryServicesAsrTestFailoverCleanupJob -ReplicationProtectedItem $rpi -Comment "TFO done"
Nästa steg
Läs mer om Azure Site Recovery med Azure Resource Manager PowerShell-cmdletar.