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
Registre o provedor de recursos Microsoft.Migrate, para que o recurso MoveCollection possa ser criado, da seguinte maneira:
Register-AzResourceProvider -ProviderNamespace Microsoft.Migrate
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.
Recupere detalhes de identidade do objeto MoveCollection.
$moveCollection = Get-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC" -ResourceGroupName "RegionToZone-DemoMCRG" $identityPrincipalId = $moveCollection.IdentityPrincipalId
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.
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
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:
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"
Copie a configuração de recurso para um objeto de configuração de recurso de destino.
$TargetResourceSettingObj = $moveResourceObj.ResourceSetting
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"
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.
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
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
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 1
de 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 1
de 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:
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"
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
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:
Obtenha uma lista dos recursos de movimentação que são adicionados à coleção de movimentos:
$list = Get-AzResourceMoverMoveResource -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"
Remova os recursos de movimentação encontrados:
Invoke-AzResourceMoverBulkRemove -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>" -MoveResource $($list.Name)
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.