Condividi tramite


Spostare una macchina virtuale Windows in una zona di disponibilità usando 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

  1. 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
    
  2. 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.

  1. Recuperare i dettagli dell'identità dall'oggetto MoveCollection.

    $moveCollection = Get-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC" -ResourceGroupName "RegionToZone-DemoMCRG"
    $identityPrincipalId = $moveCollection.IdentityPrincipalId
    
  2. 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.

  1. 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
    
  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:

  1. 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"
    
  2. Copiare l'impostazione della risorsa in un oggetto impostazione della risorsa di destinazione.

    $TargetResourceSettingObj = $moveResourceObj.ResourceSetting
    
  3. 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"
    
  4. 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.

  1. 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
    
  2. 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
    
  3. 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:

  1. 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"
    
  2. 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
    
  3. 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:

  1. Ottenere un elenco delle risorse di spostamento aggiunte alla raccolta di spostamento: $list = Get-AzResourceMoverMoveResource -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"

  2. Rimuovere le risorse di spostamento trovate: Invoke-AzResourceMoverBulkRemove -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>" -MoveResource $($list.Name)

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