Настройка аварийного восстановления виртуальных машин Hyper-V в Azure с помощью PowerShell и Azure Resource Manager
Служба Azure Site Recovery помогает реализовать стратегию непрерывности бизнес-процессов и аварийного восстановления (BCDR), выполняя репликацию, отработку отказа и восстановление виртуальных машин Azure, а также локальных виртуальных машин и физических серверов.
Здесь описывается как использовать Windows PowerShell вместе с Azure Resource Manager для репликации виртуальных машин Hyper-V в Azure. В примере, используемом в этой статье, показано, как выполнить репликацию одной виртуальной машины на узле Hyper-V в Azure.
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в статье "Установка Azure PowerShell". Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.
Azure PowerShell
Azure PowerShell предоставляет командлеты для управления Azure, используя Windows PowerShell. Командлеты PowerShell для службы Site Recovery, доступные в Azure PowerShell для диспетчера ресурсов Azure, позволяют обеспечить защиту и выполнить восстановление серверов в Azure.
Для работы с этой статьей не требуется большой опыт работы с PowerShell, но необходимо знакомство с основными понятиями, такими как модули, командлеты и сеансы. Дополнительные сведения см. в документации по PowerShell и статье Использование Azure PowerShell с Azure Resource Manager.
Примечание.
Партнеры корпорации Майкрософт в программе для поставщиков облачных решений могут настроить защиту серверов клиентов и управлять ею в своих подписках CSP (клиентские подписки).
Перед началом работы
Убедитесь, что выполнены следующие предварительные требования.
- Учетная запись Microsoft Azure. Начните с бесплатной пробной версии. Также вы можете ознакомиться с расценками на использование менеджера Azure Site Recovery.
- Azure PowerShell. Сведения об этом выпуске и его установке см. в статье Установка Azure PowerShell.
К тому же конкретный пример, описанный в этой статье, требует следующих компонентов:
- Узел Hyper-V под управлением Windows Server 2012 R2 или Microsoft Hyper-V Server 2012 R2, содержащий одну или несколько виртуальных машин. Серверы Hyper-V должны быть подключены к Интернету напрямую или через прокси-сервер.
- Виртуальные машины, которые вы хотите реплицировать, должны соответствовать этим условиям.
Шаг 1. Вход в учетную запись Azure
Откройте консоль PowerShell и выполните следующую команду, чтобы войти в учетную запись Azure. Этот командлет открывает веб-страницу, на которой пользователю предлагается ввести данные для входа в учетную запись:
Connect-AzAccount
.- Кроме того, учетные данные можно добавить в качестве параметра в командлет
Connect-AzAccount
, используя параметр Credential. - Если вы — партнер CSP, работающий от имени арендатора, вам потребуется указать заказчика в качестве арендатора. Для этого нужно ввести идентификатор или основное доменное имя арендатора. Например:
Connect-AzAccount -Tenant "fabrikam.com"
- Кроме того, учетные данные можно добавить в качестве параметра в командлет
Свяжите подписку, которую собираетесь использовать, с учетной записью, так как последняя может иметь несколько подписок:
Set-AzContext -Subscription $SubscriptionName
Убедитесь, что в вашей подписке зарегистрированы поставщики Azure для служб восстановления и службы Site Recovery, используя команды, приведенные ниже:
Get-AzResourceProvider -ProviderNamespace Microsoft.RecoveryServices
Убедившись, что в выходных данных команд для параметра RegistrationState установлено значение Registered, можно перейти к шагу 2. В противном случае необходимо зарегистрировать отсутствующего поставщика в своей подписке, выполнив следующие команды:
Register-AzResourceProvider -ProviderNamespace Microsoft.RecoveryServices
Убедитесь, что поставщики успешно зарегистрированы, выполнив следующие команды:
Get-AzResourceProvider -ProviderNamespace Microsoft.RecoveryServices
Шаг 2. Настройка хранилища
Создайте группу ресурсов для Azure Resource Manager, которой необходимо создать хранилища, или воспользуйтесь существующими группами ресурсов. Создайте группу ресурсов следующим образом. Переменная
$ResourceGroupName
содержит имя группы ресурсов, которую нужно создать, а переменная $Geo — регион Azure, в котором нужно создать группу ресурсов (например, "Южная Бразилия").New-AzResourceGroup -Name $ResourceGroupName -Location $Geo
Список групп ресурсов в подписке можно получить с помощью командлета
Get-AzResourceGroup
.Создайте хранилище служб восстановления Azure следующим образом:
$vault = New-AzRecoveryServicesVault -Name <string> -ResourceGroupName <string> -Location <string>
Получить список существующих хранилищ можно с помощью командлета Get-AzRecoveryServicesVault
.
Шаг 3. Настройка контекста для хранилища служб восстановления
Задайте контекст хранилища следующим образом:
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
Шаг 4. Создание узла Hyper-V
Создайте сайт Hyper-V следующим образом:
$sitename = "MySite" #Specify site friendly name New-AzRecoveryServicesAsrFabric -Type HyperVSite -Name $sitename
Этот командлет запускает задание Site Recovery для создания сайта и возвращает объект этого задания. Дождитесь завершения задания и убедитесь, что оно выполнено успешно.
Для получения объекта задания и проверки его текущего состояния используйте командлет
Get-AzRecoveryServicesAsrJob
.Создайте и скачайте ключ регистрации для сайта, выполнив следующие действия:
$SiteIdentifier = Get-AzRecoveryServicesAsrFabric -Name $sitename | Select-Object -ExpandProperty SiteIdentifier $path = Get-AzRecoveryServicesVaultSettingsFile -Vault $vault -SiteIdentifier $SiteIdentifier -SiteFriendlyName $sitename
Скопируйте скачанный ключ на узел Hyper-V. Этот ключ вам потребуется, чтобы зарегистрировать узел Hyper-V на сайте.
Шаг 5. Установка поставщика и агента
Скачайте установщик последней версии поставщика с веб-сайта корпорации Майкрософт.
Запустите установщик на узле Hyper-V.
По завершении установки перейдите к шагу регистрации.
При появлении запроса укажите скачанный ключ и завершите регистрацию узла Hyper-V.
Убедитесь, что узел Hyper-V зарегистрирован на сайте следующим образом:
$server = Get-AzRecoveryServicesAsrFabric -Name $siteName | Get-AzRecoveryServicesAsrServicesProvider -FriendlyName $server-friendlyname
Если вы используете основной сервер Hyper-V, скачайте файл установки и сделайте следующее:
Извлеките файлы из файла AzureSiteRecoveryProvider.exe в локальный каталог, выполнив следующую команду:
AzureSiteRecoveryProvider.exe /x:. /q
Выполните следующую команду:
.\setupdr.exe /i
Результаты будут записаны в журнал %ProgramData%\ASRLogs\DRASetupWizard.log.
Зарегистрируйте сервер с помощью следующей команды:
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. Создание политики репликации
Перед началом убедитесь, что указанная учетная запись хранения находится в том же регионе Azure, что и хранилище. В ней также должна быть включена функция георепликации.
Создайте политику репликации, выполнив следующую команду:
$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
Проверьте возвращенный результат задания, чтобы убедиться, что политика репликации успешно создана.
Получите соответствующий сайту контейнер защиты следующим образом:
$protectionContainer = Get-AzRecoveryServicesAsrProtectionContainer
Свяжите контейнер защиты с политикой репликации, выполнив следующую команду:
$Policy = Get-AzRecoveryServicesAsrPolicy -FriendlyName $PolicyName $associationJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name $mappingName -Policy $Policy -PrimaryProtectionContainer $protectionContainer[0]
Дождитесь завершения этого задания и убедитесь, что оно выполнено успешно.
Получите сопоставление контейнера защиты.
$ProtectionContainerMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping -ProtectionContainer $protectionContainer
Шаг 7. Включение защиты в виртуальных машинах
Получите защищаемый элемент, соответствующий виртуальной машине, которую необходимо защитить, выполнив следующую команду:
$VMFriendlyName = "Fabrikam-app" #Name of the VM $ProtectableItem = Get-AzRecoveryServicesAsrProtectableItem -ProtectionContainer $protectionContainer -FriendlyName $VMFriendlyName
Включите защиту виртуальной машины. Если к виртуальной машине, которую необходимо защитить, подключено несколько дисков, нужно указать диск операционной системы (ОС) с помощью параметра 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
Дождитесь, пока виртуальные машины перейдут в защищенное состояние после начальной репликации. Это может занять некоторое время в зависимости от таких факторов, как объем данных для репликации и доступная пропускная способность вышестоящих служб в Azure. Когда виртуальные машины перейдут в защищенное состояние, параметры State и StateDescription задания обновятся следующим образом:
PS C:\> $DRjob = Get-AzRecoveryServicesAsrJob -Job $DRjob PS C:\> $DRjob | Select-Object -ExpandProperty State Succeeded PS C:\> $DRjob | Select-Object -ExpandProperty StateDescription Completed
Обновите свойства восстановления (например, размер роли виртуальной машины) и сеть Azure, к которой подключится сетевой адаптер виртуальной машины после отработки отказа.
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
Примечание.
Если вы хотите выполнить репликацию на управляемые диски с поддержкой CMK в Azure, следует произвести следующие действия с помощью Az PowerShell 3.3.0 или более поздней версии:
- Включите отработку отказа на управляемые диски запустив обновление свойств виртуальной машины.
- Воспользуйтесь командлетом
Get-AzRecoveryServicesAsrReplicationProtectedItem
, чтобы получить идентификатор диска для каждого диска защищаемого элемента. - Создайте объект словаря с помощью командлета
New-Object "System.Collections.Generic.Dictionary``2[System.String,System.String]"
, чтобы можно было сопоставить идентификатор диска с набором шифрования дисков. Вам нужно заранее создать в целевом регионе такие наборы шифрования для дисков. - Обновите свойства виртуальной машины с помощью командлета
Set-AzRecoveryServicesAsrReplicationProtectedItem
, отправив объект словаря в параметр DiskIdToDiskEncryptionSetMap.
Шаг 8. Запуск тестовой отработки отказа
Запустите тестовую отработку отказа, выполнив следующую команду:
$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
Убедитесь, что тестовая виртуальная машина создана в Azure. После создания тестовой виртуальной машины в Azure, задание тестовой отработки отказа будет приостановлено.
Для очистки и завершения тестовой отработки отказа выполните следующую команду:
$TFjob = Start-AzRecoveryServicesAsrTestFailoverCleanupJob -ReplicationProtectedItem $rpi -Comment "TFO done"
Следующие шаги
Узнайте больше об использовании командлетов PowerShell инструмента Azure Resource Manager для службы Azure Site Recovery.