使用 PowerShell 迁移到 Azure 云服务(外延支持)
以下步骤说明如何使用 Azure PowerShell 命令从云服务(经典)迁移到云服务(外延支持)。
规划迁移
规划是确保迁移成功的最重要步骤。 在开始执行任何迁移步骤之前,请查看云服务(外延支持)概述和规划将 IaaS 资源从经典部署模型迁移到 Azure 资源管理器部署模型。
安装最新版本的 PowerShell
有两个主要选项可供安装 Azure PowerShell:PowerShell 库或 Web 平台安装程序 (WebPI)。 WebPI 接收每月的更新。 PowerShell 库会持续接收更新。 本文基于 Azure PowerShell 2.1.0 版。
如需安装说明,请参阅 How to install and configure Azure PowerShell(如何安装和配置 Azure PowerShell)。
确保拥有管理员权限
若要执行此迁移,必须在 Azure 门户中将你添加为订阅的共同管理员。
- 登录到 Azure 门户。
- 在“中心”菜单上中选择“订阅”。 如果看不到该选项,请选择“所有服务”。
- 查找相应订阅项,然后查看“我的角色”字段。 对于共同管理员,该值应为“帐户管理员”。
如果无法添加协同管理员,请联系订阅的服务管理员或协同管理员,将自己添加为协同管理员。
注册经典提供程序和 CloudService 功能
首先,请启动 PowerShell 提示符。 对于迁移,请针对经典部署模型和资源管理器部署模型设置环境。
登录到 Resource Manager 模型的帐户。
Connect-AzAccount -Environment AzureChinaCloud
使用以下命令获取可用订阅:
Get-AzSubscription | Sort Name | Select Name
设置当前会话的 Azure 订阅。 此示例将默认订阅名称设置为 My Azure Subscription。 将示例订阅名称替换成自己的名称。
Select-AzSubscription -SubscriptionName "My Azure Subscription"
使用以下命令向迁移资源提供程序注册:
Register-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate
注意
注册是一次性步骤,但必须在尝试迁移之前完成。 如果不注册,则会出现以下错误消息:
BadRequest:Subscription is not registered for migration. (BadRequest:订阅尚未注册迁移。)
为订阅注册 CloudServices 功能。 注册可能需要几分钟才能完成。
Register-AzProviderFeature -FeatureName CloudServices -ProviderNamespace Microsoft.Compute
请等五分钟让注册完成。
使用以下命令检查经典提供程序审批状态:
Get-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate
使用以下命令检查注册状态:
Get-AzProviderFeature -FeatureName CloudServices -ProviderNamespace Microsoft.Compute
在继续操作之前,请确保上述两项的 RegistrationState 为 Registered
。
在切换到经典部署模型之前,请确保在当前部署或虚拟网络的 Azure 区域中有足够的 Azure 资源管理器 vCPU 配额。 可以使用以下 PowerShell 命令检查 Azure 资源管理器中目前的 vCPU 数量。 若要了解有关 vCPU 配额的详细信息,请参阅限制和 Azure 资源管理器。
此示例检查 中国北部 区域的可用性。 使用自己的区域名称替换示例名称。
Get-AzVMUsage -Location "China North"
现在,请登录到经典部署模型的帐户。
Add-AzureAccount -Environment AzureChinaCloud
使用以下命令获取可用订阅:
Get-AzureSubscription | Sort SubscriptionName | Select SubscriptionName
设置当前会话的 Azure 订阅。 此示例将默认订阅设置为 My Azure Subscription。 将示例订阅名称替换成自己的名称。
Select-AzureSubscription -SubscriptionName "My Azure Subscription"
迁移云服务
在开始迁移之前,请了解迁移步骤的工作原理以及每个步骤的目的。
注意
此处描述的所有操作都是幂等的。 如果遇到功能不受支持或配置错误以外的问题,建议重试准备、中止或提交操作。 然后,平台会尝试再次操作。
选项 1 - 迁移不在虚拟网络中的云服务
使用以下命令获取云服务列表。 然后选取要迁移的云服务。
Get-AzureService | ft Servicename
获取云服务的部署名称。 在此示例中,服务名称是 My Service。 使用自己的服务名称替换示例名称。
$serviceName = "My Service"
$deployment = Get-AzureDeployment -ServiceName $serviceName
$deploymentName = $deployment.DeploymentName
首先,使用以下命令验证是否可以迁移云服务。 此命令会显示任何阻止迁移的错误。
$validate = Move-AzureService -Validate -ServiceName $serviceName -DeploymentName $deploymentName -CreateNewVirtualNetwork
$validate.ValidationMessages
如果验证成功或只有警告,可继续执行“准备”步骤。
Move-AzureService -Prepare -ServiceName $serviceName -DeploymentName $deploymentName -CreateNewVirtualNetwork
使用 Azure PowerShell 或 Azure 门户检查已准备好的云服务(外延支持)的配置。 如果尚未做好迁移准备,因此想要回到旧的状态,请中止迁移。
Move-AzureService -Abort -ServiceName $serviceName -DeploymentName $deploymentName
如果已准备好完成迁移,请提交该迁移
Move-AzureService -Commit -ServiceName $serviceName -DeploymentName $deploymentName
选项 2 - 迁移虚拟网络中的云服务
若要迁移虚拟网络中的云服务,请迁移虚拟网络。 云服务会自动随虚拟网络一起迁移。
注意
虚拟网络名称可能和新门户中显示的名称不同。 新的 Azure 门户显示名称为 [vnet-name]
,但实际的虚拟网络名称的类型是 Group [resource-group-name] [vnet-name]
。 在开始迁移之前,请使用命令 Get-AzureVnetSite | Select -Property Name
查找实际的虚拟网络名称,或者在旧版 Azure 门户中查看它。
此示例将虚拟网络名称设置为 myVnet。 使用自己的虚拟网络名称替换示例名称。
$vnetName = "myVnet"
首先,使用以下命令验证用户是否可以迁移虚拟网络:
Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName
以下命令会显示任何阻止迁移的警告和错误。 如果验证成功,则可继续执行以下准备步骤:
Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName
使用 Azure PowerShell 或 Azure 门户检查已准备好的云服务(外延支持)的配置。 如果尚未做好迁移准备,因此想要回到旧的状态,请使用以下命令:
Move-AzureVirtualNetwork -Abort -VirtualNetworkName $vnetName
如果准备好的配置看起来没问题,则可继续进行,使用以下命令提交资源:
Move-AzureVirtualNetwork -Commit -VirtualNetworkName $vnetName
后续步骤
查看迁移后的更改部分,以了解新云服务(外延支持)部署的部署文件、自动化和其他特性中的更改。