Azure上的ARM模式爲用戶帶來更好的管理,更多新的特性,更好的體驗,所以目前正在使用經典模式(ASM)的用戶,在瞭解和使用了ARM以後,也在考慮如何將原來基於ASM模式的虛擬機,存儲,網絡等IAAS服務轉向ARM模式,本文就來介紹一下相關的工具和服務。git
目前從ASM遷移到ARM,主要有如下一些工具和服務可使用:github
1.平臺內置的遷移服務:這個服務是內置的,只須要你註冊Resource Provider就可使用。shell
主要的優勢:windows
虛擬機無宕機時間網絡
有官方支持;ide
主要缺點工具
遷移粒度只能經過vnet或者雲服務來遷移,沒法根據客戶定製的方式,好比項目進行遷移測試
虛擬機和存儲,網絡要分開遷移,比較繁瑣url
不支持跨地區,跨訂閱的遷移spa
2.ASMtoARM項目:支持單個虛擬機移植的Powershell腳本
官網地址:https://github.com/fullscale180/asm2arm
主要優勢:
自動生成ARM模板和Powershell腳本
靈活組合,支持網絡,NSG等
主要缺點:
沒法支持多個虛擬機遷移
時間較長
有宕機時間(腳本不會幫你關機)
無官方支持
3. MigAZ,一個微軟服務部門開發的遷移工具
官方網址:https://github.com/Azure/classic-iaas-resourcemanager-migration/tree/master/migaz
主要優勢:
能夠在不一樣的訂閱之間遷移
客戶自由選擇須要遷移的資源
自動化遷移存儲的工具
容許不一樣地區之間遷移
主要缺點:
有宕機時間
無官方支持
能夠看到,每一種遷移方式都各有優缺點,你們能夠根據本身的需求選擇合適的方式進行遷移;本系列會主要介紹Azure平臺原生支持的遷移服務以及MigAZ工具,對於基於Powershell的ASMtoARM工具,你們感興趣能夠本身研究一下。
平臺內置的遷移服務,依賴於ClassicInfrastructureMigrate這個resource provider,目前在中國已經上線了,能夠開始使用了。
對於生產環境的遷移,必定要很是謹慎,作好規劃和評估,而後再開始遷移。微軟的ASM到ARM的遷移,有一些基本的方法論,你們能夠作個參考,保證你的遷移過程平滑而順利:
評估 – 評估虛擬機所在虛擬網絡是否知足遷移要求
開始 – 虛擬網絡已經準備好的狀況,能夠開始準備遷移
驗證 – 檢查和驗證所遷移的資源是否正常
提交 – 提交遷移請求,正式遷移
用戶的環境相對而言會比較多樣而複雜,好比在vnet裏的虛擬機,不在vnet裏的虛擬機,帶有gateway的虛擬機等等,咱們先來看一下如何遷移最爲常見的在虛擬網絡中的全部虛擬機。
1.首先咱們準備一個測試的環境,一個Linux虛擬機,在一個vnet裏面,它的存儲帳號是demovmstorage:
2.打開Powershell,登錄到你的資源管理器帳號:
Login-AzureRmAccount -EnvironmentName AzureChinaCloud
3.登錄完成後,首先你要註冊ClassicInfrastructureMigrate,不然後續的遷移沒法使用:
Register-AzureRmResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate
檢查當前ClassicInfrastructureMigrate的註冊狀態,若是你看到狀態變成了Registered,才能夠進行後續的操做。
Get-AzureRmResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate
4.使用ASM登錄到當前的Azure帳號:
Add-AzureAccount -Environment AzureChinaCloud
選擇你的源訂閱:
Select-AzureSubscription -SubscriptionId YOURSUBID
5.在遷移以前,你須要檢查一下你的資源管理器配額,確保你有足夠的資源進行遷移,若是不夠的話,須要打21v 400電話擴展你的配額
Get-AzureRmVMUsage -Location "China East"
6.定義一下你要遷移的虛擬機的虛擬網絡,並驗證一下遷移該虛擬網絡是否有任何問題:
Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName
若是你看到以下的輸出,那麼就證實你的遷移驗證是成功的:
7.根據咱們多階段驗證的操做,你首先須要準備這個操做,而後才能提交這個操做,首先準備這個操做:
Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName
8.而後正式提交這個操做,操做成功後,到經典管理的界面,檢查當前虛擬機,看到已經不見了,這是由於經典的portal只能管理經典模式的虛擬機:
Move-AzureVirtualNetwork -Commit -VirtualNetworkName $vnetName
能夠看到,在經典模式的管理界面中,虛擬網絡和虛擬機都已經看不到了,可是存儲帳號還在,這就意味着虛擬機和網絡已經被遷移到ARM模式,可是存儲並無沒遷移:
9.登陸到新的portal,在資源組頁面,你能夠看到系統已經自動建立了兩個資源組,以原來虛擬機名稱和虛擬網絡,後面加上migrated而成,若是你但願全部的資源在一個資源組中,你能夠手工選擇移動將一個資源組中的全部資源移動到另一箇中:
10. 從上述描述能夠看到,存儲實際上目前仍是保留在經典模式,咱們須要單獨遷移,一樣的步驟,咱們能夠定義存儲,準備遷移,提交遷移:
$storageAccountName = "demovmstorage"
Move-AzureStorageAccount -Prepare -StorageAccountName $storageAccountName
Move-AzureStorageAccount -Validate -StorageAccountName $storageAccountName
Move-AzureStorageAccount -Commit -StorageAccountName $storageAccountName
11.上述遷移成功後,打開新的portal界面,檢查當前新的資源組resource group,能夠看到和以前同樣的規則,產生了一個新的資源組demovmstorage-Migrated,若是你但願他們放在一個資源組,也能夠進行移動:
從本文能夠看到,使用平臺原生的遷移服務,能夠方便的遷移IAAS資源(虛擬機,網絡,存儲):
遷移過程當中系統無中斷
系統自動建立資源組,切分別爲虛擬網絡,虛擬機和存儲單首創建
能夠經過虛擬網絡遷移全部在該網絡中的虛擬機
存儲須要單獨遷移
若是須要,須要手工把多個遷移的資源組合併爲一個
但並非全部的IAAS特性和配置都支持,有些配置和特性目前在平臺支持的遷移服務中還不支持,好比:
虛擬機的自定義鏡像
啓用了啓動診斷的高級存儲虛擬機
虛擬網絡的端點訪問控制
虛擬網關,Traffic manager的配置文件
更多的遷移支持範圍能夠參考:https://docs.microsoft.com/en-us/azure/virtual-machines/virtual-machines-windows-migration-classic-resource-manager