Share via


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

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

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

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

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