Dela via


Migrera IaaS-resurser från klassisk till Azure Resource Manager med hjälp av PowerShell

Gäller för: ✔️ Virtuella Linux-datorer ✔️, virtuella Windows-datorer

Viktigt!

Idag använder cirka 90 % av de virtuella IaaS-datorerna Azure Resource Manager. Från och med den 28 februari 2020 har klassiska virtuella datorer blivit inaktuella och kommer att dras tillbaka helt den 6 september 2023. Läs mer om den här utfasningen och hur den påverkar dig.

De här stegen visar hur du använder Azure PowerShell-kommandon för att migrera IaaS-resurser (infrastruktur som en tjänst) från den klassiska distributionsmodellen till Azure Resource Manager-distributionsmodellen.

Om du vill kan du också migrera resurser med hjälp av Azure CLI.


Här är ett flödesschema för att identifiera i vilken ordning stegen måste utföras under en migreringsprocess.

Skärmbild som visar migreringsstegen

Steg 1: Planera för migrering

Här följer några metodtips som vi rekommenderar när du utvärderar om du vill migrera IaaS-resurser från klassisk till Resource Manager:

  • Läs igenom funktioner och konfigurationer som stöds och inte stöds. Om du har virtuella datorer som använder konfigurationer eller funktioner som inte stöds väntar du på att konfigurations- eller funktionsstödet ska tillkännages. Om den passar dina behov kan du också ta bort den funktionen eller flytta från den konfigurationen för att aktivera migrering.
  • Om du har automatiserade skript som distribuerar din infrastruktur och dina program i dag kan du försöka skapa en liknande testkonfiguration med hjälp av dessa skript för migrering. Du kan också konfigurera exempelmiljöer med hjälp av Azure-portalen.

Viktigt!

Programgatewayer stöds för närvarande inte för migrering från klassisk till Resource Manager. Om du vill migrera ett virtuellt nätverk med en programgateway tar du bort gatewayen innan du kör en Prepare-åtgärd för att flytta nätverket. När du har slutfört migreringen återansluter du gatewayen i Azure Resource Manager.

Azure ExpressRoute-gatewayer som ansluter till ExpressRoute-kretsar i en annan prenumeration kan inte migreras automatiskt. I sådana fall tar du bort ExpressRoute-gatewayen, migrerar det virtuella nätverket och återskapar gatewayen. Mer information finns i Migrera ExpressRoute-kretsar och associerade virtuella nätverk från den klassiska till Resource Manager-distributionsmodellen.

Steg 2: Installera den senaste versionen av PowerShell

Det finns två huvudsakliga alternativ för att installera Azure PowerShell: PowerShell-galleriet eller webplattformsinstallationsprogrammet (WebPI). WebPI tar emot månatliga uppdateringar. PowerShell-galleriet tar emot uppdateringar kontinuerligt. Den här artikeln baseras på Azure PowerShell version 2.1.0.

Installationsinstruktioner finns i Installera och konfigurera Azure PowerShell.

Steg 3: Kontrollera att du är administratör för prenumerationen

Om du vill utföra den här migreringen måste du läggas till som en coadministrator för prenumerationen i Azure-portalen.

  1. Logga in på Azure-portalen.
  2. På hubbmenyn väljer du Prenumeration. Om du inte ser den väljer du Alla tjänster.
  3. Leta rätt prenumerationspost och titta sedan på fältet MIN ROLL . För en coadministrator ska värdet vara Kontoadministratör.

Om du inte kan lägga till en medadministratör kontaktar du en tjänstadministratör eller medadministratör för att få prenumerationen tillagd.

Steg 4: Konfigurera din prenumeration och registrera dig för migrering

Starta först en PowerShell-prompt. För migrering konfigurerar du din miljö för både klassiska och Resource Manager.

Logga in på ditt konto för Resource Manager-modellen.

    Connect-AzAccount

Hämta tillgängliga prenumerationer med hjälp av följande kommando:

    Get-AzSubscription | Sort Name | Select Name

Ange din Azure-prenumeration för den aktuella sessionen. I det här exemplet anges standardprenumerationsnamnet till Min Azure-prenumeration. Ersätt exempelprenumerationsnamnet med ditt eget.

    Select-AzSubscription –SubscriptionName "My Azure Subscription"

Kommentar

Registrering är ett engångssteg, men du måste göra det en gång innan du försöker migrera. Utan att registrera dig visas följande felmeddelande:

BadRequest: Prenumerationen är inte registrerad för migrering.

Registrera med migreringsresursprovidern med hjälp av följande kommando:

    Register-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Vänta fem minuter tills registreringen har slutförts. Kontrollera statusen för godkännandet med hjälp av följande kommando:

    Get-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Kontrollera att RegistrationState är Registered innan du fortsätter.

Innan du byter till den klassiska distributionsmodellen kontrollerar du att du har tillräckligt med virtuella Azure Resource Manager-vCPU:er i Azure-regionen för din aktuella distribution eller det virtuella nätverket. Du kan använda följande PowerShell-kommando för att kontrollera det aktuella antalet virtuella processorer som du har i Azure Resource Manager. Mer information om vCPU-kvoter finns i Gränser och Azure Resource Manager.

I det här exemplet kontrolleras tillgängligheten i regionen USA , västra. Ersätt namnet på exempelregionen med ditt eget.

    Get-AzVMUsage -Location "West US"

Logga nu in på ditt konto för den klassiska distributionsmodellen.

    Add-AzureAccount

Hämta tillgängliga prenumerationer med hjälp av följande kommando:

    Get-AzureSubscription | Sort SubscriptionName | Select SubscriptionName

Ange din Azure-prenumeration för den aktuella sessionen. I det här exemplet anges standardprenumerationen till Min Azure-prenumeration. Ersätt exempelprenumerationsnamnet med ditt eget.

    Select-AzureSubscription –SubscriptionName "My Azure Subscription"

Steg 5: Kör kommandon för att migrera dina IaaS-resurser

Kommentar

Alla åtgärder som beskrivs här är idempotent. Om du har ett annat problem än en funktion som inte stöds eller ett konfigurationsfel rekommenderar vi att du försöker förbereda, avbryta eller genomföra igen. Plattformen försöker sedan åtgärden igen.

Steg 5a: Alternativ 1 – Migrera virtuella datorer i en molntjänst (inte i ett virtuellt nätverk)

Hämta listan över molntjänster med hjälp av följande kommando. Välj sedan den molntjänst som du vill migrera. Om de virtuella datorerna i molntjänsten finns i ett virtuellt nätverk eller om de har webb- eller arbetsroller returnerar kommandot ett felmeddelande.

    Get-AzureService | ft Servicename

Hämta distributionsnamnet för molntjänsten. I det här exemplet är tjänstnamnet Min tjänst. Ersätt exempeltjänstens namn med ditt eget tjänstnamn.

    $serviceName = "My Service"
    $deployment = Get-AzureDeployment -ServiceName $serviceName
    $deploymentName = $deployment.DeploymentName

Förbered de virtuella datorerna i molntjänsten för migrering. Du har två alternativ att välja mellan.

  • Alternativ 1: Migrera de virtuella datorerna till ett plattformsskapade virtuella nätverk.

    Kontrollera först att du kan migrera molntjänsten med hjälp av följande kommandon:

    $validate = Move-AzureService -Validate -ServiceName $serviceName `
        -DeploymentName $deploymentName -CreateNewVirtualNetwork
    $validate.ValidationMessages
    

    Följande kommando visar varningar och fel som blockerar migrering. Om valideringsmeddelanden inte innehåller ett meddelande av typen fel kan du gå vidare till steget Förbered.

    Move-AzureService -Prepare -ServiceName $serviceName `
        -DeploymentName $deploymentName -CreateNewVirtualNetwork
    
  • Alternativ 2: Migrera till ett befintligt virtuellt nätverk i Resource Manager-distributionsmodellen.

    Det här exemplet anger resursgruppens namn till myResourceGroup, det virtuella nätverksnamnet till myVirtualNetwork och undernätets namn till mySubNet. Ersätt namnen i exemplet med namnen på dina egna resurser.

    $existingVnetRGName = "myResourceGroup"
    $vnetName = "myVirtualNetwork"
    $subnetName = "mySubNet"
    

    Kontrollera först att du kan migrera det virtuella nätverket med hjälp av följande kommando:

    $validate = Move-AzureService -Validate -ServiceName $serviceName `
        -DeploymentName $deploymentName -UseExistingVirtualNetwork -VirtualNetworkResourceGroupName $existingVnetRGName -VirtualNetworkName $vnetName -SubnetName $subnetName
    $validate.ValidationMessages
    

    Följande kommando visar varningar och fel som blockerar migrering. Om valideringsmeddelanden inte innehåller fel kan du fortsätta med följande Förbered-steg:

        Move-AzureService -Prepare -ServiceName $serviceName -DeploymentName $deploymentName `
        -UseExistingVirtualNetwork -VirtualNetworkResourceGroupName $existingVnetRGName `
        -VirtualNetworkName $vnetName -SubnetName $subnetName
    

När åtgärden Förbered har slutförts med något av ovanstående alternativ frågar du migreringstillståndet för de virtuella datorerna. Se till att de är i Prepared tillståndet.

I det här exemplet anges namnet på den virtuella datorn till myVM. Ersätt exempelnamnet med ditt eget namn på den virtuella datorn.

    $vmName = "myVM"
    $vm = Get-AzureVM -ServiceName $serviceName -Name $vmName
    $vm.VM.MigrationState

Kontrollera konfigurationen för de förberedda resurserna med hjälp av antingen PowerShell eller Azure-portalen. Om du inte är redo för migrering och vill återgå till det gamla tillståndet använder du följande kommando:

    Move-AzureService -Abort -ServiceName $serviceName -DeploymentName $deploymentName

Om den förberedda konfigurationen ser bra ut kan du gå vidare och checka in resurserna med hjälp av följande kommando:

    Move-AzureService -Commit -ServiceName $serviceName -DeploymentName $deploymentName

Steg 5a: Alternativ 2 – Migrera virtuella datorer i ett virtuellt nätverk

Om du vill migrera virtuella datorer i ett virtuellt nätverk migrerar du det virtuella nätverket. De virtuella datorerna migreras automatiskt med det virtuella nätverket. Välj det virtuella nätverk som du vill migrera.

Kommentar

Migrera en enskild virtuell dator som skapats med den klassiska distributionsmodellen genom att skapa en ny virtuell Resource Manager-dator med hanterade diskar med hjälp av VHD-filerna (OS och data) på den virtuella datorn.

Kommentar

Namnet på det virtuella nätverket kan vara ett annat än det som visas i den nya portalen. Den nya Azure-portalen visar namnet som [vnet-name], men det faktiska virtuella nätverksnamnet är av typen Group [resource-group-name] [vnet-name]. Innan du påbörjar migreringen letar du upp det faktiska namnet på det virtuella nätverket med hjälp av kommandot Get-AzureVnetSite | Select -Property Name eller visar det i den gamla Azure-portalen.

I följande exempel anges namnet på det virtuella nätverket till Grupp [resource-group-name] [vnet-name]. Ersätt exemplet med namnet på det virtuella nätverket med ett som returnerades från att köra kommandot i avsnittet Anteckning ovan.

    $vnetName = "Group [resource-group-name] [vnet-name]"

Kommentar

Om det virtuella nätverket innehåller webb- eller arbetsroller eller virtuella datorer med konfigurationer som inte stöds får du ett verifieringsfelmeddelande.

Kontrollera först att du kan migrera det virtuella nätverket med hjälp av följande kommando:

    Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName

Följande kommando visar varningar och fel som blockerar migrering. Om valideringen lyckas kan du fortsätta med följande Förbered-steg:

    Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName

Kontrollera konfigurationen för de förberedda virtuella datorerna med hjälp av antingen Azure PowerShell eller Azure-portalen. Om du inte är redo för migrering och vill återgå till det gamla tillståndet använder du följande kommando:

    Move-AzureVirtualNetwork -Abort -VirtualNetworkName $vnetName

Om den förberedda konfigurationen ser bra ut kan du gå vidare och checka in resurserna med hjälp av följande kommando:

    Move-AzureVirtualNetwork -Commit -VirtualNetworkName $vnetName

Steg 5b: Migrera ett lagringskonto

När du har migrerat de virtuella datorerna utför du följande nödvändiga kontroller innan du migrerar lagringskontona.

Kommentar

Om ditt lagringskonto inte har några associerade diskar eller VM-data kan du hoppa direkt till avsnittet "Verifiera lagringskonton och starta migreringen". Observera också att borttagning av klassiska diskar, VM-avbildningar eller OS-avbildningar inte tar bort VHD-källfilerna i lagringskontot. Det bryter dock lånet för dessa VHD-filer så att de kan återanvändas för att skapa ARM-diskar eller bilder efter migreringen.

  • Kravkontroller om du har migrerat några virtuella datorer eller om ditt lagringskonto har diskresurser:

    • Migrera virtuella datorer vars diskar lagras i lagringskontot.

      Följande kommando returnerar egenskaperna RoleName och DiskName för alla virtuella datordiskar i lagringskontot. RoleName är namnet på den virtuella dator som en disk är ansluten till. Om det här kommandot returnerar diskar ska du se till att virtuella datorer som dessa diskar är anslutna till migreras innan du migrerar lagringskontot.

       $storageAccountName = 'yourStorageAccountName'
        Get-AzureDisk | where-Object {$_.MediaLink.Host.Contains($storageAccountName)} | Select-Object -ExpandProperty AttachedTo -Property `
        DiskName | Format-List -Property RoleName, DiskName
      
      
    • Ta bort icke anslutna virtuella datordiskar som lagras i lagringskontot.

      Hitta icke anslutna virtuella datordiskar i lagringskontot med hjälp av följande kommando:

          $storageAccountName = 'yourStorageAccountName'
          Get-AzureDisk | where-Object {$_.MediaLink.Host.Contains($storageAccountName)} | Where-Object -Property AttachedTo -EQ $null | Format-List -Property DiskName  
      
      

      Om föregående kommando returnerar diskar tar du bort dessa diskar med hjälp av följande kommando:

         Remove-AzureDisk -DiskName 'yourDiskName'
      
    • Ta bort VM-avbildningar som lagras i lagringskontot.

      Följande kommando returnerar alla VM-avbildningar med OS-diskar som lagras i lagringskontot.

         Get-AzureVmImage | Where-Object { $_.OSDiskConfiguration.MediaLink -ne $null -and $_.OSDiskConfiguration.MediaLink.Host.Contains($storageAccountName)`
                                 } | Select-Object -Property ImageName, ImageLabel
      

      Följande kommando returnerar alla VM-avbildningar med datadiskar som lagras i lagringskontot.

      
         Get-AzureVmImage | Where-Object {$_.DataDiskConfigurations -ne $null `
                                          -and ($_.DataDiskConfigurations | Where-Object {$_.MediaLink -ne $null -and $_.MediaLink.Host.Contains($storageAccountName)}).Count -gt 0 `
                                         } | Select-Object -Property ImageName, ImageLabel
      

      Ta bort alla VM-avbildningar som returnerades av föregående kommandon med hjälp av det här kommandot:

      Remove-AzureVMImage -ImageName 'yourImageName'
      
  • Verifiera lagringskonton och starta migreringen.

    Verifiera varje lagringskonto för migrering med hjälp av följande kommando. I det här exemplet är lagringskontonamnet myStorageAccount. Ersätt exempelnamnet med namnet på ditt eget lagringskonto.

        $storageAccountName = "myStorageAccount"
        Move-AzureStorageAccount -Validate -StorageAccountName $storageAccountName
    

    Nästa steg är att förbereda lagringskontot för migrering.

        $storageAccountName = "myStorageAccount"
        Move-AzureStorageAccount -Prepare -StorageAccountName $storageAccountName
    

    Kontrollera konfigurationen för det förberedda lagringskontot med hjälp av antingen Azure PowerShell eller Azure-portalen. Om du inte är redo för migrering och vill återgå till det gamla tillståndet använder du följande kommando:

        Move-AzureStorageAccount -Abort -StorageAccountName $storageAccountName
    

    Om den förberedda konfigurationen ser bra ut kan du gå vidare och checka in resurserna med hjälp av följande kommando:

        Move-AzureStorageAccount -Commit -StorageAccountName $storageAccountName
    

Nästa steg