Поделиться через


Перемещение виртуальной машины в зоне доступности с помощью 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 и следуйте инструкциям на экране.

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

Регистрация поставщика ресурсов

  1. Зарегистрируйте поставщик ресурсов Microsoft.Migrate, чтобы можно было создать ресурс MoveCollection, следующим образом:

    Register-AzResourceProvider -ProviderNamespace Microsoft.Migrate
    
  2. Дождитесь регистрации:

    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 следующим образом. Вы должны быть владельцем подписки.

  1. Получите сведения об удостоверении из объекта MoveCollection.

    $moveCollection = Get-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC" -ResourceGroupName "RegionToZone-DemoMCRG"
    $identityPrincipalId = $moveCollection.IdentityPrincipalId
    
  2. Назначьте удостоверению необходимые роли, чтобы служба 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>"
    

Добавление региональных виртуальных машин в коллекцию перемещения

Извлеките идентификаторы для существующих исходных ресурсов, которые требуется переместить. Создайте объект параметров целевого ресурса, а затем добавьте ресурсы в коллекцию перемещения.

Примечание.

Ресурсы, добавленные в коллекцию перемещения, должны находиться в одной подписке, но могут находиться в разных группах ресурсов.

  1. Создайте объект параметра целевого ресурса следующим образом:

    $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
    
  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 и зона

Измените параметры следующим образом:

  1. Извлеките ресурс перемещения, для которого необходимо изменить свойства. Например, чтобы извлечь виртуальную машину, выполните следующие действия:

    $moveResourceObj = Get-AzResourceMoverMoveResource -MoveCollectionName " RegionToZone-DemoMCRG " -ResourceGroupName " RegionToZone-DemoMC " -Name "PSDemoVM"
    
  2. Скопируйте параметр ресурса в целевой объект параметра ресурса.

    $TargetResourceSettingObj = $moveResourceObj.ResourceSetting
    
  3. Задайте параметр в целевом объекте параметра ресурса. Например, чтобы изменить имя виртуальной машины назначения, выполните следующие действия:

    $TargetResourceSettingObj.TargetResourceName="PSDemoVM-target"
    
  4. Обновите параметры назначения ресурса перемещения. В этом примере мы меняем имя виртуальной машины с 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
    

Устранение ошибок, связанных с зависимостями

Проверьте, имеют ли добавленные региональные виртуальные машины какие-либо зависимости от других ресурсов и при необходимости добавьте.

  1. Устраните зависимости следующим образом:

    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
    
  2. Чтобы получить список ресурсов, добавленных в коллекцию перемещения, выполните указанные ниже действия.

    $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
    
  3. Чтобы удалить ресурсы из коллекции ресурсов, выполните следующие инструкции.

Зоны доступности 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 виртуальной машины не найден или возникла проблема с емкостью, обновите ресурс перемещения и снова запустите разрешение. Ниже приведен пример для справки:

  1. Обновите объект ресурса виртуальной машины в новую зону или номер SKU согласно рекомендациям.

    $targetResourceSettingsObj.TargetVmSize = "Standard_DC1ds_v3"
    $targetResourceSettingsObj.TargetAvailabilityZone = "3"
    
  2. Обновление ресурса перемещения виртуальной машины

    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
    
  3. Снова выполните разрешение

    Resolve-AzResourceMoverMoveCollectionDependency -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC"

Недостаточно квоты

Выбранная виртуальная машина не может быть перемещена в зону доступности из-за нехватки квоты.

Рекомендуемое действие: найдена достаточная квота. Ознакомьтесь со ссылкой и обратитесь в службу поддержки.

Начало перемещения ресурсов виртуальной машины

Invoke-AzResourceMoverInitiateMove -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" -MoveResource $("demoVM-MoveResource") -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-AzResourceMover-VMZonalMoveCommit -ResourceGroupName "RG-MoveCollection-demoRMS" -MoveCollectionName "PS-centralus-westcentralus-demoRMS" -MoveResource $('psdemovm111', 'PSDemoRM-vnet','PSDemoVM-nsg', ‘PSDemoVM’) -MoveResourceInputType "MoveResourceId"

Выходные данные:

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 командлета:

  1. Получите список ресурсов перемещения, добавленных в коллекцию перемещения: $list = Get-AzResourceMoverMoveResource -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"

  2. Удалите найденные ресурсы перемещения: Invoke-AzResourceMoverBulkRemove -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>" -MoveResource $($list.Name)

  3. Удалите коллекцию перемещения: Remove-AzResourceMoverMoveCollection -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"

Примечание.

Если вы наблюдаете проблемы с авторизацией управляемых удостоверений, повторно включите доступ к управляемым удостоверениям, выполнив эти действия еще раз.

Удаление исходных региональных виртуальных машин

После фиксации перемещения и убедитесь, что ресурсы работают должным образом в целевом регионе, можно удалить каждый исходный ресурс с помощью:

Следующие шаги

Узнайте, как переместить виртуальные машины Azure с одного экземпляра из региона в зональную конфигурацию с помощью портала.