Перемещение виртуальной машины из региональной в зональную зону доступности с помощью Azure PowerShell и CLI
В этой статье описаны командлеты Azure PowerShell и CLI для перемещения виртуальных машин одного экземпляра Azure из регионов в зональные зоны доступности. Зона доступности представляет собой физически отдельную зону в регионе Azure. Используйте зоны доступности для защиты приложений и данных от маловероятного сбоя или потери всего центра обработки данных.
Чтобы использовать зону доступности, создайте виртуальную машину в поддерживаемом регионе Azure.
Необходимые компоненты
Перед запуском процесса перемещения проверьте следующие требования:
Требование | Description |
---|---|
Разрешения подписки | Убедитесь, что у вас есть доступ владельца к подписке, содержащей ресурсы, которые требуется переместить. Для управляемого удостоверения требуются следующие разрешения: — Разрешение на запись или создание ресурсов в подписке пользователя, доступное с ролью участника. — разрешение на создание назначений ролей. Как правило, доступно с ролями "Владелец" или "Администратор доступа пользователей" или с настраиваемой ролью с назначенными назначениями ролей или разрешением Microsoft.Authorization на запись. Это разрешение не требуется, если управляемому удостоверению ресурса общего доступа к данным уже предоставлен доступ к хранилищу данных Azure. Дополнительные сведения о ролях Azure. |
Поддержка виртуальных машин | Просмотрите поддерживаемые регионы. - Убедитесь, что параметры вычислений, хранилища и сети являются поддерживаемыми. |
Состояние работоспособности виртуальной машины | Перед попыткой зонального перемещения виртуальные машины, которые вы хотите переместить, должны находиться в работоспособном состоянии. Убедитесь, что все ожидающие перезагрузки и обязательные обновления завершены, и виртуальная машина работает и находится в работоспособном состоянии перед попыткой зонального перемещения виртуальной машины. |
Ознакомьтесь с требованиями к PowerShell и CLI
Большинство операций перемещения ресурсов совпадают с использованием портал Azure или PowerShell или CLI с несколькими исключениями.
Примечание.
Дополнительные сведения о командах и их синтаксисах см. на этой странице.
Операция | Портал | PowerShell/CLI |
---|---|---|
Создание коллекции перемещения | Коллекция перемещения (список всех региональных виртуальных машин, которые вы перемещаете) создается автоматически. Необходимые разрешения удостоверений назначаются порталом в серверной части. | Для этого можно использовать командлеты PowerShell или командлеты CLI: — назначение управляемого удостоверения коллекции; — добавьте региональные виртуальные машины в коллекцию. |
Операции перемещения ресурсов | Проверьте шаги и проверяет изменения параметров пользователя . Запуск перемещения запускает процесс перемещения и создает копию исходной виртуальной машины в целевой зоне. Он также завершает перемещение созданной виртуальной машины в целевой зоне. | Командлеты PowerShell или командлеты CLI: — добавление региональных виртуальных машин в коллекцию — Разрешение зависимостей — выполните перемещение. — зафиксируйте перемещение. |
Примеры значений
Эти значения используются в примерах скриптов:
Параметр | Значение |
---|---|
ИД подписки | subscription-id |
Перемещение региона | Восточная часть США |
Группа ресурсов (в которой хранятся метаданные для коллекции перемещения) | RegionToZone-DemoMCRG |
Имя коллекции перемещения | RegionToZone-DemoMC |
Расположение коллекции перемещения | eastus2euap |
IdentityType | SystemAssigned |
имя виртуальной машины; | demoVM-MoveResource |
Тип перемещения | RegionToZone |
Вход в Azure
Войдите в подписку Azure с помощью команды Connect-AzAccount
и следуйте инструкциям на экране.
Задайте идентификатор подписки:
Set-AzContext -SubscriptionId " <subscription-id> "
Подключение к идентификатору подписки:
Connect-AzAccount –Subscription "<subscription-id>"
Настройка коллекции перемещения
Объект MoveCollection хранит метаданные и сведения о конфигурации ресурсов, которые требуется переместить. Чтобы настроить коллекцию перемещения, сделайте следующее:
- Создайте группу ресурсов для коллекции перемещения.
- Зарегистрируйте поставщик службы в подписке, чтобы можно было создать ресурс MoveCollection.
- Создайте объект MoveCollection с управляемым удостоверением. Для доступа к подписке, в которой находится служба Resource Mover, объекту MoveCollection требуется управляемое удостоверение, назначаемое системой (прежнее название — управляемое удостоверение службы (MSI)), которое является доверенным для подписки.
- Предоставьте доступ к подписке Resource Mover для управляемого удостоверения.
Создание группы ресурсов
Используйте следующий командлет, чтобы создать группу ресурсов для метаданных и конфигурации перемещения с помощью New-AzResourceGroup. Группа ресурсов — это логический контейнер, в котором происходит развертывание ресурсов Azure и управление ими.
New-AzResourceGroup -Name "RegionToZone-DemoMCRG" -Location "EastUS"
Выходные данные:
В выходных данных видно, что управляемый диск находится в той же зоне доступности, что и виртуальная машина:
ResourceGroupName : RegionToZone-DemoMCRG
Location : eastus
ProvisioningState : Succeeded
Tags :
Name Value
======= ========
Created 20230908
ResourceId : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG
Регистрация поставщика ресурсов
Зарегистрируйте поставщик ресурсов Microsoft.Migrate, чтобы можно было создать ресурс MoveCollection, следующим образом:
Register-AzResourceProvider -ProviderNamespace Microsoft.Migrate
Дождитесь регистрации:
While(((Get-AzResourceProvider -ProviderNamespace Microsoft.Migrate)| where {$_.RegistrationState -eq "Registered" -and $_.ResourceTypes.ResourceTypeName -eq "moveCollections"}|measure).Count -eq 0) { Start-Sleep -Seconds 5 Write-Output "Waiting for registration to complete." }
Создание объекта MoveCollection
Создайте объект MoveCollection и назначьте ему управляемое удостоверение, как показано ниже.
New-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC" -ResourceGroupName "RegionToZone-DemoMCRG" -MoveRegion "eastus" -Location "eastus2euap" -IdentityType "SystemAssigned" -MoveType "RegionToZone"
Выходные данные:
Etag Location Name
---- -------- ----
"3a00c441-0000-3400-0000-64fac1b30000" eastus2euap RegionToZone-DemoMC
Примечание.
Для зонального перемещения MoveType
между регионами параметр должен быть задан как RegionToZone и MoveRegion
параметр должен быть задан в качестве расположения, в котором ресурсы находятся зональным перемещением. Убедитесь, что параметры SourceRegion
и TargetRegion
не являются обязательными и должны иметь значение NULL.
Предоставление доступа управляемому удостоверению
Предоставьте управляемому удостоверению доступ к подписке Resource Mover следующим образом. Вы должны быть владельцем подписки.
Получите сведения об удостоверении из объекта MoveCollection.
$moveCollection = Get-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC" -ResourceGroupName "RegionToZone-DemoMCRG" $identityPrincipalId = $moveCollection.IdentityPrincipalId
Назначьте удостоверению необходимые роли, чтобы служба Azure Resource Mover могла получить доступ к вашей подписке и упростить перемещение ресурсов. Просмотрите список необходимых разрешений для перемещения.
New-AzRoleAssignment -ObjectId $identityPrincipalId -RoleDefinitionName Contributor -Scope "/subscriptions/<subscription-id>" New-AzRoleAssignment -ObjectId $identityPrincipalId -RoleDefinitionName "User Access Administrator" -Scope "/subscriptions/<subscription-id>"
Добавление региональных виртуальных машин в коллекцию перемещения
Извлеките идентификаторы для существующих исходных ресурсов, которые требуется переместить. Создайте объект параметров целевого ресурса, а затем добавьте ресурсы в коллекцию перемещения.
Примечание.
Ресурсы, добавленные в коллекцию перемещения, должны находиться в одной подписке, но могут находиться в разных группах ресурсов.
Создайте объект параметра целевого ресурса следующим образом:
$targetResourceSettingsObj = New-Object Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Api20230801.VirtualMachineResourceSettings $targetResourceSettingsObj.ResourceType = "Microsoft.Compute/virtualMachines" $targetResourceSettingsObj.TargetResourceName = "RegionToZone-demoTargetVm" $targetResourceSettingsObj.TargetAvailabilityZone = "2"
Выходные данные
ResourceType TargetResourceGroupName TargetResourceName TargetAvailabilitySetId TargetAvailabilityZone TargetVMSize UserManagedIdentity ------------ ----------------------- ------------------ ----------------------- ---------------------- ------------ ------------------- Microsoft.Compute/virtualMachines RegionToZone-demoTargetVm 2
Добавление ресурсов
Add-AzResourceMoverMoveResource -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" -SourceId "/subscriptions/<Subscription-id>/resourcegroups/PS-demo-RegionToZone-RG/providers/Microsoft.Compute/virtualMachines/RegionToZone-demoSourceVm" -Name "demoVM-MoveResource" -ResourceSetting $targetResourceSettingsObj
Выходные данные
DependsOn : {} DependsOnOverride : {} ErrorsPropertiesCode : ErrorsPropertiesDetail : ErrorsPropertiesMessage : ErrorsPropertiesTarget : ExistingTargetId : Id : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG/providers/Microsoft.Migrate/moveCollections/Re gionToZone-DemoMC/moveResources/demoVM-MoveResource IsResolveRequired : False JobStatusJobName : JobStatusJobProgress : MoveStatusErrorsPropertiesCode : DependencyComputationPending MoveStatusErrorsPropertiesDetail : {} MoveStatusErrorsPropertiesMessage : The dependency computation is not completed for resource - /subscriptions/<Subscription-id>/resourcegroups/PS-demo-R egionToZone-RG/providers/Microsoft.Compute/virtualMachines/RegionToZone-demoSourceVm'. Possible Causes: Dependency computation is pending for resource. Recommended Action: Validate dependencies to compute the dependencies. MoveStatusErrorsPropertiesTarget : MoveStatusMoveState : MovePending Name : demoVM-MoveResource ProvisioningState : Succeeded ResourceSetting : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Api20230801.VirtualMachineResourceSettings SourceId : /subscriptions/<Subscription-id>/resourcegroups/PS-demo-RegionToZone-RG/providers/Microsoft.Compute/virtualMachines/ RegionToZone-demoSourceVm SourceResourceSetting : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Api20230801.VirtualMachineResourceSettings SystemDataCreatedAt : 9/8/2023 6:48:11 AM SystemDataCreatedBy : xxxxx@microsoft.com SystemDataCreatedByType : User SystemDataLastModifiedAt : 9/8/2023 6:48:11 AM SystemDataLastModifiedBy : xxxxx@microsoft.com SystemDataLastModifiedByType : User TargetId : Type :
Изменение параметров
Можно изменить параметры назначения при перемещении виртуальных машин Azure и связанных с ними ресурсов. Перед проверкой коллекции перемещения рекомендуется изменить только параметры назначения.
Параметры, которые можно изменить, являются:
- Параметры виртуальной машины: группа ресурсов, имя виртуальной машины, зона доступности виртуальной машины, SKU виртуальной машины, хранилище ключей виртуальной машины и набор шифрования дисков.
- Параметры сетевых ресурсов: для сетевых интерфейсов, виртуальных сетей (виртуальных сетей/) и групп безопасности сети или сетевых интерфейсов можно:
- Используйте существующий сетевой ресурс в целевом регионе.
- Создайте ресурс с другим именем.
- Общедоступный IP-адрес и Подсистема балансировки нагрузки: SKU и зона
Измените параметры следующим образом:
Извлеките ресурс перемещения, для которого необходимо изменить свойства. Например, чтобы извлечь виртуальную машину, выполните следующие действия:
$moveResourceObj = Get-AzResourceMoverMoveResource -MoveCollectionName " RegionToZone-DemoMCRG " -ResourceGroupName " RegionToZone-DemoMC " -Name "PSDemoVM"
Скопируйте параметр ресурса в целевой объект параметра ресурса.
$TargetResourceSettingObj = $moveResourceObj.ResourceSetting
Задайте параметр в целевом объекте параметра ресурса. Например, чтобы изменить имя виртуальной машины назначения, выполните следующие действия:
$TargetResourceSettingObj.TargetResourceName="PSDemoVM-target"
Обновите параметры назначения ресурса перемещения. В этом примере мы меняем имя виртуальной машины с PSDemoVM на PSDemoVMTarget.
Update-AzResourceMoverMoveResource -ResourceGroupName " RegionToZone-DemoMCRG " -MoveCollectionName " RegionToZone-DemoMC -SourceId "/subscriptions/<Subscription-d>/resourceGroups/PSDemoRM/providers/Microsoft.Compute/virtualMachines/PSDemoVM" -Name "PSDemoVM" -ResourceSetting $TargetResourceSettingObj
Устранение ошибок, связанных с зависимостями
Проверьте, имеют ли добавленные региональные виртуальные машины какие-либо зависимости от других ресурсов и при необходимости добавьте.
Устраните зависимости следующим образом:
Resolve-AzResourceMoverMoveCollectionDependency -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC"
Выходные данные (при наличии зависимостей)
AdditionalInfo : Code : Detail : EndTime : EndTime : 9/8/2023 6:52:14 AM Id : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG/providers/Microsoft.Migrate/moveCollections/RegionToZone-DemoMC/operations/bc68354b-ec1f-44cb-92ab-fb3b4ad90229 Message : Name : bc68354b-ec1f-44cb-92ab-fb3b4ad90229 Property : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Any StartTime : 9/8/2023 6:51:50 AM Status : Succeeded
Чтобы получить список ресурсов, добавленных в коллекцию перемещения, выполните указанные ниже действия.
$list = Get-AzResourceMoverMoveResource -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC"
$list.Name
Выходные данные:
demoVM-MoveResource mr_regiontozone-demosourcevm661_d6f18900-3b87-4fb5-9bdf-12da2f9fb185 mr_regiontozone-demosourcevm-vnet_d8536bf5-2d5f-4778-9650-32d0570bc41a mr_regiontozone-demosourcevm-ip_6af03f1f-eae8-4541-83f5-97a2506cfc3e mr_regiontozone-demosourcevm-nsg_98d68420-d7ff-4e2d-b758-25a6df80fca7 mr_nrms-timkbo3hy3nnmregiontozone-demosourcevm-vnet_f474c880-4823-4ed3-b761-96df6500f6a3
Чтобы удалить ресурсы из коллекции ресурсов, выполните следующие инструкции.
Зоны доступности SKU виртуальной машины, квоты и проверки емкости
Azure предоставляет рекомендации, если выбранная зона доступности не имеет номера SKU виртуальной машины или если недостаточно квоты или емкости. Ниже приведены некоторые примеры этих рекомендаций и действия, которые следует предпринять, если номер SKU виртуальной машины недоступен.
Номер SKU виртуальной машины недоступен
Если размер Standard_DC1ds_v3
исходной виртуальной машины недоступен в выбранной зоне 1
доступности.
Рекомендуемое действие. Выберите другой размер виртуальной машины в одной зоне доступности или выберите другую зону доступности с соответствующим рекомендуемыми размерами виртуальной машины.
Рекомендации.
- Номер SKU: Standard_DC1ds_v3, Зоны: [ 2 ]
- Номер SKU: Standard_DC2ds_v3, Зоны: [ 2 ]
- Номер SKU: Standard_DC4ds_v3, Зоны: [ 2 ]
- Номер SKU: Standard_DC1s_v3, Зоны: [ 2 ]
- Номер SKU: Standard_D2ds_v5, Зоны: [ 2, 3 ]
- Номер SKU: Standard_D2as_v4, Зоны: [ 1, 2, 3 ]
- Номер SKU: Standard_D2s_v3, Зоны: [ 1, 2, 3 ]
- Номер SKU: Standard_D2as_v5, Зоны: [ 1, 2, 3 ]
- Номер SKU: Standard_D2s_v5, Зоны: [ 2, 3 ]
Рекомендации по емкости
Рекомендации по емкости для текущего размера Standard_DC1ds_v3
виртуальной машины выбора в выбранной зоне 1
доступности.
Рекомендуемое действие. Чтобы повысить вероятность успешного развертывания, Azure определила другие рекомендуемые размеры и зоны виртуальных машин. Чтобы легко развернуть, выберите другой размер виртуальной машины в одной зоне доступности или другую зону доступности с соответствующим размером виртуальной машины.
Рекомендации.
- Номер SKU: Standard_DC1ds_v3, Зоны: [ 2 ]
- Номер SKU: Standard_DC2ds_v3, Зоны: [ 2 ]
- Номер SKU: Standard_DC4ds_v3, Зоны: [ 2 ]
- Номер SKU: Standard_DC1s_v3, Зоны: [ 2 ]
- Номер SKU: Standard_D2ds_v5, Зоны: [ 2, 3 ]
- Номер SKU: Standard_D2as_v4, Зоны: [ 1, 2, 3 ]
- Номер SKU: Standard_D2s_v3, Зоны: [ 1, 2, 3 ]
- Номер SKU: Standard_D2as_v5, Зоны: [ 1, 2, 3 ]
- Номер SKU: Standard_D2s_v5, Зоны: [ 2, 3 ]
Решение рекомендаций
Чтобы устранить ситуации, когда SKU виртуальной машины не найден или возникла проблема с емкостью, обновите ресурс перемещения и снова запустите разрешение. Ниже приведен пример для справки:
Обновите объект ресурса виртуальной машины в новую зону или номер SKU согласно рекомендациям.
$targetResourceSettingsObj.TargetVmSize = "Standard_DC1ds_v3" $targetResourceSettingsObj.TargetAvailabilityZone = "3"
Обновление ресурса перемещения виртуальной машины
Add-AzResourceMoverMoveResource -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" -SourceId "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.Compute/virtualMachines/vmtwo" -Name "demoVM-MoveResource2" -ResourceSetting $targetResourceSettingsObj
Снова выполните разрешение
Resolve-AzResourceMoverMoveCollectionDependency -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC"
Недостаточно квоты
Выбранная виртуальная машина не может быть перемещена в зону доступности из-за нехватки квоты.
Рекомендуемое действие: найдена достаточная квота. Ознакомьтесь со ссылкой и обратитесь в службу поддержки.
Начало перемещения ресурсов виртуальной машины
Invoke-AzResourceMoverInitiateMove -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" -MoveResource $("demoVM-MoveResource") <remove-MoveResourceInputType "MoveResourceId">
Выходные данные
AdditionalInfo :
Code :
Detail :
EndTime : 9/8/2023 7:07:58 AM
Id : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG/providers/Microsoft.Migrate/moveCollections/RegionToZone-DemoMC/o
perations/d3e06ac3-a961-4045-8301-aee7f6911160
Message :
Name : d3e06ac3-a961-4045-8301-aee7f6911160
Property : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Any
StartTime : 9/8/2023 7:01:31 AM
Status : Succeeded
Commit
После первоначального перемещения необходимо зафиксировать или отменить его. Фиксация завершает перемещение в целевой регион.
Зафиксируйте перемещение следующим образом:
Invoke-AzResourceMoverCommit "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" -MoveResource $("demoVM-MoveResource")
Выходные данные:
AdditionalInfo :
Code :
Detail :
EndTime : 9/22/2023 5:26:55 AM
Id : /subscriptions/e80eb9fa-c996-4435-aa32-5af6f3d3077c/resourceGroups/RegionToZone-DemoMCRG/providers/Microsoft.Migrate/moveCollections/RegionToZone-DemoMC/operations/35dd1d93-ba70-4dc9-a17f-7d8ba48678d8
Message :
Name : 35dd1d93-ba70-4dc9-a17f-7d8ba48678d8
Property : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Any
StartTime : 9/22/2023 5:26:54 AM
Status : Succeeded
Удаление ресурса
Вы можете удалить один ресурс или несколько ресурсов из следующего MoveCollection
командлета:
Получите список ресурсов перемещения, добавленных в коллекцию перемещения:
$list = Get-AzResourceMoverMoveResource -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"
Удалите найденные ресурсы перемещения:
Invoke-AzResourceMoverBulkRemove -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>" -MoveResource $($list.Name)
Удалите коллекцию перемещения:
Remove-AzResourceMoverMoveCollection -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"
Примечание.
Если вы наблюдаете проблемы с авторизацией управляемых удостоверений, повторно включите доступ к управляемым удостоверениям, выполнив эти действия еще раз.
Удаление исходных региональных виртуальных машин
После фиксации перемещения и убедитесь, что ресурсы работают должным образом в целевом регионе, можно удалить каждый исходный ресурс с помощью:
Следующие шаги
Узнайте, как переместить виртуальные машины Azure с одного экземпляра из региона в зональную конфигурацию с помощью портала.