Spostare una macchina virtuale in una zona di disponibilità usando Azure PowerShell e l'interfaccia della riga di comando
Questo articolo illustra in dettaglio l'uso dei cmdlet di Azure PowerShell e dell'interfaccia della riga di comando per spostare le macchine virtuali a istanza singola di Azure da aree a zone di disponibilità. Una zona di disponibilità è una zona fisicamente separata in un'area di Azure. Usare le zone di disponibilità per proteggere le app e i dati da un errore improbabile o da una perdita di un intero data center.
Per usare una zona di disponibilità, creare la macchina virtuale in un'area di Azure supportata.
Importante
Lo spostamento a livello di area delle macchine virtuali a istanza singola è attualmente disponibile in anteprima pubblica.
Prerequisiti
Verificare i requisiti seguenti:
Requisito | Descrizione |
---|---|
Autorizzazioni per le sottoscrizioni | Assicurarsi di disporre dell'accesso proprietario alla sottoscrizione contenente le risorse da spostare. Per l'identità gestita sono necessarie queste autorizzazioni: - Autorizzazione per scrivere o creare risorse nella sottoscrizione utente, disponibile con il ruolo Collaboratore. - Autorizzazione per creare assegnazioni di ruolo. In genere disponibile con i ruoli Proprietario o Accesso utente Amministrazione istrator o con un ruolo personalizzato con le assegnazioni di ruolo o l'autorizzazione Microsoft.Authorization di scrittura assegnata. Questa autorizzazione non è necessaria se all'identità gestita della risorsa di condivisione dati è già stato concesso l'accesso all'archivio dati di Azure. Altre informazioni sui ruoli di Azure. |
Supporto per macchine virtuali | Esaminare le aree supportate. - Controllare le impostazioni di calcolo, archiviazione e rete supportate. |
Stato di integrità della macchina virtuale | Le macchine virtuali da spostare devono essere in uno stato integro prima di tentare lo spostamento di zona. Assicurarsi che tutti i riavvii in sospeso e gli aggiornamenti obbligatori siano completi e che la macchina virtuale funzioni e si trovi in uno stato integro prima di tentare lo spostamento di zona della macchina virtuale. |
Esaminare i requisiti di PowerShell e dell'interfaccia della riga di comando
La maggior parte delle operazioni di spostamento delle risorse è identica se si usano le portale di Azure o PowerShell o l'interfaccia della riga di comando, con un paio di eccezioni.
Operazione | Portale | PowerShell/INTERFACCIA della riga di comando |
---|---|---|
Creare una raccolta di spostamento | Viene creata automaticamente una raccolta di spostamento (un elenco di tutte le macchine virtuali internazionali spostate). Le autorizzazioni di identità necessarie vengono assegnate nel back-end dal portale. | È possibile usare i cmdlet di PowerShell o i cmdlet dell'interfaccia della riga di comando per: - Assegnare un'identità gestita alla raccolta. - Aggiungere macchine virtuali a livello di area alla raccolta. |
Operazioni di spostamento delle risorse | Convalidare i passaggi e convalidare le modifiche all'impostazione utente . Avviare lo spostamento avvia il processo di spostamento e crea una copia della macchina virtuale di origine nella zona di destinazione. Finalizza anche lo spostamento della macchina virtuale appena creata nella zona di destinazione. | Cmdlet di PowerShell o cmdlet dell'interfaccia della riga di comando per: - Aggiungere macchine virtuali a livello di area alla raccolta - Risolvere le dipendenze - Eseguire lo spostamento. - Eseguire il commit dello spostamento. |
Valori di esempio
Questi valori vengono usati negli esempi di script:
Impostazione | Valore |
---|---|
ID sottoscrizione | subscription-id |
Sposta area | Stati Uniti orientali |
Gruppo di risorse (che contiene i metadati per la raccolta di spostamento) | RegionToZone-DemoMCRG |
Spostare il nome della raccolta | RegionToZone-DemoMC |
Posizione della raccolta di spostamento | eastus2euap |
Identitytype | SystemAssigned |
Nome della VM. | demoVM-MoveResource |
Sposta tipo | RegionToZone |
Accedere ad Azure
Accedere alla sottoscrizione di Azure con il comando Connect-AzAccount
e seguire le istruzioni visualizzate.
Connect-AzAccount –Subscription "<subscription-id>"
Configurare la raccolta di spostamento
L'oggetto MoveCollection archivia i metadati e le informazioni di configurazione sulle risorse da spostare. Per configurare una raccolta di spostamento, eseguire le operazioni seguenti:
- Creare un gruppo di risorse per la raccolta di spostamento.
- Registrare il provider di servizi nella sottoscrizione in modo che sia possibile creare la risorsa MoveCollection.
- Creare l'oggetto MoveCollection con identità gestita. Per consentire all'oggetto MoveCollection di accedere alla sottoscrizione in cui si trova il servizio Resource Mover, è necessaria un'identità gestita assegnata dal sistema (in precedenza nota come identità del servizio gestita) considerata attendibile dalla sottoscrizione.
- Concedere l'accesso alla sottoscrizione di Resource Mover per l'identità gestita.
Creare il gruppo di risorse
Usare il cmdlet seguente per creare un gruppo di risorse per i metadati e le informazioni di configurazione della raccolta di spostamento con New-AzResourceGroup. Un gruppo di risorse è un contenitore logico in cui vengono distribuite e gestite le risorse di Azure.
New-AzResourceGroup -Name "RegionToZone-DemoMCRG" -Location "EastUS"
Output:
L'output indica che il disco gestito si trova nella stessa zona di disponibilità della VM:
ResourceGroupName : RegionToZone-DemoMCRG
Location : eastus
ProvisioningState : Succeeded
Tags :
Name Value
======= ========
Created 20230908
ResourceId : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG
Registrare il provider di risorse
Registrare il provider di risorse Microsoft.Migrate in modo che sia possibile creare la risorsa MoveCollection, come indicato di seguito:
Register-AzResourceProvider -ProviderNamespace Microsoft.Migrate
Attendere la registrazione:
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." }
Creare un oggetto MoveCollection
Creare un oggetto MoveCollection e assegnarvi un'identità gestita, come indicato di seguito:
New-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC" -ResourceGroupName "RegionToZone-DemoMCRG" -MoveRegion "eastus" -Location "eastus2euap" -IdentityType "SystemAssigned" -MoveType "RegionToZone"
Output:
Etag Location Name
---- -------- ----
"3a00c441-0000-3400-0000-64fac1b30000" eastus2euap RegionToZone-DemoMC
Nota
Per lo spostamento a livello di area, il MoveType
parametro deve essere impostato come RegionToZone e MoveRegion
il parametro deve essere impostato come posizione in cui risiedono le risorse in fase di spostamento di zona. Assicurarsi che i SourceRegion
parametri e TargetRegion
non siano necessari e che sia impostato su Null.
Concedere l'accesso all'identità gestita
Concedere all'identità gestita l'accesso alla sottoscrizione di Resource Mover come indicato di seguito. È necessario essere il proprietario della sottoscrizione.
Recuperare i dettagli dell'identità dall'oggetto MoveCollection.
$moveCollection = Get-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC" -ResourceGroupName "RegionToZone-DemoMCRG" $identityPrincipalId = $moveCollection.IdentityPrincipalId
Assegnare i ruoli necessari all'identità in modo che Azure Resource Mover possa accedere alla sottoscrizione per facilitare lo spostamento delle risorse. Esaminare l'elenco delle autorizzazioni necessarie per lo spostamento.
New-AzRoleAssignment -ObjectId $identityPrincipalId -RoleDefinitionName Contributor -Scope "/subscriptions/<subscription-id>"" New-AzRoleAssignment -ObjectId $identityPrincipalId -RoleDefinitionName "User Access Administrator" -Scope "/subscriptions/<subscription-id>"
Aggiungere macchine virtuali a livello di area alla raccolta di spostamento
Recuperare gli ID per le risorse di origine esistenti da spostare. Creare l'oggetto impostazioni risorsa di destinazione, quindi aggiungere risorse alla raccolta di spostamento.
Nota
Le risorse aggiunte a una raccolta di spostamento devono trovarsi nella stessa sottoscrizione, ma possono trovarsi in gruppi di risorse diversi.
Creare l'oggetto impostazione risorsa di destinazione come indicato di seguito:
$targetResourceSettingsObj = New-Object Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Api20230801.VirtualMachineResourceSettings $targetResourceSettingsObj.ResourceType = "Microsoft.Compute/virtualMachines" $targetResourceSettingsObj.TargetResourceName = "RegionToZone-demoTargetVm" $targetResourceSettingsObj.TargetAvailabilityZone = "2"
Output
ResourceType TargetResourceGroupName TargetResourceName TargetAvailabilitySetId TargetAvailabilityZone TargetVMSize UserManagedIdentity ------------ ----------------------- ------------------ ----------------------- ---------------------- ------------ ------------------- Microsoft.Compute/virtualMachines RegionToZone-demoTargetVm 2
Aggiungere le risorse
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
Output
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 :
Modificare le impostazioni
È possibile modificare le impostazioni di destinazione quando si spostano macchine virtuali di Azure e le risorse associate. È consigliabile modificare le impostazioni di destinazione solo prima di convalidare la raccolta di spostamento.
Impostazioni che è possibile modificare sono:
- Impostazioni della macchina virtuale: gruppo di risorse, nome macchina virtuale, zona di disponibilità della macchina virtuale, SKU della macchina virtuale, insieme di credenziali delle chiavi della macchina virtuale e set di crittografia del disco.
- Impostazioni delle risorse di rete: per interfacce di rete, reti virtuali (reti virtuali/) e gruppi di sicurezza di rete/interfacce di rete, è possibile:
- Usare una risorsa di rete esistente nell'area di destinazione.
- Creare una nuova risorsa con un nome diverso.
- IP pubblico/Servizio di bilanciamento del carico: SKU e zona
Modificare le impostazioni come segue:
Recuperare la risorsa di spostamento per cui si desidera modificare le proprietà. Ad esempio, per recuperare un'esecuzione di macchina virtuale:
$moveResourceObj = Get-AzResourceMoverMoveResource -MoveCollectionName " RegionToZone-DemoMCRG " -ResourceGroupName " RegionToZone-DemoMC " -Name "PSDemoVM"
Copiare l'impostazione della risorsa in un oggetto impostazione risorsa di destinazione.
$TargetResourceSettingObj = $moveResourceObj.ResourceSetting
Impostare il parametro nell'oggetto impostazione della risorsa di destinazione. Ad esempio, per modificare il nome della macchina virtuale di destinazione:
$TargetResourceSettingObj.TargetResourceName="PSDemoVM-target"
Aggiornare le impostazioni di destinazione delle risorse di spostamento. In questo esempio il nome della macchina virtuale viene modificato da PSDemoVM a PSDemoVMTarget.
Update-AzResourceMoverMoveResource -ResourceGroupName " RegionToZone-DemoMCRG " -MoveCollectionName " RegionToZone-DemoMC -SourceId "/subscriptions/<Subscription-d>/resourceGroups/PSDemoRM/providers/Microsoft.Compute/virtualMachines/PSDemoVM" -Name "PSDemoVM" -ResourceSetting $TargetResourceSettingObj
Risolvere gli errori relativi alle risorse di Azure non trovate
Controllare se le macchine virtuali a livello di area aggiunte hanno dipendenze da altre risorse e aggiungere in base alle esigenze.
Risolvere le dipendenze come indicato di seguito:
Resolve-AzResourceMoverMoveCollectionDependency -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC"
Output (quando esistono dipendenze)
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
Per ottenere un elenco di risorse aggiunte alla raccolta di spostamento:
$list = Get-AzResourceMoverMoveResource -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" $list.Name
Output:
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
Per rimuovere le risorse dalla raccolta di risorse, seguire queste istruzioni.
Avviare lo spostamento delle risorse della macchina virtuale
Invoke-AzResourceMoverInitiateMove -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" -MoveResource $("demoVM-MoveResource") -MoveResourceInputType "MoveResourceId"
Output
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
Dopo lo spostamento iniziale, è necessario eseguire il commit dello spostamento o rimuoverlo. Il commit completa lo spostamento nell'area di destinazione.
Eseguire il commit dello spostamento come segue:
Invoke-AzResourceMover-VMZonalMoveCommit -ResourceGroupName "RG-MoveCollection-demoRMS" -MoveCollectionName "PS-centralus-westcentralus-demoRMS" -MoveResource $('psdemovm111', 'PSDemoRM-vnet','PSDemoVM-nsg', ‘PSDemoVM’) -MoveResourceInputType "MoveResourceId"
Output:
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
Eliminare le macchine virtuali a livello di area di origine
Dopo aver eseguito il commit dello spostamento e aver verificato che le risorse funzionino come previsto nell'area di destinazione, è possibile eliminare ogni risorsa di origine usando:
Passaggi successivi
Informazioni su come spostare macchine virtuali di Azure a istanza singola dalla configurazione a livello di area tramite il portale.