Udostępnij za pośrednictwem


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 wycofane i zostaną w pełni wycofane 6 września 2023 r. Dowiedz się więcej o tym wycofaniu i sposobie jego wpływu na Ciebie.

Te kroki pokazują, jak używać poleceń programu 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 kroki należy wykonać podczas procesu migracji.

Zrzut ekranu przedstawiający kroki migracji

Krok 1. Planowanie migracji

Poniżej przedstawiono kilka najlepszych rozwiązań, które zalecamy, aby ocenić, czy przeprowadzić migrację zasobów IaaS z modelu klasycznego do usługi 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 wyjdź z tej konfiguracji, aby włączyć migrację.
  • Jeśli masz już zautomatyzowane skrypty, które wdrażają infrastrukturę i aplikacje, spróbuj utworzyć podobną konfigurację testu przy użyciu tych skryptów na potrzeby migracji. Alternatywnie możesz skonfigurować przykładowe środowiska przy użyciu witryny Azure Portal.

Ważne

Bramy aplikacji nie są obecnie obsługiwane w przypadku migracji z wersji klasycznej do usługi Resource Manager. Aby przeprowadzić migrację sieci wirtualnej za pomocą bramy aplikacji, usuń bramę przed uruchomieniem operacji Przygotowywania, 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 usługi Resource Manager.

Krok 2. Instalowanie najnowszej wersji programu PowerShell

Istnieją dwie główne opcje instalowania programu Azure PowerShell: Galeria programu PowerShell lub Instalatora 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 programie Azure PowerShell w wersji 2.1.0.

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

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

Aby przeprowadzić tę migrację, należy dodać go jako współadministrator subskrypcji w witrynie 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 przyjrzyj się polu 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 klasycznego, jak i usługi Resource Manager.

Zaloguj się do swojego konta dla modelu usługi 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 Moja subskrypcja platformy Azure. Zastąp nazwę przykładowej subskrypcji własną nazwą.

    Select-AzSubscription –SubscriptionName "My Azure Subscription"

Uwaga

Rejestracja jest jednorazowym krokiem, ale przed podjęciem próby migracji należy to zrobić raz. 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 przy użyciu następującego polecenia:

    Register-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Poczekaj pięć minut na zakończenie rejestracji. Sprawdź stan zatwierdzenia przy użyciu 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 usługi Azure Resource Manager w regionie platformy Azure bieżącego wdrożenia lub sieci wirtualnej. Możesz użyć następującego polecenia programu PowerShell, aby sprawdzić bieżącą liczbę procesorów wirtualnych w usłudze Azure Resource Manager. Aby dowiedzieć się więcej na temat limitów przydziałów procesorów wirtualnych, zobacz Limity i usługa Azure Resource Manager.

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 nazwę przykładowej subskrypcji własną nazwą.

    Select-AzureSubscription –SubscriptionName "My Azure Subscription"

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

Uwaga

Wszystkie opisane tutaj operacje są idempotentne. Jeśli masz problem inny niż nieobsługiwana funkcja lub błąd konfiguracji, zalecamy ponowienie próby wykonania operacji przygotowywania, przerwania lub zatwierdzenia. Następnie 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 jeśli mają role sieci Web lub procesu roboczego, polecenie zwraca komunikat o błędzie.

    Get-AzureService | ft Servicename

Pobierz nazwę wdrożenia 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 zweryfikuj, 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
    

    Poniższe polecenie wyświetla wszelkie ostrzeżenia i błędy, które blokują 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 usługi Resource Manager.

    W tym przykładzie nazwa grupy zasobów jest ustawiana na myResourceGroup, nazwę sieci wirtualnej na myVirtualNetwork i nazwę podsieci mySubNet. Zastąp nazwy w przykładzie nazwami własnych zasobów.

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

    Najpierw zweryfikuj, 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
    

    Poniższe polecenie wyświetla wszelkie ostrzeżenia i błędy, które blokują 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 przygotowywania 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 nazwa maszyny wirtualnej jest ustawiana 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 witryny 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 za pomocą sieci wirtualnej. 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 usługi 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 witryna 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 starej witrynie Azure Portal.

W poniższym przykładzie ustawiono nazwę sieci wirtualnej na grupę [nazwa-grupy zasobów] [nazwa-sieci wirtualnej]. Zastąp nazwę przykładowej 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 weryfikacji.

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

    Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName

Poniższe polecenie wyświetla wszelkie ostrzeżenia i błędy, które blokują migrację. Jeśli walidacja zakończy się pomyślnie, możesz przejść do następującego kroku Przygotowywania:

    Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName

Sprawdź konfigurację przygotowanych maszyn wirtualnych przy użyciu programu Azure PowerShell lub witryny 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 przeprowadzeniem migracji kont magazynu należy wykonać 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 powoduje przerwanie dzierżawy na tych plikach VHD, aby można je było ponownie użyć do tworzenia dysków usługi 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 zwraca dyski, przed migracją konta magazynu upewnij się, że maszyny wirtualne, do których te dyski są dołączone, zostaną zmigrowane.

       $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 przy użyciu 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 tego 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ę 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 programu Azure PowerShell lub witryny 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