你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
移动开发测试实验室和计划
可以将开发测试实验室及其关联的日程安排移到其他区域或资源组。 可以通过 Azure 门户移动资源组。 若要移动实验室,请在另一个区域中创建现有实验室的副本。 移动实验室后,如果目标区域中有虚拟机 (VM),则可以移动实验室计划。
在本文中,学习如何:
- 将资源移动到其他资源组。
- 导出实验室的 Azure 资源管理器 (ARM) 模板。
- 通过添加或更新目标区域及其他参数来修改模板。
- 部署模板以在目标区域中创建新的实验室。
- 配置新的实验室。
- 将数据移到新的实验室。
- 将日程安排移到新实验室。
- 删除源区域中的资源。
先决条件
确保帐户使用的服务和功能在目标区域中受支持。
对于预览功能,请确保你的订阅已列入目标区域的允许列表。
开发测试实验室不会存储密码,也不会从导出的 ARM 模板公开密码。 需要了解以下各项的密码/机密:
- VM
- 已存储的机密
- 专用项目 Repos 的 PAT 令牌,用于将专用 Repos 与实验室一起移动。
移动实验室日程安排时,请确保目标区域中存在计算 VM。
移动实验室
以下部分介绍如何将资源移动到不同的资源组,以及如何创建和自定义 ARM 模板,以将实验室从一个区域移动到另一个区域。
如果目标区域中有 VM,则可以在不移动实验室的情况下移动日程安排。 如果要在不移动实验室的情况下移动日程安排,请参阅移动日程安排。
使用 Azure 门户移动资源组
在开发测试实验室中,现在可以在不同的位置无缝地在资源组之间移动资源。 可以轻松地将任何资源从同一订阅中的一个组转移到另一个组。
首先,选择你要移动的资源。 在资源的“概述”页面上,你会发现当前的“资源组”显示在顶部。 在资源组名称旁边,你会看到 (move)
一词括在括号中。
单击带超链接的 move
文本,这会定向到一个新页面,可以在其中将资源重新定位到同一订阅中的任何其他资源组。 请注意,移动资源不会改变其位置,即使目标资源组位于不同的位置。 如果不通过 Azure 门户移动资源,或者你要转移到不同订阅中的资源组,请参阅下面概述的使用 ARM 的替代方法。
将实验室移动到其他区域
移动实验室时,必须执行一些步骤来为移动做准备。 你需要:
- 准备虚拟网络
- 导出实验室的 ARM 模板
- 修改模板
- 部署移动实验室的模版
- 配置新的实验室
- 交换新 VM 下的计算 VM 的 OS 磁盘
- 清理原始实验室
准备虚拟网络
若要开始,请导出并修改某个资源管理器模板。
登录 Azure 门户。
如果目标区域下没有资源组,请立即创建一个。
使用“将 Azure 虚拟网络移到另一个区域”一文中所述的步骤,将当前虚拟网络移到新的区域和资源组。
或者,如果无需保留原始虚拟网络,可以创建一个新的虚拟网络。
导出实验室的 ARM 模板
接下来,导出 JSON 模板,其中包含描述实验室的设置。
若要使用 Azure 门户导出模板:
选择“所有资源”,然后选择实验室的资源组。
选择“导出模板”。
在“导出模板”中选择“下载”。
找到从门户下载的 .zip 文件,并将该文件解压缩到所选的文件夹。
此 zip 文件包含构成模板的 .json 文件以及用于部署模板的脚本。 它包含实验室下以 ARM 模板格式列出的所有资源(共享映像库资源除外)。
修改模板
为在新的区域中正确部署 ARM 模板,必须更改模板的几个部分。
若要使用 Azure 门户更新模板:
在 Azure 门户中,选择“创建资源”。
在“搜索市场”中键入“模板部署”,然后按 ENTER。
选择“模板部署”。
选择创建。
选择“在编辑器中生成自己的模板”。
选择“加载文件”,然后按说明加载在上一部分下载的 template.json 文件。
在编辑器中,对 template.json 文件进行以下更改:
将原始
location
替换为要在其中进行部署的新区域,如westus2
、southeastasia
等。若要获取区域位置代码,请参阅 Azure 位置。 区域的代码是不含空格的区域名称,“美国中部” =centralus
。"variables": {}, "resources": [ { "type": "microsoft.devtestlab/labs", "location": "centralus",
如果在“实验室设置”中设置了“一个资源组中的所有虚拟机”,则还需在 ARM 模板中更新以下值:
- 将
microsoft.devtestlab/labs
资源的apiVersion
更新为2018-10-15-preview
。 - 将
vmCreationResourceGroupId
添加到properties
节。
"variables": {}, "resources": [ { "type": "microsoft.devtestlab/labs", "apiVersion": "2018-10-15-preview", "name": "[parameters('labs_lj_dtl_rgsettings_name')]", "location": "<regionName>", "properties": { "vmCreationResourceGroupId": "/subscriptions/<subscriptionID>/resourceGroups/<myResourceGroup>", "labStorageType": "Premium",
- 将
查找
"type": "microsoft.devtestlab/labs/users"
资源。 在此处删除整个secretStore
部分,包括keyVaultld
和keyVaultUri
参数。secretStore": { "keyVaultUri": "<vaultvalue>" "keyVaultld": "<id>" }
查找
"type": "microsoft.devtestlab/labs/virtualnetworks"
资源。 如果之前在这些步骤中创建了新的虚拟网络,则必须在/subnets/[SUBNET_NAME]
中添加实际的子网名称。 如果选择将虚拟网络移到新的区域,则应跳过此步骤。查找
"type": "microsoft.devtestlab/labs/virtualmachines"
资源。在“properties”下,添加
"password": "RANDOM_PASSWORD"
注意
若要创建新的 VM,则必须提供“password”属性。 输入一个随机密码,因为稍后将使用原始 VM 交换 OS 磁盘。
对于共享 IP 虚拟机,请在“properties.networkInterface”下添加此代码片段,
使用 RDP 的 Windows VM:
"networkInterface": { "sharedPublicIpAddressConfiguration": { "inboundNatRules": [ { "transportProtocol": "tcp", "backendPort": 3389 } ] } }
使用 SSH 的 Linux VM:
"networkInterface": { "sharedPublicIpAddressConfiguration": { "inboundNatRules": [ { "transportProtocol": "tcp", "backendPort": 22 } ] } }
在
microsoft.devtestlab/labs/users/secrets
资源下,“properties”后的参数, 将YOUR_STORED_PASSWORD
替换为你的密码。重要
使用 secureString 作为密码值。
"value": "YOUR_STORED_PASSWORD"
在
microsoft.devtestlab/labs/artifactsources
资源下,“properties”后的参数, 将YOUR_STORED_PASSWORD
替换为你的密码。 再次使用 secureString 作为密码值。"securityToken": "YOUR_PAT_TOKEN_VALUE"
在编辑器中,保存模板。
部署移动实验室的模版
部署模板以在目标区域中创建新的实验室。
在“自定义部署”页中,使用模板中定义的相应值更新所有参数。
输入以下值:
名称 值 订阅 选择 Azure 订阅。 资源组 选择在上一部分中创建的资源组名称。 位置 选择实验室的位置。 例如“美国中部”。 实验室名称 必须为不同的名称。 Vnet ID 必须是已移动的实验室,或是你创建的新实验室。 选择“查看 + 创建”。
选择“创建”。
选择屏幕顶部的铃铛图标(通知)可查看部署状态。 此时会看到“部署正在进行”。 等待部署完成。
配置新的实验室
虽然已使用 ARM 模板在新的区域下复制了大多数实验室资源,但仍需要手动移动一些编辑内容。
- 如果原始实验室中有任何计算库,则将其添加回实验室。
- 将策略“每个用户的虚拟机”、“每个实验室的虚拟机”和“允许的虚拟机大小”添加回已移动的实验室
交换新 VM 下的计算 VM 的 OS 磁盘
请注意,新实验室下的 VM 与旧实验室下的 VM 具有相同的规格。 唯一的区别是它们的 OS 磁盘。
在新的区域下创建空磁盘。
获取新实验室下的目标 Compute VM OS 磁盘名称。 可以在实验室的“虚拟机”页上的“资源组”下找到计算 VM 及其磁盘。
使用 AzCopy 将旧磁盘内容复制到新区域中的新/空磁盘中。 可以从开发箱或 Azure Cloud Shell 中运行 Powershell 命令。
AzCopy 是移动数据的首选工具。 此方法已针对性能进行优化。 一种更快的方法是直接复制数据,因此 AzCopy 不使用计算机的网络带宽。 可在命令行或自定义脚本中使用 AzCopy。 请参阅 AzCopy 入门。
# Fill in the source/target disk names and their resource group names $sourceDiskName = "SOURCE_DISK" $sourceRG = "SOURCE_RG" $targetDiskName = "TARGET_DISK" $targetRG = "TARGET_RG" $targetRegion = "TARGET_LOCATION" # Create an empty target disk from the source disk $sourceDisk = Get-AzDisk -ResourceGroupName $sourceRG -DiskName $sourceDiskName $targetDiskconfig = New-AzDiskConfig -SkuName $sourceDisk.Sku.Name -UploadSizeInBytes $($sourceDisk.DiskSizeBytes+512) -Location $targetRegion -OsType $sourceDisk.OsType -CreateOption 'Upload' $targetDisk = New-AzDisk -ResourceGroupName $targetRG -DiskName $targetDiskName -Disk $targetDiskconfig # Copy the disk content from source to target $sourceDiskSas = Grant-AzDiskAccess -ResourceGroupName $sourceRG -DiskName $sourceDiskName -DurationInSecond 1800 -Access 'Read' $targetDiskSas = Grant-AzDiskAccess -ResourceGroupName $targetRG -DiskName $targetDiskName -DurationInSecond 1800 -Access 'Write' azcopy copy $sourceDiskSas.AccessSAS $targetDiskSas.AccessSAS --blob-type PageBlob Revoke-AzDiskAccess -ResourceGroupName $sourceRG -DiskName $sourceDiskName Revoke-AzDiskAccess -ResourceGroupName $targetRG -DiskName $targetDiskName
之后,新区域下会有一个新磁盘。
- 将新实验室下的 Compute VM OS 磁盘交换为新磁盘。 若要了解如何操作,请参阅“使用 PowerShell 更改 AZURE VM 使用的 OS 磁盘”一文。
移动日程安排
有两种计划转移方法:
- 在移动的 VM 上手动重新创建计划。 此过程可能非常耗时且容易出错。 如果有一些计划和 VM,此方法最有用。
- 使用 ARM 模板导出和重新部署计划。
使用以下步骤,通过 ARM 模板导出计划并在另一个 Azure 区域中重新部署计划:
登录 Azure 门户。
转到 VM 所在的源资源组。
在“资源组概述”页上的“资源”下,选择“显示隐藏类型”。
选择类型为 microsoft.devtestlab/schedules 的所有资源。
选择“导出模板”。
在“导出资源组模板”页上,选择“部署”。
在“自定义部署”页上,选择“编辑模板”。
在模板代码中,将
"location": "<old location>"
的所有实例更改为"location": "<new location>"
,然后选择“保存”。在“自定义部署”页上,输入与目标 VM 匹配的值:
名称 值 订阅 选择 Azure 订阅。 资源组 选择资源组名称。 区域 选择实验室计划的位置。 例如“美国中部”。 计划名称 必须是全局唯一的名称。 VirtualMachine_xxx_externalId 必须是目标 VM。 重要
每个计划必须具有全局唯一的名称;需要更改新位置的计划名称。
选择“查看并创建”以创建部署。
部署完成后,验证是否已在新 VM 上正确配置了新计划。
丢弃或清理
部署后,如果要从头开始,则可以删除目标实验室,然后重复本文的准备和移动部分中所述的步骤。
若要提交变更并完成移动,必须删除原始实验室。
若要使用 Azure 门户删除实验室:
在 Azure 门户中展开左侧的菜单,打开服务菜单,然后选择“开发测试实验室”以显示实验室的列表。
找到要删除的目标实验室,然后右键单击列表右侧的“更多”按钮 (...)。
选择“删除”并确认。
你也可以选择清理原始日程安排(如果不再使用它们)。 转到原始计划资源组(在上面的步骤 5 中从其中导出模板),然后删除计划资源。
后续步骤
在本文中,我们将开发测试实验室从一个区域移到了另一个区域,并清理了源资源。 若要详细了解如何在区域之间移动资源,以及如何在 Azure 中进行灾难恢复,请参阅: