使用 Azure PowerShell 将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager
以下步骤演示了如何使用 Azure PowerShell 命令将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Azure Resource Manager 部署模型。
也可根据需要通过 Azure 命令行接口 (Azure CLI) 迁移资源。
- 如需了解受支持的迁移方案的背景信息,请参阅 平台支持的从经典部署模型到 Azure Resource Manager 部署模型的 IaaS 资源迁移。
- 如需详细的指南和迁移演练,请参阅 从技术方面深入探讨如何在支持的平台上完成从经典部署模型到 Azure Resource Manager 部署模型的迁移。
- 查看最常见的迁移错误
下面是一个流程图,用于确定在迁移过程中需要执行步骤的顺序
步骤 1:做好迁移规划
下面是建议在将 IaaS 资源从经典部署模型迁移到 Resource Manager 部署模型时遵循的一些最佳实践:
- 通读受支持的和不受支持的功能和配置。 如果虚拟机使用不受支持的配置或功能,建议等到我们宣布支持该配置/功能时再进行迁移。 也可根据需要删除该功能或移出该配置,以利迁移进行。
- 如果通过自动化脚本来部署目前的基础结构和应用程序,则可尝试使用这些脚本进行迁移,以便创建类似的测试性设置。 也可以使用 Azure 门户设置示例环境。
Important
目前不支持通过应用程序网关从经典部署模型迁移到 Resource Manager 部署模型。 如果要迁移带应用程序网关的经典虚拟网络,请先删除该网关,然后运行准备操作来移动网络。 完成迁移后,在 Azure Resource Manager 中重新连接该网关。
无法自动迁移其他订阅中连接到 ExpressRoute 线路的 ExpressRoute 网关。 此类情况下,请删除 ExpressRoute 网关、迁移虚拟网络并重新创建网关。 有关详细信息,请参阅将 ExpressRoute 线路和关联的虚拟网络从经典部署模型迁移到资源管理器部署模型。
步骤2:安装最新版本的 Azure PowerShell
安装 Azure PowerShell 可以通过两个主要的选项:PowerShell 库或 Web 平台安装程序 (WebPI)。 WebPI 接收每月的更新。 PowerShell 库会持续接收更新。 本文基于 Azure PowerShell 2.1.0 版。
如需安装说明,请参阅 如何安装和配置 Azure PowerShell。
步骤 3:确保你是 Azure 门户中订阅的管理员
若要执行此迁移,必须在 Azure 门户中将你添加为订阅的协同管理员。
- 登录到 Azure 门户。
- 在“中心”菜单上,选择“订阅”。 如果看不到该选项,请先选择“更多服务”。
- 查找相应订阅项,并查看“我的角色”字段。 对于协同管理员,该值应为“帐户管理员”。
如果无法添加协同管理员,请联系订阅的服务管理员或协同管理员,将自己添加为协同管理员。
步骤 4:设置订阅并针对迁移进行注册
首先,请启动 PowerShell 提示符。 对于迁移,需要针对经典部署模型和 Resource Manager 部署模型设置环境。
登录到 Resource Manager 模型的帐户。
Login-AzureRmAccount -EnvironmentName AzureChinaCloud
使用以下命令获取可用订阅:
Get-AzureRMSubscription | Sort Name | Select Name
设置当前会话的 Azure 订阅。 此示例将默认订阅名称设置为 My Azure Subscription。 使用自己的订阅名称替换示例名称。
Select-AzureRmSubscription –SubscriptionName "My Azure Subscription"
Note
注册是一次性步骤,但必须在尝试迁移之前完成。 如果不注册,则会出现以下错误消息:
错误请求:未针对迁移注册订阅。
使用以下命令向迁移资源提供程序注册:
Register-AzureRmResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate
请等五分钟让注册完成。 可以使用以下命令来检查审批状态:
Get-AzureRmResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate
请确保在继续操作之前,RegistrationState 为 Registered
。
现在,请登录到经典模型的帐户。
Add-AzureAccount -Environment AzureChinaCloud
使用以下命令获取可用订阅:
Get-AzureSubscription | Sort SubscriptionName | Select SubscriptionName
设置当前会话的 Azure 订阅。 此示例将默认订阅设置为 My Azure Subscription。 将示例订阅名称替换成自己的名称。
Select-AzureSubscription -SubscriptionName "My Azure Subscription"
步骤 5:确保在当前部署或 VNET 的 Azure 区域中有足够的 Azure Resource Manager 虚拟机核心
可以使用以下 PowerShell 命令检查 Azure Resource Manager 中目前的核心数量。 若要了解有关核心配额的详细信息,请参阅限制和 Azure Resource Manager。
此示例检查 中国北部 区域的可用性。 使用自己的区域名称替换示例名称。
Get-AzureRmVMUsage -Location "China North"
步骤 6:运行迁移 IaaS 资源的命令
Note
此处描述的所有操作都是幂等的。 如果遇到功能不受支持或配置错误以外的问题,建议重试准备、中止或提交操作。 然后,平台会尝试再次操作。
步骤 6.1:选项 1 - 迁移云服务中的虚拟机(不在虚拟网络中)
使用以下命令获取云服务列表,并选取要迁移的云服务。 如果云服务中的 VM 在虚拟网络中或者具有 Web 角色或辅助角色,该命令会返回错误消息。
Get-AzureService | ft Servicename
获取云服务的部署名称。 在此示例中,服务名称是 My Service。 使用自己的服务名称替换示例名称。
$serviceName = "My Service"
$deployment = Get-AzureDeployment -ServiceName $serviceName
$deploymentName = $deployment.DeploymentName
准备迁移云服务中的虚拟机。 可以从两个选项中进行选择。
选项 1.将 VM 迁移到平台所创建的虚拟网络上
首先,使用以下命令验证用户是否可以迁移云服务:
PowerShell复制$validate = Move-AzureService -Validate -ServiceName $serviceName `
-DeploymentName $deploymentName -CreateNewVirtualNetwork
$validate.ValidationMessages
前一个命令会显示任何阻止迁移的警告和错误。 如果验证成功,可继续执行“准备”步骤:
PowerShell复制Move-AzureService -Prepare -ServiceName $serviceName `
-DeploymentName $deploymentName -CreateNewVirtualNetwork
选项 2.迁移到 Resource Manager 部署模型中的现有虚拟网络
此示例将资源组名称设置为 myResourceGroup、将虚拟网络名称设置为 myVirtualNetwork 并将子网名称设置为 mySubNet。 将该示例中的名称替换成自己的资源名称。
PowerShell复制$existingVnetRGName = "myResourceGroup"
$vnetName = "myVirtualNetwork"
$subnetName = "mySubNet"
首先,请使用以下命令验证用户是否可以迁移虚拟网络:
PowerShell复制$validate = Move-AzureService -Validate -ServiceName $serviceName `
-DeploymentName $deploymentName -UseExistingVirtualNetwork -VirtualNetworkResourceGroupName $existingVnetRGName -VirtualNetworkName $vnetName -SubnetName $subnetName
$validate.ValidationMessages
前一个命令会显示任何阻止迁移的警告和错误。 如果验证成功,则可继续执行以下准备步骤:
PowerShell复制Move-AzureService -Prepare -ServiceName $serviceName -DeploymentName $deploymentName `
-UseExistingVirtualNetwork -VirtualNetworkResourceGroupName $existingVnetRGName `
-VirtualNetworkName $vnetName -SubnetName $subnetName
使用前述任一选项成功完成准备操作以后,即可查询 VM 的迁移状态。 确保 VM 处于“ Prepared
”状态。
此示例将 VM 名称设置为 myVM。 使用自己的 VM 名称替换示例名称。
$vmName = "myVM"
$vm = Get-AzureVM -ServiceName $serviceName -Name $vmName
$vm.VM.MigrationState
使用 PowerShell 或 Azure 门户查看准备就绪的资源的配置。 如果尚未做好迁移准备,因此想要回到旧的状态,请使用以下命令:
Move-AzureService -Abort -ServiceName $serviceName -DeploymentName $deploymentName
如果准备好的配置看起来没问题,则可继续进行,使用以下命令提交资源:
Move-AzureService -Commit -ServiceName $serviceName -DeploymentName $deploymentName
步骤 6.1:选项 2 - 迁移虚拟网络中的虚拟机
若要迁移虚拟网络中的虚拟机,可迁移虚拟网络。 虚拟机随虚拟网络自动迁移。 选取要迁移的虚拟网络。
Note
通过使用虚拟机的 VHD(OS 和数据)文件创建新的使用托管磁盘的 Resource Manager 虚拟机来迁移单个经典虚拟机。
Note
虚拟网络名称可能和新门户中显示的名称不同。 新的 Azure 门户显示名称为 [vnet-name]
,但实际的虚拟网络名称的类型是 Group [resource-group-name] [vnet-name]
。 迁移之前,使用命令 Get-AzureVnetSite | Select -Property Name
查找实际的虚拟网络名称,或者在旧版 Azure 门户中查看它。
此示例将虚拟网络名称设置为 myVnet。 使用自己的虚拟网络名称替换示例名称。
$vnetName = "myVnet"
Note
如果虚拟网络包含的 Web 角色/辅助角色或 VM 的配置不受支持,则会出现验证错误消息。
首先,请使用以下命令验证用户是否可以迁移虚拟网络:
Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName
前一个命令会显示任何阻止迁移的警告和错误。 如果验证成功,则可继续执行以下准备步骤:
Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName
使用 Azure PowerShell 或 Azure 门户查看已准备就绪的虚拟机的配置。 如果尚未做好迁移准备,因此想要回到旧的状态,请使用以下命令:
Move-AzureVirtualNetwork -Abort -VirtualNetworkName $vnetName
如果准备好的配置看起来没问题,则可继续进行,使用以下命令提交资源:
Move-AzureVirtualNetwork -Commit -VirtualNetworkName $vnetName
步骤 6.2:迁移存储帐户
完成虚拟机迁移之后,建议迁移存储帐户。
在迁移存储帐户之前,请执行以下先决条件检查:
迁移其磁盘存储在存储帐户中的经典虚拟机
上述命令返回存储帐户中所有经典 VM 磁盘的 RoleName 和 DiskName 属性。 RoleName 是磁盘附加到的虚拟机的名称。 如果上述命令返回了磁盘,请确保先迁移这些磁盘所附加到的虚拟机,再迁移存储帐户。
PowerShell复制$storageAccountName = 'yourStorageAccountName'
Get-AzureDisk | where-Object {$_.MediaLink.Host.Contains($storageAccountName)} | Select-Object -ExpandProperty AttachedTo -Property `
DiskName | Format-List -Property RoleName, DiskName
删除存储帐户中存储的未附加经典 VM 磁盘
使用以下命令查找存储帐户中未附加的经典 VM 磁盘:
PowerShell复制$storageAccountName = 'yourStorageAccountName'
Get-AzureDisk | where-Object {$_.MediaLink.Host.Contains($storageAccountName)} | Where-Object -Property AttachedTo -EQ $null | Format-List -Property DiskName
如果上述命令返回了磁盘,请使用以下命令删除这些磁盘:
PowerShell复制Remove-AzureDisk -DiskName 'yourDiskName'
删除存储帐户中存储的 VM 映像
上述命令返回 OS 磁盘存储在该存储帐户中的所有 VM 映像。
PowerShell复制Get-AzureVmImage | Where-Object { $_.OSDiskConfiguration.MediaLink -ne $null -and $_.OSDiskConfiguration.MediaLink.Host.Contains($storageAccountName)`
} | Select-Object -Property ImageName, ImageLabel
上述命令返回数据磁盘存储在该存储帐户中的所有 VM 映像。
PowerShell复制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
使用前面的命令删除上述命令返回的所有 VM 映像:
PowerShell复制Remove-AzureVMImage -ImageName 'yourImageName'
使用以下命令验证要迁移的每个存储帐户。 在此示例中,存储帐户名称为 myStorageAccount。 使用自己的存储帐户名称替换示例名称。
$storageAccountName = "myStorageAccount"
Move-AzureStorageAccount -Validate -StorageAccountName $storageAccountName
下一步是准备存储帐户以便进行迁移
$storageAccountName = "myStorageAccount"
Move-AzureStorageAccount -Prepare -StorageAccountName $storageAccountName
使用 Azure PowerShell 或 Azure 门户检查准备就绪的存储帐户的配置。 如果尚未做好迁移准备,因此想要回到旧的状态,请使用以下命令:
Move-AzureStorageAccount -Abort -StorageAccountName $storageAccountName
如果准备好的配置看起来没问题,则可继续进行,使用以下命令提交资源:
Move-AzureStorageAccount -Commit -StorageAccountName $storageAccountName
后续步骤
- 平台支持的从经典部署模型到 Azure Resource Manager 部署模型的 IaaS 资源迁移概述
- 有关平台支持的从经典部署模型到 Azure Resource Manager 部署模型的迁移的技术深入探讨
- 规划从经典部署模型到 Azure Resource Manager 的 IaaS 资源迁移
- 使用 CLI 将 IaaS 资源从经典部署模型迁移到 Azure 资源管理器
- 用于帮助将 IaaS 资源从经典部署模型迁移到 Azure 资源管理器部署模型的社区工具
- 查看最常见的迁移错误
- 查看有关将 IaaS 资源从经典部署模型迁移到 Azure 资源管理器部署模型的最常见问题
使用 Azure PowerShell 将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager的更多相关文章
- 使用 Azure CLI 将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager 部署模型
以下步骤演示如何使用 Azure 命令行接口 (CLI) 命令将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Azure Resource Manager 部署模型. 本文中的操作需要 Az ...
- 规划将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager
尽管 Azure 资源管理器提供了许多精彩功能,但请务必计划迁移,以确保一切顺利进行. 花时间进行规划可确保执行迁移活动时不会遇到问题. Note 以下指导的主要参与者为 Azure 客户顾问团队,以 ...
- 有关从经典部署模型迁移到 Azure Resource Manager 部署模型的常见问题
此迁移计划是否影响 Azure 虚拟机上运行的任何现有服务或应用程序? 不可以. VM(经典)是公开上市的完全受支持的服务. 你可以继续使用这些资源来拓展你在 Azure 上的足迹. 如果我近期不打算 ...
- 如何将同一云服务下的虚拟机从经典部署模型迁移到 Azure Resource Manager
适用场景 用户希望将特定云服务下的所有虚拟机从经典部署模型(以下简称:ASM)迁移到 Azure Resource Manager(以下简称:ARM). Note 如果云服务下使用 VNET 也希望将 ...
- 如何将同一 VNET 下的虚拟机从经典部署模型迁移到 Azure Resource Manager
本文内容 适用场景 解决方案 适用场景 用户拥有多个云服务但是在同一个 VNET 下,希望将这些虚拟机从经典部署模型(以下简称:ASM)迁移到 Azure Resource Manager(以下简称: ...
- 平台支持的从经典部署模型到 Azure Resource Manager 的 IaaS 资源迁移
本文介绍如何才能将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Resource Manager 部署模型. 用户可以阅读有关 Azure Resource Manager 功能和优点的更多 ...
- 有关平台支持的从经典部署模型到 Azure Resource Manager 的迁移的技术深入探讨
本文将深入探讨如何从 Azure 经典部署模型迁移到 Azure Resource Manager 部署模型. 本文将介绍资源和功能级别的资源,让用户了解 Azure 平台如何在两种部署模型之间迁移资 ...
- 将 ExpressRoute 线路从经典部署模型转移到 Resource Manager 部署模型
本文概述将 Azure ExpressRoute 线路从经典部署模型转移到 Azure Resource Manager 部署模型的效果. Azure 当前使用两种部署模型:Resource Mana ...
- Azure Powershell对ARM资源的基本操作
本分主要介绍Windows Azure Powershell对ARM资源的基本操作 1.登陆ARM模式,命令:Login-AzureRmAccount -EnvironmentName AzureCh ...
随机推荐
- (转).NET技术大系概览 (迄今为止最全的.NET技术栈)
前言 .Net推出13年了,Visual Studio 2015 / .NET Framework 4.6昨天也发布了. 从2002年的.NET 1.0开始,1.1,2.x,3.x,4.x,每个新版本 ...
- getActionBar()为null的解决方法总结(引用他人)
最近在看android actionBar的使用,环境为AndroidStudio,建一个简单的工程,功能为:两个按钮,一个单击用于显示actionbar,一个用于隐藏actionbar.默认acti ...
- Chrome DevTools的15个使用技巧(译)
谷歌浏览器如今是Web开发者们所使用的最流行的网页浏览器.伴随每六个星期一次的发布周期和不断扩大的强大的开发功能,Chrome变成了一个必须掌握的工具.大多数前端开发者可能熟悉关于chorme的许多特 ...
- 解决securecrt连接centos使用VIM编辑中文时乱码
vim ~/.vimrc 添加两行 set encoding=utf-8 set fileencodings=ucs-bom,utf-8,cp936
- Spark Launcher
- python-queue队列通信
#!/usr/bin/python from multiprocessing import Process,Queue import time l=[] q=Queue() def f(name): ...
- Go语言学习笔记二: 变量
Go语言学习笔记二: 变量 今天又学了一招如何查看go的版本的命令:go version.另外上一个笔记中的代码还可以使用go run hello.go来运行,只是这种方式不会生成exe文件. 定义变 ...
- PHP之string之implode()函数使用
implode (PHP 4, PHP 5, PHP 7) implode - Join array elements with a string implode - 将一个一维数组的值转化为字符串 ...
- FOCUS数据管理:数据字典与多维模型
这是我从工厂出来的第五个年头,也是我第一次主动写年终总结: 回想这一年来一点成就都没有,想想都有点后怕:而且每天还是干着同样的事情,容易被新手代替,由于我比较厌烦每天重复的干同样的活,所以我开始思考是 ...
- C语言读写配置文件--转载
http://www.oschina.net/code/snippet_4873_2503 [].[代码] CException.h 跳至 [] [] [] /******************** ...