Mover uma máquina virtual em uma zona de disponibilidade 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.
Importante
A movimentação regional para zonal da configuração de VM(s) de instância única está atualmente em Visualização Pública.
Pré-requisitos
Verifique os seguintes requisitos:
Requisito | Descrição |
---|---|
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 | Valor |
---|---|
ID da subscrição | ID da subscrição |
Mover região | E.U.A. Leste |
Grupo de recursos (retenção de metadados para coleta de movimentação) | 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 parâmetro deve ser definido como RegionToZone e MoveRegion
o parâmetro deve ser definido como o MoveType
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, VM key vault 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 adicionadas têm dependências em 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 : 9/8/2023 6:52:14 AM Id : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG/providers/Microsoft.Migrate/moveCollections/RegionToZone-DemoMC/o perations/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.
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
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.