将 Azure SignalR 资源移到另一个区域
Azure SignalR 资源是特定于区域的,不能从一个区域移动到另一个区域。 但是,在某些情况下,你可能想要将现有 SignalR 资源移动到其他区域。
你可使用 Azure 资源管理器模板导出 Azure SignalR 资源的现有配置,修改参数以匹配目标区域,然后在另一个区域中创建 SignalR 资源的副本。 有关资源管理器和模板的详细信息,请参阅快速入门:使用 Azure 门户创建和部署 Azure 资源管理器模板。
- 确保你正在使用的服务和功能在目标区域中受支持。
- 验证 Azure 订阅是否允许在目标区域中创建 SignalR 资源。
- 请联系支持部门,启用所需配额。
- 对于预览功能,请确保你的订阅已列入目标区域的允许列表。
若要开始,请导出然后修改某个资源管理器模板。
以下步骤展示了如何使用资源管理器模板来准备 SignalR 资源移动,以及如何使用门户将该移动到目标区域。
登录 Azure 门户。
选择“资源组” 。 找到包含源 SignalR 资源的资源组并选择它。
在“自动化”下,选择“导出模板”。
选择“部署”。
选择“模板”>“编辑参数”,在联机编辑器中打开 parameters.json 文件。
若要编辑 SignalR 资源名称的参数,请更改
parameters
下的value
属性:{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "SignalR_mySignalR_name": { "value": "<target-signalr-name>" } } }
在编辑器中将该值更改为你为目标 SignalR 资源选择的名称。 请务必将名称括在引号中。
在编辑器中选择“保存”。
选择“模板”>“编辑模板”,在联机编辑器中打开 template.json 文件。
若要编辑目标区域,请在联机编辑器中
resources
下更改location
属性:"resources": [ { "type": "Microsoft.SignalRService/SignalR", "apiVersion": "2021-10-01", "name": "[parameters('SignalR_mySignalR_name')]", "location": "<target-region>", "properties": { } } ]
若要获取区域位置代码,请参阅 Azure SignalR 位置。 区域的代码是不带空格的区域名称,中国东部 2 = chinaeast2。
也可选择更改模板中的其他参数,这些参数是可选的,具体取决于你的要求。
在在线编辑器中选择“保存”。
选择“基本信息”>“订阅”,以选择要将目标资源部署到的订阅。
选择“基本信息”>“资源组”,以选择要将目标资源部署到的资源组。 可以选择“新建”,为目标资源创建一个新的资源组。 确保该名称不同于现有资源的源资源组名称。
确认“基本信息”>“位置”是否设置为要将资源部署到的目标位置。
选择“查看 + 创建”,以部署该目标 Azure SignalR 资源。
若要使用 PowerShell 导出模板:
使用 Connect-AzAccount 命令登录到 Azure 订阅,然后按屏幕说明操作:
Connect-AzAccount -Environment AzureChinaCloud
如果你的标识已与多个订阅关联,请将你的活动订阅设置为要移动的 SignalR 资源的订阅。
$context = Get-AzSubscription -SubscriptionId <subscription-id> Set-AzContext $context
导出源 SignalR 资源的模板。 这些命令会将某个 JSON 模板保存到当前目录。
$resource = Get-AzResource ` -ResourceGroupName <resource-group-name> ` -ResourceName <signalr-resource-name> ` -ResourceType Microsoft.SignalRService/SignalR Export-AzResourceGroup ` -ResourceGroupName <resource-group-name> ` -Resource $resource.ResourceId ` -IncludeParameterDefaultValue
已下载的文件将根据从其导出了资源的资源组来命名。 找到通过名为 <resource-group-name>.json 的命令导出的文件,在所选编辑器中将其打开:
notepad <source-resource-group-name>.json
若要编辑 SignalR 资源名称的参数,请将源 SignalR 资源名称的
defaultValue
属性更改为目标 SignalR 资源的名称。 确保对名称使用引号:{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "SignalR_mySignalR_name": { "defaultValue": "<target-signalr-name>", "type": "String" } } }
若要编辑要将 SignalR 资源移动到其中的目标区域,请更改
resources
下的location
属性:"resources": [ { "type": "Microsoft.SignalRService/SignalR", "apiVersion": "2021-10-01", "name": "[parameters('SignalR_mySignalR_name')]", "location": "<target-region>", "properties": { } } ]
若要获取区域位置代码,请参阅 Azure SignalR 位置。 区域的代码是不带空格的区域名称,中国东部 2 = chinaeast2。
如果根据需求选择,也可以更改模板中的其他参数。
保存 <resource-group-name>.json 文件。
使用 New-AzResourceGroup 在目标区域创建资源组,以便部署目标 SignalR 资源。
New-AzResourceGroup -Name <target-resource-group-name> -location <target-region>
使用 New-AzResourceGroupDeployment 将编辑的 <resource-group-name>.json 文件部署到在上一步创建的资源组:
New-AzResourceGroupDeployment -ResourceGroupName <target-resource-group-name> -TemplateFile <source-resource-group-name>.json
若要验证是否已在目标区域中创建了这些资源,请使用 Get-AzResourceGroup 和 Get-AzSignalR:
Get-AzResourceGroup -Name <target-resource-group-name> Get-AzSignalR -Name <target-signalr-name> -ResourceGroupName <target-resource-group-name>
备注
在部署后,如果希望重新开始或放弃目标中的 SignalR 资源,请删除在目标中创建的资源组,这将删除已移动的 SignalR 资源。 为此,请从门户上的仪表板中选择该资源组,然后选择概述页顶部的“删除”。 或者,可以使用 Remove-AzResourceGroup:
Remove-AzResourceGroup -Name <target-resource-group-name>
若要提交更改并完成 SignalR 资源的移动,请删除源 SignalR 资源或资源组。 为此,请从门户中的仪表板选择该 SignalR 资源或资源组,然后在每页的顶部选择“删除”。
在本教程中,你已将一个 Azure SignalR 资源从一个区域移动到了另一个区域,并且清理了源资源。 若要详细了解如何在区域之间移动资源,以及如何在 Azure 中进行灾难恢复,请参阅: