Compartilhar via


Mover uma máquina virtual em uma zona de disponibilidade utilizando o Azure PowerShell e a CLI

Este artigo detalha o uso de cmdlets do Azure PowerShell e da CLI para mover VMs de instância única do Azure de zonas de disponibilidade regionais para zonais. Uma zona de disponibilidade é uma zona fisicamente separada em uma região do Azure. Use zonas de disponibilidade para proteger seus aplicativos e dados de uma improvável falha ou perda de um datacenter inteiro.

Para usar uma zona de disponibilidade, crie a máquina virtual em uma região do Azure com suporte.

Pré-requisitos

Verifique os seguintes requisitos antes de iniciar o processo de migração:

Requisito Descrição
Permissões de assinatura Verifique se você tem acesso de Proprietário na assinatura que contém os recursos que deseja mover.

A identidade gerenciada precisa dessas permissões:
– Permissão para gravar ou criar recursos na assinatura do usuário, disponível com a função de Colaborador.
– Permissão para criar atribuições de função. Normalmente, disponível com as funções Proprietário ou Administrador de Acesso de Usuário ou com uma função personalizada que tenha a permissão de gravação ou atribuições de função Microsoft.Authorization atribuída. Essa permissão não será necessária, se a identidade gerenciada do recurso de compartilhamento de dados já tiver acesso concedida ao armazenamento de dados do Azure.
Saiba mais sobre as funções do Azure.
Suporte à VM Examine as regiões com suporte.

- Verifique as configurações de computação, armazenamento e rede compatíveis.
Status de integridade da VM As VMs que você deseja mover precisam estar em um estado íntegro antes de tentar a transferência de recursos zonal. Verifique se todas as reinicializações pendentes e atualizações obrigatórias estão concluídas e se a máquina virtual está funcionando e está em um estado íntegro antes de tentar a transferência de recursos zonal da VM.

Examinar os requisitos do PowerShell e da CLI

A maioria das operações de transferência de recursos é a mesma para o portal do Microsoft Azure e para o PowerShell, com algumas exceções.

Operação Portal PowerShell/CLI
Criar uma coleção de transferência de recursos Uma coleção de transferência de recursos (uma lista de todas as VMs regionais que você está movendo) é criada automaticamente. As permissões de identidade necessárias são atribuídas no back-end pelo portal. Você pode usar cmdlets do PowerShell ou cmdlets da CLI para:
– Atribuir uma identidade gerenciada à coleção.
– Adicionar VMs regionais à coleção.
Operações de transferência de recursos Validar as etapas e validar as alterações de configuração do Usuário. Iniciar a transferência de recursos inicia o processo de transferência de recursos e cria uma cópia da VM de origem na zona de destino. Isso também finaliza a transferência de recursos da VM recém-criada na zona de destino. Cmdlets do PowerShell ou cmdlets da CLI para:
– Adicionar VMs regionais à coleção
– Resolver dependências
– Realizar a transferência de recursos.
– Confirmar a transferência de recursos.

Valores de exemplo

Estamos usando estes valores em nossos exemplos de script:

Configuração Valor
ID da assinatura id da assinatura
Mover região Leste dos EUA
Grupo de recursos (contendo metadados para a coleção de transferência de recursos) RegionToZone-DemoMCRG
Nome da coleção de transferência de recursos RegionToZone-DemoMC
Local da coleção de transferência de recursos eastus2euap
IdentityType SystemAssigned
Nome da VM demoVM-MoveResource
Tipo de coleção de transferência de recursos RegionToZone

Entrar no Azure

Entre na sua assinatura do Azure com o comando Connect-AzAccount e siga as instruções na tela.

Connect-AzAccount –Subscription "<subscription-id>"

Configurar a coleção de transferência de recursos

O objeto MoveCollection armazena metadados e informações de configuração sobre os recursos que você deseja transferir. Para configurar uma coleção de transferência de recursos, faça o seguinte:

  • Crie um grupo de recursos para a coleção de transferência de recursos.
  • Crie um provedor de serviço para a assinatura, de modo que o recurso MoveCollection possa ser criado.
  • Crie o objeto MoveCollection com a identidade gerenciada. Para que o objeto MoveCollection acesse a assinatura na qual o serviço Resource Mover está localizado, ele precisa de uma identidade gerenciada atribuída pelo sistema (anteriormente conhecida como MSI (identidade de serviço gerenciada)) que seja confiável para a assinatura.
  • Permita à identidade gerenciada acesso à assinatura do Resource Mover.

Criar o grupo de recursos

Use o cmdlet a seguir para criar um grupo de recursos para os metadados de coleção de transferência de recursos e informações de configuração com New-AzResourceGroup. Um grupo de recursos é um contêiner lógico no qual os recursos do Azure são implantados e gerenciados.

New-AzResourceGroup -Name "RegionToZone-DemoMCRG" -Location "EastUS"

Saída:

A saída mostra que o disco gerenciado está na mesma região da disponibilidade da VM:

ResourceGroupName : RegionToZone-DemoMCRG
Location          : eastus
ProvisioningState : Succeeded
Tags              :
                    Name     Value
                    =======  ========
                    Created  20230908

ResourceId        : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG

Registre o provedor de recursos

  1. Registre o provedor de recursos Microsoft.Migrate para que o recurso MoveCollection possa ser criado, conforme demonstrado abaixo:

    Register-AzResourceProvider -ProviderNamespace Microsoft.Migrate
    
  2. Aguarde o registro:

    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."
    }
    

Criar um objeto MoveCollection

Crie um objeto MoveCollection e atribua uma identidade gerenciada a ele, da seguinte maneira:

New-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC"  -ResourceGroupName "RegionToZone-DemoMCRG" -MoveRegion "eastus" -Location "eastus2euap" -IdentityType "SystemAssigned" -MoveType "RegionToZone"

Saída:

Etag                                   Location    Name
----                                   --------    ----
"3a00c441-0000-3400-0000-64fac1b30000" eastus2euap RegionToZone-DemoMC

Observação

Para transferência de recursos de regional a zonal, o parâmetro MoveType deve ser definido como RegionToZone e o parâmetro MoveRegion deve ser definido como o local onde os recursos em movimento zonal residem. Verifique se os parâmetros SourceRegion e TargetRegion não são necessários e devem ser definidos como nulos.

Permitir acesso à identidade gerenciada

Permita à identidade gerenciada acesso à assinatura do Resource Mover, conforme demonstrado a seguir. Você precisa ser o proprietário da assinatura.

  1. Recupere detalhes de identidade do objeto MoveCollection.

    $moveCollection = Get-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC" -ResourceGroupName "RegionToZone-DemoMCRG"
    $identityPrincipalId = $moveCollection.IdentityPrincipalId
    
  2. Atribua as funções necessárias à identidade para que o Azure Resource Mover possa acessar a sua assinatura para ajudar a transferir recursos. Examine a lista de permissões necessárias para a movimentação.

    New-AzRoleAssignment -ObjectId $identityPrincipalId -RoleDefinitionName Contributor -Scope "/subscriptions/<subscription-id>""
    New-AzRoleAssignment -ObjectId $identityPrincipalId -RoleDefinitionName "User Access Administrator" -Scope "/subscriptions/<subscription-id>"
    

Adicionar VMs regionais à coleção de transferência de recursos

Recupere as IDs para os recursos de origem existentes que você deseja transferir. Crie o objeto de configurações de recurso de destino e adicione recursos à coleção de transferência de recursos.

Observação

Os recursos adicionados a uma coleção de transferência de recursos precisam estar na mesma assinatura, mas podem estar em grupos de recursos diferentes.

  1. Crie um objeto de configuração de recurso de destino da seguinte maneira:

    $targetResourceSettingsObj = New-Object Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Api20230801.VirtualMachineResourceSettings
    $targetResourceSettingsObj.ResourceType = "Microsoft.Compute/virtualMachines"
    $targetResourceSettingsObj.TargetResourceName = "RegionToZone-demoTargetVm"
    $targetResourceSettingsObj.TargetAvailabilityZone = "2"
    

    Saída

    ResourceType                      TargetResourceGroupName TargetResourceName        TargetAvailabilitySetId TargetAvailabilityZone TargetVMSize UserManagedIdentity
    ------------                      ----------------------- ------------------        ----------------------- ---------------------- ------------ -------------------
    Microsoft.Compute/virtualMachines                         RegionToZone-demoTargetVm                         2
    
  2. Adicionar recursos

    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
    

    Saída

    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                              :
    

Modificar configurações

É possível modificar as configurações de destino durante a transferência de VMs do Azure e de recursos associados. É recomendável que você altere as configurações de destino apenas antes de validar a coleção de transferência de recursos.

As configurações que você pode modificar são:

  • Configurações da máquina virtual: grupo de recursos, nome da VM, zona de disponibilidade da VM, SKU da VM, cofre de chaves da VM e conjunto de criptografia de disco.
  • Configurações de recurso de rede: para adaptadores de rede, redes virtuais (VNets/) e grupos de segurança de rede/adaptadores de rede, você pode:
    • Usar um recurso de rede existente na região de destino.
    • Criar um recurso com um nome diferente.
  • IP público/Load Balancer: SKU e zona

Modifique as configurações da seguinte maneira:

  1. Recupere o recurso de transferência do qual você quer editar as propriedades. Por exemplo, para recuperar uma VM, execute:

    $moveResourceObj = Get-AzResourceMoverMoveResource -MoveCollectionName " RegionToZone-DemoMCRG " -ResourceGroupName " RegionToZone-DemoMC " -Name "PSDemoVM"
    
  2. Copie a configuração de recurso para um objeto de configuração de recurso de destino.

    $TargetResourceSettingObj = $moveResourceObj.ResourceSetting
    
  3. Defina o parâmetro no objeto de configuração de recurso de destino. Por exemplo, para alterar o nome da VM de destino:

    $TargetResourceSettingObj.TargetResourceName="PSDemoVM-target"
    
  4. Atualize as configurações de destino do recurso de transferência. Neste exemplo, mudamos o nome da VM de PSDemoVM para PSDemoVMTarget.

    Update-AzResourceMoverMoveResource -ResourceGroupName " RegionToZone-DemoMCRG " -MoveCollectionName " RegionToZone-DemoMC -SourceId "/subscriptions/<Subscription-d>/resourceGroups/PSDemoRM/providers/Microsoft.Compute/virtualMachines/PSDemoVM" -Name "PSDemoVM" -ResourceSetting $TargetResourceSettingObj
    

Resolver dependências

Verifique se as VMs regionais que você adicionou têm dependências de outros recursos e adicione-os conforme necessário.

  1. Resolva as dependências da seguinte maneira:

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

    Saída (quando há dependências)

    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. Para obter uma lista de recursos adicionados à coleção de transferência de recursos:

    $list = Get-AzResourceMoverMoveResource -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" $list.Name
    

    Saída:

    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. Para remover recursos da coleção de recursos, siga estas instruções.

Validações de capacidade, cota e SKU de Zonas de Disponibilidade

O Azure fornece recomendações quando a Zona de Disponibilidade selecionada não tem a SKU da máquina virtual ou quando não há cota ou capacidade suficiente disponível. Aqui estão alguns exemplos dessas recomendações e as ações que devem ser executadas se a SKU da máquina virtual não estiver disponível.

SKU de VM não disponível

Quando o tamanho da máquina virtual de origem Standard_DC1ds_v3 não está disponível na zona de disponibilidade 1 selecionada.

Ação recomendada: escolha um tamanho de máquina virtual diferente na mesma zona de disponibilidade ou selecione outra zona de disponibilidade com tamanho de VM recomendado correspondente.

Recomendações:

  • SKU: Standard_DC1ds_v3, Zonas: [ 2 ]
  • SKU: Standard_DC2ds_v3, Zonas: [ 2 ]
  • SKU: Standard_DC4ds_v3, Zonas: [ 2 ]
  • SKU: Standard_DC1s_v3, Zonas: [ 2 ]
  • SKU: Standard_D2ds_v5, Zonas: [ 2, 3 ]
  • SKU: Standard_D2as_v4, Zonas: [ 1, 2, 3 ]
  • SKU: Standard_D2s_v3, Zonas: [ 1, 2, 3 ]
  • SKU: Standard_D2as_v5, Zonas: [ 1, 2, 3 ]
  • SKU: Standard_D2s_v5, Zonas: [ 2, 3 ]

Recomendações de capacidade

Recomendações de capacidade para o tamanho Standard_DC1ds_v3 da máquina virtual de seleção atual na zona de disponibilidade 1 selecionada.

Ação recomendada: para aumentar a probabilidade de uma implantação bem-sucedida, o Azure identificou outros tamanhos e zonas de máquinas virtuais recomendados. Para implantar sem complicações, escolha um tamanho de VM diferente na mesma zona de disponibilidade ou em uma zona de disponibilidade diferente com o tamanho da máquina virtual correspondente.

Recomendações:

  • SKU: Standard_DC1ds_v3, Zonas: [ 2 ]
  • SKU: Standard_DC2ds_v3, Zonas: [ 2 ]
  • SKU: Standard_DC4ds_v3, Zonas: [ 2 ]
  • SKU: Standard_DC1s_v3, Zonas: [ 2 ]
  • SKU: Standard_D2ds_v5, Zonas: [ 2, 3 ]
  • SKU: Standard_D2as_v4, Zonas: [ 1, 2, 3 ]
  • SKU: Standard_D2s_v3, Zonas: [ 1, 2, 3 ]
  • SKU: Standard_D2as_v5, Zonas: [ 1, 2, 3 ]
  • SKU: Standard_D2s_v5, Zonas: [ 2, 3 ]

Como abordar as recomendações

Para resolver as situações em que a SKU da VM não foi encontrada ou há um problema de capacidade, atualize o recurso de migração e execute a resolução novamente. Aqui está um exemplo de referência:

  1. Atualize o objeto do recurso de movimentação de máquina virtual para uma nova Zona ou SKU de acordo com as recomendações.

    $targetResourceSettingsObj.TargetVmSize = "Standard_DC1ds_v3"
    $targetResourceSettingsObj.TargetAvailabilityZone = "3"
    
  2. Atualizar o recurso de movimentação de máquina virtual

    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. Executar a resolução novamente

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

Cota insuficiente

A máquina virtual selecionada não pode ser movida para a zona de disponibilidade devido à cota insuficiente.

Ação recomendada: cota suficiente encontrada. Consulte o link e entre em contato com o suporte.

Iniciar a transferência de recursos da VM

Invoke-AzResourceMoverInitiateMove -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" -MoveResource $("demoVM-MoveResource") -MoveResourceInputType "MoveResourceId"

Saída

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

Confirmar

Após a movimentação inicial, você precisa confirmar a movimentação ou descartá-la. Confirmar conclui a transferência para a região de destino.

Confirme a transferência da seguinte maneira:

Invoke-AzResourceMover-VMZonalMoveCommit -ResourceGroupName "RG-MoveCollection-demoRMS" -MoveCollectionName "PS-centralus-westcentralus-demoRMS" -MoveResource $('psdemovm111', 'PSDemoRM-vnet','PSDemoVM-nsg', ‘PSDemoVM’) -MoveResourceInputType "MoveResourceId"

Saída:

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 

Remover um recurso

Você pode remover um único recurso ou vários recursos de um MoveCollection usando os seguintes cmdlets:

  1. Obter uma lista dos recursos de movimentação que foram adicionados à coleção de transferência de recursos: $list = Get-AzResourceMoverMoveResource -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"

  2. Remover os recursos de movimentação encontrados: Invoke-AzResourceMoverBulkRemove -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>" -MoveResource $($list.Name)

  3. Remover coleção de transferência de recursos: Remove-AzResourceMoverMoveCollection -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"

Observação

Se você observar problemas de autorização de identidades gerenciadas, habilite novamente o acesso às identidades gerenciadas seguindo estas etapas.

Excluir VMs regionais de origem

Depois de confirmar a movimentação e verificar se os recursos funcionam conforme o esperado na região de destino, você pode excluir cada recurso de origem usando:

Próximas etapas

Saiba como mover VMs do Azure de instância única de configuração regional para zonal por meio do portal.