Migrowanie zasobów IaaS z modelu klasycznego do modelu opartego na usłudze Azure Resource Manager przy użyciu programu PowerShell

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux maszyny wirtualne z ✔️ systemem Windows

Ważne

Obecnie około 90% maszyn wirtualnych IaaS korzysta z usługi Azure Resource Manager. Od 28 lutego 2020 r. klasyczne maszyny wirtualne zostały przestarzałe i zostaną w pełni wycofane 6 września 2023 r. Dowiedz się więcej o tym wycofaniu i o tym, jak wpływa na Ciebie.

W tych krokach pokazano, jak używać poleceń Azure PowerShell do migrowania zasobów infrastruktury jako usługi (IaaS) z klasycznego modelu wdrażania do modelu wdrażania usługi Azure Resource Manager.

Jeśli chcesz, możesz również migrować zasoby przy użyciu interfejsu wiersza polecenia platformy Azure.


Oto schemat blokowy, aby zidentyfikować kolejność, w której należy wykonać kroki podczas procesu migracji.

Zrzut ekranu przedstawiający kroki migracji

Krok 1. Planowanie migracji

Poniżej przedstawiono kilka najlepszych rozwiązań, które zalecamy podczas oceny, czy przeprowadzić migrację zasobów IaaS z wersji klasycznej do Resource Manager:

  • Zapoznaj się z obsługiwanymi i nieobsługiwanymi funkcjami i konfiguracjami. Jeśli masz maszyny wirtualne korzystające z nieobsługiwanych konfiguracji lub funkcji, poczekaj na ogłoszenie konfiguracji lub obsługi funkcji. Alternatywnie, jeśli odpowiada Twoim potrzebom, usuń tę funkcję lub wyjmij ją z tej konfiguracji, aby umożliwić migrację.
  • Jeśli masz obecnie zautomatyzowane skrypty, które wdrażają infrastrukturę i aplikacje, spróbuj utworzyć podobną konfigurację testową przy użyciu tych skryptów do migracji. Alternatywnie można skonfigurować przykładowe środowiska przy użyciu Azure Portal.

Ważne

Bramy aplikacji nie są obecnie obsługiwane w przypadku migracji z wersji klasycznej do Resource Manager. Aby przeprowadzić migrację sieci wirtualnej za pomocą bramy aplikacji, usuń bramę przed uruchomieniem operacji Przygotowanie, aby przenieść sieć. Po zakończeniu migracji ponownie połącz bramę w usłudze Azure Resource Manager.

Bramy usługi Azure ExpressRoute łączące się z obwodami usługi ExpressRoute w innej subskrypcji nie mogą być migrowane automatycznie. W takich przypadkach usuń bramę usługi ExpressRoute, zmigruj sieć wirtualną i ponownie utwórz bramę. Aby uzyskać więcej informacji, zobacz Migrowanie obwodów usługi ExpressRoute i skojarzonych sieci wirtualnych z modelu klasycznego do modelu wdrażania Resource Manager.

Krok 2. Instalowanie najnowszej wersji programu PowerShell

Istnieją dwie główne opcje instalacji Azure PowerShell: Galeria programu PowerShell lub Instalator platformy internetowej (WebPI). Interfejs WebPI otrzymuje comiesięczne aktualizacje. Galeria programu PowerShell otrzymuje aktualizacje w sposób ciągły. Ten artykuł jest oparty na Azure PowerShell wersji 2.1.0.

Aby uzyskać instrukcje instalacji, zobacz How to install and configure Azure PowerShell (Jak zainstalować i skonfigurować Azure PowerShell).

Krok 3. Upewnij się, że jesteś administratorem subskrypcji

Aby przeprowadzić tę migrację, należy dodać go jako współadministratora subskrypcji w Azure Portal.

  1. Zaloguj się w witrynie Azure Portal.
  2. W menu Centrum wybierz pozycję Subskrypcja. Jeśli go nie widzisz, wybierz pozycję Wszystkie usługi.
  3. Znajdź odpowiedni wpis subskrypcji, a następnie zapoznaj się z polem MOJA ROLA . W przypadku współadministratora wartość powinna być administratorem konta.

Jeśli nie możesz dodać współadministratora, skontaktuj się z administratorem usługi lub współadministratorem subskrypcji, aby samodzielnie dodać subskrypcję.

Krok 4. Ustawianie subskrypcji i rejestrowanie się w celu migracji

Najpierw uruchom wiersz polecenia programu PowerShell. Na potrzeby migracji skonfiguruj środowisko zarówno dla wersji klasycznej, jak i Resource Manager.

Zaloguj się do swojego konta dla modelu Resource Manager.

    Connect-AzAccount

Pobierz dostępne subskrypcje przy użyciu następującego polecenia:

    Get-AzSubscription | Sort Name | Select Name

Ustaw subskrypcję platformy Azure dla bieżącej sesji. W tym przykładzie ustawiono domyślną nazwę subskrypcji na Wartość Moja subskrypcja platformy Azure. Zastąp przykładowa nazwa subskrypcji własną nazwą.

    Select-AzSubscription –SubscriptionName "My Azure Subscription"

Uwaga

Rejestracja jest jednorazowym krokiem, ale należy to zrobić raz przed podjęciem próby migracji. Bez rejestrowania zostanie wyświetlony następujący komunikat o błędzie:

BadRequest: subskrypcja nie jest zarejestrowana do migracji.

Zarejestruj się przy użyciu dostawcy zasobów migracji, używając następującego polecenia:

    Register-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Poczekaj pięć minut na zakończenie rejestracji. Sprawdź stan zatwierdzenia, używając następującego polecenia:

    Get-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Przed kontynuowaniem upewnij się, że wartość RegistrationState jest Registered włączona.

Przed przejściem do klasycznego modelu wdrażania upewnij się, że masz wystarczającą liczbę procesorów wirtualnych maszyn wirtualnych platformy Azure Resource Manager w regionie platformy Azure bieżącego wdrożenia lub sieci wirtualnej. Aby sprawdzić bieżącą liczbę procesorów wirtualnych dostępnych w usłudze Azure Resource Manager, możesz użyć następującego polecenia programu PowerShell. Aby dowiedzieć się więcej na temat limitów przydziałów procesorów wirtualnych, zobacz Limity i Resource Manager Platformy Azure.

W tym przykładzie sprawdza dostępność w regionie Zachodnie stany USA . Zastąp nazwę przykładowego regionu własną nazwą.

    Get-AzVMUsage -Location "West US"

Teraz zaloguj się do swojego konta dla klasycznego modelu wdrażania.

    Add-AzureAccount

Pobierz dostępne subskrypcje przy użyciu następującego polecenia:

    Get-AzureSubscription | Sort SubscriptionName | Select SubscriptionName

Ustaw subskrypcję platformy Azure dla bieżącej sesji. W tym przykładzie ustawiono domyślną subskrypcję na Wartość Moja subskrypcja platformy Azure. Zastąp przykładowa nazwa subskrypcji własną nazwą.

    Select-AzureSubscription –SubscriptionName "My Azure Subscription"

Krok 5. Uruchamianie poleceń w celu migracji zasobów IaaS

Uwaga

Wszystkie operacje opisane tutaj są idempotentne. Jeśli masz problem inny niż nieobsługiwana funkcja lub błąd konfiguracji, zalecamy ponowić próbę wykonania operacji przygotowywania, przerwania lub zatwierdzenia. Platforma spróbuje ponownie wykonać akcję.

Krok 5a: Opcja 1 — Migrowanie maszyn wirtualnych w usłudze w chmurze (nie w sieci wirtualnej)

Pobierz listę usług w chmurze przy użyciu następującego polecenia. Następnie wybierz usługę w chmurze, którą chcesz przeprowadzić migrację. Jeśli maszyny wirtualne w usłudze w chmurze znajdują się w sieci wirtualnej lub mają role sieci Web lub procesu roboczego, polecenie zwraca komunikat o błędzie.

    Get-AzureService | ft Servicename

Pobierz nazwę wdrożenia dla usługi w chmurze. W tym przykładzie nazwa usługi to Moja usługa. Zastąp przykładową nazwę usługi własną nazwą usługi.

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

Przygotuj maszyny wirtualne w usłudze w chmurze do migracji. Dostępne są dwie opcje wyboru.

  • Opcja 1. Migrowanie maszyn wirtualnych do utworzonej przez platformę sieci wirtualnej.

    Najpierw sprawdź, czy możesz przeprowadzić migrację usługi w chmurze przy użyciu następujących poleceń:

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

    Następujące polecenie wyświetla wszelkie ostrzeżenia i błędy blokujące migrację. Jeśli komunikaty sprawdzania poprawności nie zawierają komunikatu o błędzie typu, możesz przejść do kroku Przygotowywanie.

    Move-AzureService -Prepare -ServiceName $serviceName `
        -DeploymentName $deploymentName -CreateNewVirtualNetwork
    
  • Opcja 2. Migracja do istniejącej sieci wirtualnej w modelu wdrażania Resource Manager.

    Ten przykład ustawia nazwę grupy zasobów na myResourceGroup, nazwę sieci wirtualnej na myVirtualNetwork i nazwę podsieci mySubNetnet. Zastąp nazwy w przykładzie nazwami własnych zasobów.

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

    Najpierw sprawdź, czy możesz przeprowadzić migrację sieci wirtualnej przy użyciu następującego polecenia:

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

    Następujące polecenie wyświetla wszelkie ostrzeżenia i błędy blokujące migrację. Jeśli komunikaty sprawdzania poprawności nie zawierają błędów, możesz wykonać następujący krok Przygotowywania:

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

Po pomyślnym wykonaniu operacji Prepare z jedną z powyższych opcji wykonaj zapytanie dotyczące stanu migracji maszyn wirtualnych. Upewnij się, że są w Prepared stanie.

W tym przykładzie ustawiono nazwę maszyny wirtualnej na maszynę wirtualną myVM. Zastąp nazwę przykładu własną nazwą maszyny wirtualnej.

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

Sprawdź konfigurację przygotowanych zasobów przy użyciu programu PowerShell lub Azure Portal. Jeśli nie jesteś gotowy do migracji i chcesz wrócić do starego stanu, użyj następującego polecenia:

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

Jeśli przygotowana konfiguracja wygląda dobrze, możesz przejść do przodu i zatwierdzić zasoby przy użyciu następującego polecenia:

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

Krok 5a: Opcja 2 — Migrowanie maszyn wirtualnych w sieci wirtualnej

Aby przeprowadzić migrację maszyn wirtualnych w sieci wirtualnej, należy przeprowadzić migrację sieci wirtualnej. Maszyny wirtualne są automatycznie migrowane z siecią wirtualną. Wybierz sieć wirtualną, którą chcesz przeprowadzić migrację.

Uwaga

Migrowanie pojedynczej maszyny wirtualnej utworzonej przy użyciu klasycznego modelu wdrażania przez utworzenie nowej maszyny wirtualnej Resource Manager z Dyski zarządzane przy użyciu plików VHD (OS i danych) maszyny wirtualnej.

Uwaga

Nazwa sieci wirtualnej może różnić się od nazwy wyświetlanej w nowym portalu. Nowa Azure Portal wyświetla nazwę jako [vnet-name], ale rzeczywista nazwa sieci wirtualnej ma typ Group [resource-group-name] [vnet-name]. Przed rozpoczęciem migracji wyszukaj rzeczywistą nazwę sieci wirtualnej przy użyciu polecenia Get-AzureVnetSite | Select -Property Name lub wyświetl ją w starym Azure Portal.

W poniższym przykładzie ustawiono nazwę sieci wirtualnej na grupę [nazwa-grupy zasobów][nazwa sieci wirtualnej]. Zastąp przykładowa nazwa sieci wirtualnej nazwą, która została zwrócona z uruchomienia polecenia w powyższej sekcji Uwaga .

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

Uwaga

Jeśli sieć wirtualna zawiera role sieci Web lub procesu roboczego albo maszyny wirtualne z nieobsługiwanymi konfiguracjami, zostanie wyświetlony komunikat o błędzie walidacji.

Najpierw sprawdź, czy możesz przeprowadzić migrację sieci wirtualnej przy użyciu następującego polecenia:

    Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName

Następujące polecenie wyświetla wszelkie ostrzeżenia i błędy blokujące migrację. Jeśli walidacja zakończy się pomyślnie, możesz wykonać następujący krok Przygotowywanie:

    Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName

Sprawdź konfigurację przygotowanych maszyn wirtualnych przy użyciu Azure PowerShell lub Azure Portal. Jeśli nie jesteś gotowy do migracji i chcesz wrócić do starego stanu, użyj następującego polecenia:

    Move-AzureVirtualNetwork -Abort -VirtualNetworkName $vnetName

Jeśli przygotowana konfiguracja wygląda dobrze, możesz przejść do przodu i zatwierdzić zasoby przy użyciu następującego polecenia:

    Move-AzureVirtualNetwork -Commit -VirtualNetworkName $vnetName

Krok 5b. Migrowanie konta magazynu

Po zakończeniu migracji maszyn wirtualnych przed migracją kont magazynu wykonaj następujące testy wstępne.

Uwaga

Jeśli konto magazynu nie ma skojarzonych dysków ani danych maszyny wirtualnej, możesz przejść bezpośrednio do sekcji "Weryfikowanie kont magazynu i rozpoczynanie migracji". Należy również pamiętać, że usunięcie dysków klasycznych, obrazów maszyn wirtualnych lub obrazów systemu operacyjnego nie powoduje usunięcia źródłowych plików VHD na koncie magazynu. Jednak przerywa dzierżawę tych plików VHD, aby można było ich użyć ponownie do tworzenia dysków arm lub obrazów po migracji.

  • Wymagania wstępne sprawdzają, czy zostały zmigrowane jakiekolwiek maszyny wirtualne lub konto magazynu ma zasoby dysku:

    • Migrowanie maszyn wirtualnych, których dyski są przechowywane na koncie magazynu.

      Następujące polecenie zwraca właściwości RoleName i DiskName wszystkich dysków maszyn wirtualnych na koncie magazynu. RoleName to nazwa maszyny wirtualnej, do której jest dołączony dysk. Jeśli to polecenie zwróci dyski, upewnij się, że maszyny wirtualne, do których te dyski są dołączone, zostaną zmigrowane przed migracją konta magazynu.

       $storageAccountName = 'yourStorageAccountName'
        Get-AzureDisk | where-Object {$_.MediaLink.Host.Contains($storageAccountName)} | Select-Object -ExpandProperty AttachedTo -Property `
        DiskName | Format-List -Property RoleName, DiskName
      
      
    • Usuń nieprzyłączone dyski maszyn wirtualnych przechowywane na koncie magazynu.

      Znajdź nieprzyłączone dyski maszyn wirtualnych na koncie magazynu, używając następującego polecenia:

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

      Jeśli poprzednie polecenie zwraca dyski, usuń te dyski przy użyciu następującego polecenia:

         Remove-AzureDisk -DiskName 'yourDiskName'
      
    • Usuń obrazy maszyn wirtualnych przechowywane na koncie magazynu.

      Następujące polecenie zwraca wszystkie obrazy maszyn wirtualnych z dyskami systemu operacyjnego przechowywanymi na koncie magazynu.

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

      Następujące polecenie zwraca wszystkie obrazy maszyn wirtualnych z dyskami danych przechowywanymi na koncie magazynu.

      
         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
      

      Usuń wszystkie obrazy maszyn wirtualnych zwrócone przez poprzednie polecenia przy użyciu następującego polecenia:

      Remove-AzureVMImage -ImageName 'yourImageName'
      
  • Zweryfikuj konta magazynu i rozpocznij migrację.

    Zweryfikuj każde konto magazynu do migracji przy użyciu następującego polecenia. W tym przykładzie nazwa konta magazynu to myStorageAccount. Zastąp przykładową nazwą własnego konta magazynu.

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

    Następnym krokiem jest przygotowanie konta magazynu do migracji.

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

    Sprawdź konfigurację przygotowanego konta magazynu przy użyciu Azure PowerShell lub Azure Portal. Jeśli nie jesteś gotowy do migracji i chcesz wrócić do starego stanu, użyj następującego polecenia:

        Move-AzureStorageAccount -Abort -StorageAccountName $storageAccountName
    

    Jeśli przygotowana konfiguracja wygląda dobrze, możesz przejść do przodu i zatwierdzić zasoby przy użyciu następującego polecenia:

        Move-AzureStorageAccount -Commit -StorageAccountName $storageAccountName
    

Następne kroki