Dela via


Flytta en virtuell dator i en tillgänglighetszon med Hjälp av Azure PowerShell och CLI

Den här artikeln beskriver hur du använder Azure PowerShell- och CLI-cmdletar för att flytta virtuella Azure-instanser från regionala till zonindelade tillgänglighetszoner. En tillgänglighetszon är en fysiskt separat zon i en Azure-region. Använd tillgänglighetszoner för att skydda dina appar och data från ett osannolikt fel eller förlust av ett helt datacenter.

Om du vill använda en tillgänglighetszon skapar du din virtuella dator i en Azure-region som stöds.

Förutsättningar

Kontrollera följande krav innan du påbörjar flyttprocessen:

Krav Beskrivning
Prenumerationsbehörigheter Se till att du har ägaråtkomst för prenumerationen som innehåller de resurser som du vill flytta.

Hanterad identitet behöver följande behörigheter:
– Behörighet att skriva eller skapa resurser i en användarprenumeration, tillgänglig med rollen Deltagare.
– Behörighet att skapa rolltilldelningar. Är vanligtvis tillgängligt med rollerna Ägare eller Administratör för användaråtkomst, eller med en anpassad roll som har Microsoft.Authorization rolltilldelningarna eller skrivbehörigheten tilldelad. Den här behörigheten behövs inte om dataresursens hanterade identitet redan har beviljats åtkomst till Azure-datalagret.
Läs mer om Azure-roller.
Stöd för virtuella datorer Granska de regioner som stöds.

– Kontrollera inställningar för beräkning, lagring och nätverk som stöds.
Hälsostatus för virtuell dator De virtuella datorer som du vill flytta måste vara i ett felfritt tillstånd innan du försöker flytta zonindelningen. Se till att alla väntande omstarter och obligatoriska uppdateringar är slutförda och att den virtuella datorn fungerar och är i felfritt tillstånd innan du försöker flytta den virtuella datorns zonindelning.

Granska Kraven för PowerShell och CLI

De flesta åtgärder för att flytta resurser är desamma oavsett om du använder Azure-portalen eller PowerShell eller CLI, med ett par undantag.

Åtgärd Portalen PowerShell/CLI
Skapa en flyttsamling En flyttsamling (en lista över alla regionala virtuella datorer som du flyttar) skapas automatiskt. Nödvändiga identitetsbehörigheter tilldelas i serverdelen av portalen. Du kan använda PowerShell-cmdletar eller CLI-cmdletar för att:
– Tilldela en hanterad identitet till samlingen.
– Lägg till regionala virtuella datorer i samlingen.
Åtgärder för resursflytt Verifiera steg och verifierar ändringar i användarinställningen. Initiera flytt startar flyttprocessen och skapar en kopia av den virtuella källdatorn i målzonen. Den slutför också flytten av den nyligen skapade virtuella datorn i målzonen. PowerShell-cmdletar eller CLI-cmdletar för att:
– Lägga till regionala virtuella datorer i samlingen
– Lösa beroenden
- Utför flytten.
- Checka in flytten.

Exempelvärden

Vi använder dessa värden i våra skriptexempel:

Inställning Värde
Prenumerations-ID:t prenumerations-ID
Flytta region USA, östra
Resursgrupp (med metadata för flyttinsamling) RegionToZone-DemoMCRG
Flytta samlingsnamn RegionToZone-DemoMC
Plats för flyttsamlingen eastus2euap
IdentityType SystemAssigned
VM-namn demoVM-MoveResource
Flytta typ RegionToZone

Logga in på Azure

Logga in på din Azure-prenumeration med kommandot Connect-AzAccount och följ anvisningarna på skärmen.

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

Konfigurera flyttsamlingen

MoveCollection-objektet lagrar metadata och konfigurationsinformation om de resurser som du vill flytta. Gör följande för att konfigurera en flyttsamling:

  • Skapa en resursgrupp för flyttsamlingen.
  • Registrera tjänstleverantören i prenumerationen så att MoveCollection-resursen kan skapas.
  • Skapa MoveCollection-objektet med hanterad identitet. För att MoveCollection-objektet ska få åtkomst till prenumerationen där Resource Mover-tjänsten finns behöver det en systemtilldelad hanterad identitet (tidigare kallad Hanterad tjänstidentitet (MSI)) som är betrodd av prenumerationen.
  • Bevilja åtkomst till Resource Mover-prenumerationen för den hanterade identiteten.

Skapa resursgruppen

Använd följande cmdlet för att skapa en resursgrupp för flyttsamlingens metadata och konfigurationsinformation med New-AzResourceGroup. En resursgrupp är en logisk container där Azure-resurser distribueras och hanteras.

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

Utdata:

Utdata visar att de hanterade diskarna är i samma tillgänglighetszon som den virtuella datorn:

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

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

Registrera resursprovidern

  1. Registrera resursprovidern Microsoft.Migrate så att MoveCollection-resursen kan skapas på följande sätt:

    Register-AzResourceProvider -ProviderNamespace Microsoft.Migrate
    
  2. Vänta på registrering:

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

Skapa ett MoveCollection-objekt

Skapa ett MoveCollection-objekt och tilldela en hanterad identitet till det på följande sätt:

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

Utdata:

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

Kommentar

För regional till zonindelad flytt ska parametern MoveType anges som RegionToZone och MoveRegion parametern ska anges som den plats där resurser som genomgår zonindelning finns. Kontrollera att parametrarna SourceRegion och TargetRegion inte krävs och ska vara inställda på null.

Bevilja åtkomst till den hanterade identiteten

Ge den hanterade identiteten åtkomst till Resource Mover-prenumerationen på följande sätt. Du måste vara prenumerationsägare.

  1. Hämta identitetsinformation från MoveCollection-objektet.

    $moveCollection = Get-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC" -ResourceGroupName "RegionToZone-DemoMCRG"
    $identityPrincipalId = $moveCollection.IdentityPrincipalId
    
  2. Tilldela de roller som krävs till identiteten så att Azure Resource Mover kan komma åt din prenumeration för att hjälpa till att flytta resurser. Granska listan över nödvändiga behörigheter för flytten.

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

Lägga till regionala virtuella datorer i flyttsamlingen

Hämta ID:t för befintliga källresurser som du vill flytta. Skapa målresursinställningsobjektet och lägg sedan till resurser i flyttsamlingen.

Kommentar

Resurser som läggs till i en flyttsamling måste finnas i samma prenumeration men kan finnas i olika resursgrupper.

  1. Skapa målresursinställningsobjekt på följande sätt:

    $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. Lägg till resurser

    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                              :
    

Ändra inställningar

Du kan ändra målinställningarna när du flyttar virtuella Azure-datorer och associerade resurser. Vi rekommenderar att du bara ändrar målinställningarna innan du verifierar flyttsamlingen.

Inställningar som du kan ändra är:

  • Inställningar för virtuell dator: Resursgrupp, VM-namn, VM-tillgänglighetszon, VM SKU, VM-nyckelvalv och Diskkrypteringsuppsättning.
  • Nätverksresursinställningar: För nätverksgränssnitt, virtuella nätverk (VNet/) och nätverkssäkerhetsgrupper/nätverksgränssnitt kan du antingen:
    • Använd en befintlig nätverksresurs i målregionen.
    • Skapa en ny resurs med ett annat namn.
  • Offentlig IP/lastbalanserare: SKU och zon

Ändra inställningarna på följande sätt:

  1. Hämta flyttresursen som du vill redigera egenskaper för. Om du till exempel vill hämta en virtuell dator kör du:

    $moveResourceObj = Get-AzResourceMoverMoveResource -MoveCollectionName " RegionToZone-DemoMCRG " -ResourceGroupName " RegionToZone-DemoMC " -Name "PSDemoVM"
    
  2. Kopiera resursinställningen till ett målresursinställningsobjekt.

    $TargetResourceSettingObj = $moveResourceObj.ResourceSetting
    
  3. Ange parametern i målresursinställningsobjektet. Om du till exempel vill ändra namnet på den virtuella måldatorn:

    $TargetResourceSettingObj.TargetResourceName="PSDemoVM-target"
    
  4. Uppdatera inställningarna för flyttresursens mål. I det här exemplet ändrar vi namnet på den virtuella datorn från PSDemoVM till PSDemoVMTarget.

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

Lösa beroenden

Kontrollera om de regionala virtuella datorer som du har lagt till har några beroenden för andra resurser och lägg till efter behov.

  1. Lös beroenden på följande sätt:

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

    Utdata (när beroenden finns)

    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. Så här hämtar du en lista över resurser som lagts till i flyttsamlingen:

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

    Utdata:

    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. Följ de här anvisningarna om du vill ta bort resurser från resurssamlingen.

Tillgänglighetszoner VM SKU, kvot och kapacitetsvalidering

Azure ger rekommendationer när den valda tillgänglighetszonen inte har den virtuella datorns SKU, eller när det inte finns tillräckligt med kvot eller kapacitet tillgänglig. Här är några exempel på dessa rekommendationer och de åtgärder som bör vidtas om den virtuella datorns SKU inte är tillgänglig.

VM-SKU:n är inte tillgänglig

När den virtuella källdatorns storlek Standard_DC1ds_v3 inte är tillgänglig i den valda tillgänglighetszonen 1.

Rekommenderad åtgärd: Välj en annan storlek på den virtuella datorn i samma tillgänglighetszon eller välj en annan tillgänglighetszon med motsvarande rekommenderad VM-storlek.

Rekommendationer:

  • SKU: Standard_DC1ds_v3, zoner: [ 2 ]
  • SKU: Standard_DC2ds_v3, zoner: [ 2 ]
  • SKU: Standard_DC4ds_v3, zoner: [ 2 ]
  • SKU: Standard_DC1s_v3, zoner: [ 2 ]
  • SKU: Standard_D2ds_v5, zoner: [ 2, 3 ]
  • SKU: Standard_D2as_v4, zoner: [ 1, 2, 3 ]
  • SKU: Standard_D2s_v3, zoner: [ 1, 2, 3 ]
  • SKU: Standard_D2as_v5, zoner: [ 1, 2, 3 ]
  • SKU: Standard_D2s_v5, Zoner: [ 2, 3 ]

Kapacitetsrekommendationer

Kapacitetsrekommendationer för den aktuella urvalsstorleken Standard_DC1ds_v3 för virtuella datorer i den valda tillgänglighetszonen 1.

Rekommenderad åtgärd: För att öka sannolikheten för en lyckad distribution har Azure identifierat andra rekommenderade storlekar och zoner för virtuella datorer. Om du vill distribuera sömlöst väljer du en annan VM-storlek i samma tillgänglighetszon eller en annan tillgänglighetszon med motsvarande storlek på virtuella datorer.

Rekommendationer:

  • SKU: Standard_DC1ds_v3, zoner: [ 2 ]
  • SKU: Standard_DC2ds_v3, zoner: [ 2 ]
  • SKU: Standard_DC4ds_v3, zoner: [ 2 ]
  • SKU: Standard_DC1s_v3, zoner: [ 2 ]
  • SKU: Standard_D2ds_v5, zoner: [ 2, 3 ]
  • SKU: Standard_D2as_v4, zoner: [ 1, 2, 3 ]
  • SKU: Standard_D2s_v3, zoner: [ 1, 2, 3 ]
  • SKU: Standard_D2as_v5, zoner: [ 1, 2, 3 ]
  • SKU: Standard_D2s_v5, Zoner: [ 2, 3 ]

Åtgärda rekommendationerna

Om du vill hantera situationer där den virtuella datorns SKU inte hittas eller om det finns ett kapacitetsproblem uppdaterar du flyttresursen och kör sedan lös igen. Här är ett exempel på referens:

  1. Uppdatera den virtuella datorn och flytta resursobjektet till den nya zonen eller SKU:n enligt rekommendationerna.

    $targetResourceSettingsObj.TargetVmSize = "Standard_DC1ds_v3"
    $targetResourceSettingsObj.TargetAvailabilityZone = "3"
    
  2. Uppdatera flyttresurs för virtuella datorer

    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. Kör matchning igen

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

Otillräcklig kvot

Den valda virtuella datorn kan inte flyttas till tillgänglighetszonen på grund av otillräcklig kvot.

Rekommenderad åtgärd: Otillräcklig kvot hittades. Se länk och kontakta supporten.

Initiera flytt av VM-resurser

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

Checka in

Efter den första flytten måste du checka in flytten eller ignorera den. Incheckningen slutför flytten till målregionen.

Genomför flytten på följande sätt:

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

Utdata:

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 

Ta bort en resurs

Du kan ta bort en enskild resurs eller flera resurser från en MoveCollection med hjälp av följande cmdletar:

  1. Hämta en lista över de flyttresurser som läggs till i flyttsamlingen: $list = Get-AzResourceMoverMoveResource -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"

  2. Ta bort flyttresurserna som du hittade: Invoke-AzResourceMoverBulkRemove -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>" -MoveResource $($list.Name)

  3. Ta bort flyttsamlingen: Remove-AzResourceMoverMoveCollection -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"

Kommentar

Om du ser problem med auktorisering av hanterade identiteter aktiverar du åtkomsten till hanterade identiteter igen genom att följa dessa steg igen.

Ta bort regionala källdatorer

När du checkar in flytten och kontrollerar att resurserna fungerar som förväntat i målregionen kan du ta bort varje källresurs med hjälp av:

Nästa steg

Lär dig hur du flyttar virtuella Azure-instanser från regional till zonindelad konfiguration via portalen.