Share via


Verschieben eines virtuellen Computers in einer Verfügbarkeitszone mithilfe von Azure PowerShell und CLI

In diesem Artikel wird erläutert, wie Sie Azure PowerShell- und CLI-Cmdlets verwenden, um Azure-VMs mit einer einzelnen Instanz von regionalen zu zonalen Verfügbarkeitszonen zu verschieben. Eine Verfügbarkeitszone ist eine physisch separate Zone in einer Azure-Region. Verwenden Sie Verfügbarkeitszonen, um Ihre Apps und Daten vor einem unwahrscheinlichen Fehler oder Ausfall eines gesamten Rechenzentrums zu schützen.

Um eine Verfügbarkeitszone verwenden zu können, muss der virtuelle Computer in einer unterstützten Azure-Region erstellt werden.

Wichtig

Die Verschiebung der VM-Konfiguration mit einzelnen Instanzen von regional zu zonal befindet sich derzeit in Public Preview.

Voraussetzungen

Überprüfen Sie, ob die folgenden Anforderungen erfüllt sind:

Anforderung BESCHREIBUNG
Abonnementberechtigungen Stellen Sie sicher, dass Sie Besitzerzugriff auf das Abonnement haben, das die zu verschiebenden Ressourcen enthält.

Die verwaltete Identität benötigt folgende Berechtigungen:
– Berechtigung zum Schreiben/Erstellen von Ressourcen im Benutzerabonnement, verfügbar mit der Rolle „Mitwirkender“
– Berechtigung zum Erstellen von Rollenzuweisungen. In der Regel in der Rolle Besitzer, der Rolle Benutzerzugriffsadministrator sowie benutzerdefinierten Rollen mit zugewiesenen Microsoft.Authorization-Rollenzuweisungen oder Schreibberechtigung enthalten. Diese Berechtigung ist nicht erforderlich, wenn der verwalteten Identität der Data Share-Ressource bereits Zugriff auf den Azure-Datenspeicher gewährt wurde.
Hier erfahren Sie mehr zu Azure-Rollen.
VM-Support Überprüfen Sie die unterstützten Regionen.

- Überprüfen Sie die unterstützten Einstellungen für Compute, Speicher und Netzwerk.
VM-Integritätsstatus Die virtuellen Computer, die Sie verschieben möchten, müssen sich in einem fehlerfreien Zustand befinden, bevor Sie versuchen, sie in eine Zone zu verschieben. Stellen Sie sicher, dass alle ausstehenden Neustarts und obligatorischen Updates abgeschlossen sind und der virtuelle Computer funktioniert und sich in einem fehlerfreien Zustand befindet, bevor Sie versuchen, den virtuellen Computer in eine Zone zu verschieben.

Überprüfen der PowerShell- und CLI-Anforderungen

Von einigen Ausnahmen abgesehen, sind die meisten Vorgänge zum Verschieben von Ressourcen gleich, egal ob Sie das Azure-Portal, die PowerShell oder die CLI verwenden.

Vorgang Portal PowerShell/CLI
Erstellen einer Verschiebungssammlung Es wird automatisch eine Verschiebungssammlung (eine Liste aller zu verschiebenden regionalen VMs) erstellt. Erforderliche Identitätsberechtigungen werden im Back-End durch das Portal zugewiesen. Sie können PowerShell-Cmdlets oder CLI-Cmdlets für folgende Aufgaben verwenden:
- Zuweisen einer verwalteten Identität zur Sammlung
– Hinzufügen regionaler VMs zur Sammlung.
Vorgänge zum Verschieben von Ressourcen Überprüfen Sie die Schritte und die Änderungen der Einstellung Benutzer. Verschiebung initiieren startet den Verschiebungsprozess und erstellt eine Kopie der Quell-VM in der Zielzone. Außerdem wird die Verschiebung der neu erstellten VM in der Zielzone abgeschlossen. PowerShell-Cmdlets oder CLI-Cmdlets für folgende Aufgaben:
– Hinzufügen regionaler VMs zur Sammlung
– Auflösen von Abhängigkeiten
– Durchführen der Verschiebung.
– Commit der Verschiebung

Beispielwerte

Wir verwenden in unseren Skriptbeispielen diese Werte:

Einstellung Wert
Abonnement-ID subscription-id
Verschiebungsregion USA, Osten
Ressourcengruppe (mit Metadaten für die Verschiebungssammlung) RegionToZone-DemoMCRG
Sammlungsnamen verschieben RegionToZone-DemoMC
Speicherort der Verschiebungssammlung eastus2euap
IdentityType SystemAssigned
Name des virtuellen Computers demoVM-MoveResource
Verschiebungstyp RegionToZone

Anmelden bei Azure

Melden Sie sich mit dem Befehl Connect-AzAccount bei Ihrem Azure-Abonnement an, und befolgen Sie die Anweisungen auf dem Bildschirm.

Connect-AzAccount –Subscription "<subscription-id>"

Einrichten der Verschiebungssammlung

Das MoveCollection-Objekt speichert Metadaten und Konfigurationsinformationen zu den Ressourcen, die Sie verschieben möchten. Um eine Verschiebungssammlung einzurichten, gehen Sie wie folgt vor:

  • Erstellen Sie eine Ressourcengruppe für die Verschiebungssammlung.
  • Registrieren Sie den Dienstanbieter bei dem Abonnement, damit die Ressource „MoveCollection“ erstellt werden kann.
  • Erstellen Sie das Objekt „MoveCollection“ mit verwalteter Identität. Damit das Objekt „MoveCollection“ auf das Abonnement zugreifen kann, in dem sich der Resource Mover-Dienst befindet, ist eine systemseitig zugewiesene verwaltete Identität (ehemals als Managed Service Identity (MSI) bezeichnet) erforderlich, für die eine Vertrauensstellung mit dem Abonnement besteht.
  • Gewähren Sie der verwalteten Identität Zugriff auf das Resource Mover-Abonnement.

Erstellen der Ressourcengruppe

Verwenden Sie das folgende Cmdlet, um eine Ressourcengruppe für die Metadaten und Konfigurationsinformationen der Verschiebungssammlung mit New-AzResourceGroup zu erstellen. Eine Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen bereitgestellt und verwaltet werden.

New-AzResourceGroup -Name "RegionToZone-DemoMCRG" -Location "EastUS"

Ausgabe:

Die Ausgabe zeigt, dass sich der verwaltete Datenträger in der gleichen Verfügbarkeitszone befindet wie der virtuelle Computer:

ResourceGroupName : RegionToZone-DemoMCRG
Location          : eastus
ProvisioningState : Succeeded
Tags              :
                    Name     Value
                    =======  ========
                    Created  20230908

ResourceId        : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG

Registrieren des Ressourcenanbieters

  1. Registrieren Sie den Ressourcenanbieter „Microsoft.Migrate“, damit die Ressource „MoveCollection“ erstellt werden kann:

    Register-AzResourceProvider -ProviderNamespace Microsoft.Migrate
    
  2. Warten Sie auf die Registrierung:

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

Erstellen eines Objekts vom Typ „MoveCollection“

Erstellen Sie ein Objekt vom Typ „MoveCollection“, und weisen Sie ihm eine verwaltete Identität zu:

New-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC"  -ResourceGroupName "RegionToZone-DemoMCRG" -MoveRegion "eastus" -Location "eastus2euap" -IdentityType "SystemAssigned" -MoveType "RegionToZone"

Ausgabe:

Etag                                   Location    Name
----                                   --------    ----
"3a00c441-0000-3400-0000-64fac1b30000" eastus2euap RegionToZone-DemoMC

Hinweis

Für die Verschiebung von einer Region in eine Zone sollte der Parameter MoveType auf RegionToZone und der Parameter MoveRegion auf den Ort festgelegt werden, an dem sich die zu verschiebenden Ressourcen befinden. Stellen Sie sicher, dass die Parameter SourceRegion und TargetRegion nicht erforderlich sind und auf Nullfestgelegt werden sollen.

Gewähren von Zugriff für die verwaltete Identität

Gewähren Sie der verwalteten Identität Zugriff auf das Resource Mover-Abonnement: Sie müssen der Abonnementbesitzer sein.

  1. Rufen Sie Identitätsdetails aus dem Objekt „MoveCollection“ ab.

    $moveCollection = Get-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC" -ResourceGroupName "RegionToZone-DemoMCRG"
    $identityPrincipalId = $moveCollection.IdentityPrincipalId
    
  2. Weisen Sie der Identität die erforderlichen Rollen zu, damit Azure Resource Mover auf Ihr Abonnement zugreifen und Sie bei der Ressourcenverschiebung unterstützen kann. Überprüfen Sie die Liste der für die Verschiebung erforderlichen Berechtigungen.

    New-AzRoleAssignment -ObjectId $identityPrincipalId -RoleDefinitionName Contributor -Scope "/subscriptions/<subscription-id>""
    New-AzRoleAssignment -ObjectId $identityPrincipalId -RoleDefinitionName "User Access Administrator" -Scope "/subscriptions/<subscription-id>"
    

Hinzufügen regionaler VMs zur Verschiebungssammlung

Rufen Sie die IDs für die vorhandenen Quellressourcen ab, die Sie verschieben möchten. Erstellen Sie das Einstellungsobjekt für die Zielressource, und fügen Sie der Verschiebungssammlung anschließend Ressourcen hinzu.

Hinweis

Zu einer Verschiebungssammlung hinzugefügte Ressourcen müssen sich im selben Abonnement befinden, können jedoch zu unterschiedlichen Ressourcengruppen gehören.

  1. Erstellen Sie das Zielressourceneinstellungsobjekt wie folgt:

    $targetResourceSettingsObj = New-Object Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Api20230801.VirtualMachineResourceSettings
    $targetResourceSettingsObj.ResourceType = "Microsoft.Compute/virtualMachines"
    $targetResourceSettingsObj.TargetResourceName = "RegionToZone-demoTargetVm"
    $targetResourceSettingsObj.TargetAvailabilityZone = "2"
    

    Ausgabe

    ResourceType                      TargetResourceGroupName TargetResourceName        TargetAvailabilitySetId TargetAvailabilityZone TargetVMSize UserManagedIdentity
    ------------                      ----------------------- ------------------        ----------------------- ---------------------- ------------ -------------------
    Microsoft.Compute/virtualMachines                         RegionToZone-demoTargetVm                         2
    
  2. Hinzufügen von Ressourcen

    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
    

    Ausgabe

    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                              :
    

Ändern von Einstellungen

Wenn Sie Azure-VMs (Virtual Machines, virtuelle Computer) und die zugehörigen Ressourcen verschieben, können Sie die Zieleinstellungen ändern. Es wird empfohlen, die Zieleinstellungen nur zu ändern, bevor Sie die Verschiebungssammlung überprüfen.

Folgende Einstellungen können Sie ändern:

  • Einstellungen für virtuelle Computer: Ressourcengruppe, VM-Name, VM-Verfügbarkeitszone, VM-SKU, VM-Schlüsseltresor und Datenträgerverschlüsselungssatz.
  • Netzwerkressourceneinstellungen: Optionen für Netzwerkschnittstellen, virtuelle Netzwerke (VNets) und Netzwerksicherheitsgruppen/Netzwerkschnittstellen:
    • Sie verwenden eine in der Zielregion vorhandene Netzwerkressource.
    • Sie erstellen eine neue Ressource mit einem anderen Namen.
  • Öffentliche IP-Adresse/Lastenausgleich: SKU und Zone

Verändern Sie die Einstellungen wie folgt:

  1. Rufen Sie die Verschiebungsressource ab, für die Sie Eigenschaften bearbeiten möchten. So rufen Sie beispielsweise eine VM-Ausführung ab:

    $moveResourceObj = Get-AzResourceMoverMoveResource -MoveCollectionName " RegionToZone-DemoMCRG " -ResourceGroupName " RegionToZone-DemoMC " -Name "PSDemoVM"
    
  2. Kopieren Sie die Ressourceneinstellung in ein Zielressourcen-Einstellungsobjekt.

    $TargetResourceSettingObj = $moveResourceObj.ResourceSetting
    
  3. Legen Sie den Parameter im Zielressourcen-Einstellungsobjekt fest. So ändern Sie beispielsweise den Namen des virtuellen Zielcomputers:

    $TargetResourceSettingObj.TargetResourceName="PSDemoVM-target"
    
  4. Aktualisieren Sie die Einstellungen für das Ziel der Ressourcenverschiebung. In diesem Beispiel ändern wir den Namen des virtuellen Computers von PSDemoVM in PSDemoVMTarget.

    Update-AzResourceMoverMoveResource -ResourceGroupName " RegionToZone-DemoMCRG " -MoveCollectionName " RegionToZone-DemoMC -SourceId "/subscriptions/<Subscription-d>/resourceGroups/PSDemoRM/providers/Microsoft.Compute/virtualMachines/PSDemoVM" -Name "PSDemoVM" -ResourceSetting $TargetResourceSettingObj
    

Auflösen von Abhängigkeiten

Überprüfen Sie, ob die hinzugefügten regionalen VMs von anderen Ressourcen abhängig sind, und fügen Sie diese bei Bedarf hinzu.

  1. Lösen Sie Abhängigkeiten wie folgt auf:

    Resolve-AzResourceMoverMoveCollectionDependency -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC"
    

    Ausgabe (wenn Abhängigkeiten vorhanden sind)

    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. So rufen Sie eine Liste der Ressourcen ab, die der Verschiebungssammlung hinzugefügt wurden:

    $list = Get-AzResourceMoverMoveResource -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" $list.Name
    

    Ausgabe:

    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. Um Ressourcen aus der Ressourcensammlung zu entfernen, befolgen Sie diese Anleitung.

Initiieren der Verschiebung von VM-Ressourcen

Invoke-AzResourceMoverInitiateMove -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" -MoveResource $("demoVM-MoveResource") -MoveResourceInputType "MoveResourceId"

Ausgabe

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

Nach der anfänglichen Verschiebung müssen Sie entscheiden, ob Sie einen Commit für die Verschiebung durchführen oder sie verwerfen. Mit dem Commit wird die Verschiebung in die Zielregion abgeschlossen.

Committen Sie die Verschiebung wie folgt:

Invoke-AzResourceMover-VMZonalMoveCommit -ResourceGroupName "RG-MoveCollection-demoRMS" -MoveCollectionName "PS-centralus-westcentralus-demoRMS" -MoveResource $('psdemovm111', 'PSDemoRM-vnet','PSDemoVM-nsg', ‘PSDemoVM’) -MoveResourceInputType "MoveResourceId"

Ausgabe:

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 

Löschen der regionalen Quell-VMs

Nachdem Sie die Verschiebung committet haben und überprüft haben, ob die Ressourcen in der Zielregion wie erwartet funktionieren, können Sie jede Quellressource löschen und zwar mithilfe von:

Nächste Schritte

Erfahren Sie mehr darüber, wie Sie mit dem Portal Azure-VMs mit einzelnen Instanzen von einer regionalen zu einer zonalen Konfiguration verschieben.