Spostare una macchina virtuale dall'area alla zona di disponibilità con Azure PowerShell e l'interfaccia della riga di comando
Questo articolo spiega come utilizzare Azure PowerShell e i cmdlet 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 app e dati da un poco probabile errore o perdita di un intero data center.
Per usare una zona di disponibilità, creare la macchina virtuale in un'area di Azure supportata.
Prerequisiti
Prima di avviare il processo di spostamento, verificare i requisiti seguenti:
Requisito | Descrizione |
---|---|
Autorizzazioni per la sottoscrizione | Assicurarsi di avere accesso come Proprietario nella sottoscrizione che contiene le risorse da spostare. Identità gestita richiede queste autorizzazioni: - Autorizzazione alla scrittura o creazione di risorse nella sottoscrizione utente, disponibile con il ruolo Collaboratore. - Autorizzazione a creare assegnazioni di ruolo. Generalmente disponibile con i ruoli di Proprietario o Amministratore dell'accesso utenti oppure con un ruolo personalizzato a cui sia stato assegnato un ruolo Microsoft.Authorization o un’autorizzazione di scrittura. 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 trovarsi in uno stato integro prima di tentare lo spostamento di zona. Assicurarsi che tutti i riavvii in sospeso e gli aggiornamenti obbligatori siano stati completati 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 sono identiche sia che si utilizzi il portale di Azure che 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 a livello di area che si stanno spostando). Le autorizzazioni di identità necessarie vengono assegnate nel back-end dal portale. | È possibile usare cmdlet di PowerShell o cmdlet dell'interfaccia della riga di comando a: - Assegnare un'identità gestita alla raccolta. - Aggiungere macchine virtuali a livello di area alla raccolta. |
Operazione 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. Inoltre, finalizza lo spostamento della macchina virtuale appena creata nella zona di destinazione. | cmdlet di PowerShell o cmdlet dell'interfaccia della riga di comando a: - Aggiungere macchine virtuali a livello di area alla raccolta - Risolvere gli errori relativi alle risorse di Azure non trovate - 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 |
Spostare area | Stati Uniti orientali |
Gruppo di risorse (che contiene i metadati per la raccolta di spostamento) | RegionToZone-DemoMCRG |
Nome della raccolta di spostamento | RegionToZone-DemoMC |
Posizione della raccolta di spostamento | eastus2euap |
IdentityType | SystemAssigned |
Nome della VM. | demoVM-MoveResource |
Spostare il 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 che si desidera 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 Spostamento risorse, è necessaria una identità gestita assegnata dal sistema, precedentemente nota come identità del servizio gestita (MSI) considerata attendibile dalla sottoscrizione.
- Concedere l'accesso alla sottoscrizione di Spostamento risorse per l'identità gestita.
Creare il gruppo di risorse
Usare il cmdlet seguente per creare un gruppo di risorse per i metadati della raccolta di spostamento e le informazioni di configurazione 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 parametro MoveType
deve essere impostato come RegionToZone e il MoveRegion
parametro deve essere impostato come posizione in cui risiedono le risorse in fase di spostamento di zona. Assicurarsi che i parametri SourceRegion
e TargetRegion
non siano obbligatori e che siano impostati su null.
Concedere l'accesso all'identità gestita
Concedere all'identità gestita l'accesso alla sottoscrizione di Spostamento risorse 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 richiesti all'identità in modo che Spostamento risorse di Azure 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 essere incluse 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 le macchine virtuali di Azure e le risorse associate vengono spostate. È consigliabile modificare le impostazioni di destinazione solo prima di convalidare la raccolta di spostamento.
Le impostazioni che è possibile modificare sono:
- Impostazioni macchina virtuale: gruppo di risorse, nome della macchina virtuale, zona di disponibilità della macchina virtuale, SKU della macchina virtuale, insieme di credenziali delle chiavi della macchina virtuale e set di crittografia dischi.
- 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/Load Balancer: SKU e zona
Modificare le impostazioni come indicato di seguito:
Recuperare la risorsa di spostamento per la quale 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 della 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 : 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
Per ottenere un elenco delle 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.
SKU della macchina virtuale delle zone di disponibilità, convalida della quota e della capacità
Azure fornisce consigli quando la zona di disponibilità selezionata non ha lo SKU della macchina virtuale o quando non è disponibile una quota o una capacità sufficiente. Ecco alcuni esempi di questi consigli e le azioni che devono essere eseguite se lo SKU della macchina virtuale non è disponibile.
SKU della macchina virtuale non disponibile
Quando le dimensioni della macchina virtuale di origine Standard_DC1ds_v3
non sono disponibili nella zona di disponibilità selezionata 1
.
Azione consigliata: scegliere una macchina virtuale di dimensioni diverse nella stessa zona di disponibilità o selezionare una zona di disponibilità diversa con le dimensioni della macchina virtuale consigliate corrispondenti.
Raccomandazioni:
- SKU: Standard_DC1ds_v3, Zone: [ 2 ]
- SKU: Standard_DC2ds_v3, Zone: [ 2 ]
- SKU: Standard_DC4ds_v3, Zone: [ 2 ]
- SKU: Standard_DC1s_v3, Zone: [ 2 ]
- SKU: Standard_D2ds_v5, Zone: [ 2, 3 ]
- SKU: Standard_D2as_v4, Zone: [ 1, 2, 3 ]
- SKU: Standard_D2s_v3, Zone: [ 1, 2, 3 ]
- SKU: Standard_D2as_v5, Zone: [ 1, 2, 3 ]
- SKU: Standard_D2s_v5, Zone: [ 2, 3 ]
Consigli sulla capacità
Consigli sulla capacità per le dimensioni correnti della macchina virtuale di selezione Standard_DC1ds_v3
nella zona di disponibilità selezionata 1
.
Azione consigliata per aumentare le probabilità di successo della distribuzione, Azure ha identificato altre dimensioni e zone consigliate delle macchine virtuali. Per eseguire la distribuzione senza problemi, scegliere una dimensione della macchina virtuale diversa nella stessa zona di disponibilità o in una zona di disponibilità diversa con dimensioni corrispondenti della macchina virtuale.
Raccomandazioni:
- SKU: Standard_DC1ds_v3, Zone: [ 2 ]
- SKU: Standard_DC2ds_v3, Zone: [ 2 ]
- SKU: Standard_DC4ds_v3, Zone: [ 2 ]
- SKU: Standard_DC1s_v3, Zone: [ 2 ]
- SKU: Standard_D2ds_v5, Zone: [ 2, 3 ]
- SKU: Standard_D2as_v4, Zone: [ 1, 2, 3 ]
- SKU: Standard_D2s_v3, Zone: [ 1, 2, 3 ]
- SKU: Standard_D2as_v5, Zone: [ 1, 2, 3 ]
- SKU: Standard_D2s_v5, Zone: [ 2, 3 ]
Seguire i consigli
Per risolvere le situazioni in cui lo SKU della macchina virtuale non viene trovato o si verifica un problema di capacità, aggiornare la risorsa di spostamento e quindi eseguire di nuovo la risoluzione. Di seguito è riportato un esempio di riferimento:
Aggiornare l'oggetto risorsa di spostamento della macchina virtuale in una nuova zona o SKU in base ai consigli.
$targetResourceSettingsObj.TargetVmSize = "Standard_DC1ds_v3" $targetResourceSettingsObj.TargetAvailabilityZone = "3"
Aggiornare la risorsa di spostamento della macchina virtuale
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
Eseguire di nuovo la risoluzione
Resolve-AzResourceMoverMoveCollectionDependency -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC"
Quota insufficiente
La macchina virtuale selezionata non può essere spostata nella zona di disponibilità a causa di una quota insufficiente.
Azione consigliata: è stata rilevata una quota insufficiente. Fare riferimento al collegamento e contattare il supporto tecnico.
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 consente di completare lo spostamento nell'area di destinazione.
Eseguire il commit dello spostamento come indicato di seguito:
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
Rimuovere una risorsa
È possibile rimuovere una singola risorsa o più risorse da un MoveCollection
usando i cmdlet seguenti:
Ottenere un elenco delle risorse di spostamento aggiunte alla raccolta di spostamento:
$list = Get-AzResourceMoverMoveResource -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"
Rimuovere le risorse di spostamento trovate:
Invoke-AzResourceMoverBulkRemove -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>" -MoveResource $($list.Name)
Rimuovere la raccolta di spostamento:
Remove-AzResourceMoverMoveCollection -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"
Nota
Se si osservano problemi di autorizzazione delle identità gestite, riabilitare l'accesso alle identità gestite seguendo nuovamente questi passaggi.
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 ad area a quella di zona tramite il portale.