你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
将开发测试实验室和日程安排移到另一个区域
可以将开发测试实验室及其关联的日程安排移到其他区域。 若要移动实验室,请在另一个区域中创建现有实验室的副本。 移动实验室后,如果目标区域中有虚拟机 (VM),则可以移动实验室日程安排。
在本文中,学习如何:
- 导出实验室的 Azure 资源管理器 (ARM) 模板。
- 通过添加或更新目标区域及其他参数来修改模板。
- 部署模板以在目标区域中创建新的实验室。
- 配置新的实验室。
- 将数据移到新的实验室。
- 将日程安排移到新实验室。
- 删除源区域中的资源。
先决条件
确保帐户使用的服务和功能在目标区域中受支持。
对于预览功能,请确保你的订阅已列入目标区域的允许列表。
开发测试实验室不会存储密码,也不会从导出的 ARM 模板公开密码。 需要了解以下各项的密码/机密:
- VM
- 已存储的机密
- 专用项目 Repos 的 PAT 令牌,用于将专用 Repos 与实验室一起移动。
移动实验室日程安排时,请确保目标区域中存在计算 VM。
移动实验室
以下部分介绍如何创建和自定义 ARM 模板,以将实验室从一个区域移动到另一个区域。
如果目标区域中有 VM,则可以在不移动实验室的情况下移动日程安排。 如果要在不移动实验室的情况下移动日程安排,请参阅移动日程安排。
准备移动实验室
移动实验室时,必须执行一些步骤来为移动做准备。 你需要:
- 准备虚拟网络
- 导出实验室的 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 中进行灾难恢复,请参阅:
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈