Partilhar via


Mover uma máquina virtual da zona de disponibilidade regional para a zona de disponibilidade zonal usando o Azure PowerShell e a CLI

Este artigo detalha o uso dos 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 separada fisicamente numa região do Azure. Use zonas de disponibilidade para proteger seus aplicativos e dados de uma falha ou perda improvável de um data center inteiro.

Para utilizar uma zona de disponibilidade, crie a máquina virtual numa região suportada do Azure.

Pré-requisitos

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

Requisito Description
Permissões de subscrição Certifique-se de que tem acesso de Proprietário na subscrição que contém os recursos que pretende mover.

A identidade gerenciada precisa destas permissões:
- Permissão para escrever 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 de Proprietário ou Administrador de Acesso de Usuário ou com uma função personalizada que tenha as atribuições de função ou permissão Microsoft.Authorization de gravação atribuídas. Esta permissão não será necessária se a identidade gerida do recurso de partilha de dados já tiver acesso concedido ao arquivo de dados do Azure.
Saiba mais sobre as funções do Azure.
Suporte a VM Analise as regiões suportadas.

- Verifique as configurações de computação, armazenamento e rede suportadas.
Estado de funcionamento da VM As VMs que você deseja mover devem estar em um estado íntegro antes de tentar a movimentação 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 em um estado íntegro antes de tentar a movimentação zonal da VM.

Revise os requisitos do PowerShell e da CLI

A maioria das operações de recursos de movimentação são as mesmas, seja usando o portal do Azure, o PowerShell ou a CLI, com algumas exceções.

Operação Portal PowerShell/CLI
Criar uma coleção de movimentação Uma coleção move (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:
- Atribua uma identidade gerenciada à coleção.
- Adicione VMs regionais à coleção.
Operações de movimentação de recursos Valida etapas e valida as alterações de configuração do usuário . Iniciar movimentação , inicia o processo de movimentação e cria uma cópia da VM de origem na zona de destino. Ele também finaliza a movimentação 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
- Execute o movimento.
- Comprometa a mudança.

Valores da amostra

Usamos esses valores em nossos exemplos de script:

Definição Value
ID de Subscrição ID da subscrição
Mover região E.U.A. Leste
Grupo de recursos (retenção de metadados para coleta de movimento) RegionToZone-DemoMCRG
Mover nome da coleção RegionToZone-DemoMC
Localização da coleção move eastus2euap
Tipo de identidade SystemAssigned
o nome da VM demoVM-MoveResource
Tipo de movimento RegiãoToZone

Iniciar sessão no Azure

Inicie sessão na sua subscrição do Azure com o comando Connect-AzAccount e siga as instruções no ecrã.

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

Configurar a coleção move

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

  • Crie um grupo de recursos para a coleção move.
  • Registre o provedor de serviços na assinatura, para que o recurso MoveCollection possa ser criado.
  • Crie o objeto MoveCollection com 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 ao sistema (anteriormente conhecida como Managed Service Identity (MSI)) confiável pela assinatura.
  • Conceda acesso à assinatura do Resource Mover para a identidade gerenciada.

Criar o grupo de recursos

Use o cmdlet a seguir para criar um grupo de recursos para mover metadados de coleção e informações de configuração com New-AzResourceGroup. Um grupo de recursos é um contentor lógico no qual os recursos do Azure são implementados e geridos.

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

Saída:

O resultado mostra que o disco gerido está na mesma zona de disponibilidade que a VM:

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

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

Registar o fornecedor de recursos

  1. Registre o provedor de recursos Microsoft.Migrate, para que o recurso MoveCollection possa ser criado, da seguinte maneira:

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

    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

Nota

Para a movimentação regional para zonal, o MoveType parâmetro deve ser definido como RegionToZone e MoveRegion o parâmetro deve ser definido como o local onde residem os recursos que passam pela movimentação zonal. Certifique-se de que os parâmetros SourceRegion não TargetRegion são necessários e devem ser definidos como null.

Conceder acesso à identidade gerenciada

Conceda à identidade gerenciada acesso à assinatura do Resource Mover da seguinte maneira. Tem de ser o proprietário da subscrição.

  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 sua assinatura para ajudar a mover recursos. Revise a lista de permissões necessárias para a mudança.

    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 movimentação

Recupere as IDs dos recursos de origem existentes que você deseja mover. Crie o objeto de configurações de recursos de destino e, em seguida, adicione recursos à coleção move.

Nota

Os recursos adicionados a uma coleção de movimentação devem estar na mesma assinatura, mas podem estar em grupos de recursos diferentes.

  1. Crie o objeto de configuração de recursos 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

Você pode modificar as configurações de destino ao mover VMs do Azure e recursos associados. Recomendamos que você altere apenas as configurações de destino antes de validar a coleção de movimentação.

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, VM SKU, COFRE DE CHAVE VM e conjunto de criptografia de disco.
  • Configurações de recursos de rede: Para interfaces de rede, redes virtuais (VNets/) e grupos de segurança de rede/interfaces de rede, você pode:
    • Use um recurso de rede existente na região de destino.
    • Crie um novo recurso com um nome diferente.
  • IP público/balanceador de carga: SKU e zona

Modifique as configurações da seguinte maneira:

  1. Recupere o recurso de movimentação cujas propriedades você deseja editar. Por exemplo, para recuperar uma execução de VM:

    $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 recursos 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 movimentação. Neste exemplo, alteramos 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 alguma dependência de outros recursos e adicione conforme necessário.

  1. Resolva dependências da seguinte maneira:

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

    Saída (quando existem 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 move:

    $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.

Zonas de disponibilidade VM SKU, cota e validações de capacidade

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á Quota ou Capacidade suficiente disponível. Aqui estão alguns exemplos dessas recomendações e as ações que devem ser tomadas se a SKU da máquina virtual não estiver disponível.

VM SKU não disponível

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

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

Recomendações:

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

Recomendações de capacidade

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

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

Recomendações:

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

Responda às 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 movimentação e execute resolver novamente. Aqui está um exemplo para referência:

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

    $targetResourceSettingsObj.TargetVmSize = "Standard_DC1ds_v3"
    $targetResourceSettingsObj.TargetAvailabilityZone = "3"
    
  2. Atualizar 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 resolver novamente

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

Quota insuficiente

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

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

Iniciar a movimentação de recursos de 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

Consolidação

Após o movimento inicial, você deve confirmar o movimento ou descartá-lo. Commit conclui a mudança para a região de destino.

Confirme a mudança da seguinte forma:

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. Obtenha uma lista dos recursos de movimentação que são adicionados à coleção de movimentos: $list = Get-AzResourceMoverMoveResource -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"

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

  3. Remova a coleção move: Remove-AzResourceMoverMoveCollection -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"

Nota

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

Excluir VMs regionais de origem

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

Próximos passos

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