将 Azure SignalR 资源移到另一个区域

Azure SignalR 资源特定于区域,无法从一个区域移动到另一个区域。 但是,在某些情况下,你可能想要将现有 SignalR 资源移到另一个区域。

可以使用 Azure 资源管理器模板导出 Azure SignalR 资源的现有配置,修改参数以匹配目标区域,然后在另一个区域中创建 SignalR 资源的副本。 有关资源管理器和模板的详细信息,请参阅 快速入门:使用 Azure 门户创建和部署 Azure 资源管理器模板

先决条件

  • 确保在目标区域中支持你正在使用的服务和功能。
  • 验证 Azure 订阅是否允许在目标区域中创建 SignalR 资源。
  • 请联系支持人员启用所需的配额。
  • 请确保您的订阅被列入目标区域的白名单以使用预览功能。

准备和移动 SignalR 资源

若要开始,请导出,然后修改资源管理器模板。

从 Azure 门户导出模板并部署

以下步骤演示如何使用资源管理器模板准备 SignalR 资源移动,并使用门户将其移动到目标区域。

  1. 登录到 Azure 门户

  2. 选择“资源组”。 找到包含源 SignalR 资源的资源组并选择它。

  3. 在“自动化”下,选择“导出模板”。

  4. 选择“部署”。

  5. 选择 TEMPLATE>编辑参数 以在联机编辑器中打开 parameters.json 文件。

  6. 若要编辑 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>"
              }
            }
          }
    
  7. 将编辑器中的值更改为目标 SignalR 资源选择的名称。 请确保将名称括在引号中。

  8. 在编辑器中选择“ 保存 ”。

  9. 选择 TEMPLATE>编辑模板 以在联机编辑器中打开 template.json 文件。

  10. 若要编辑目标区域,请在联机编辑器中location更改resources属性:

        "resources": [
          {
            "type": "Microsoft.SignalRService/SignalR",
            "apiVersion": "2021-10-01",
            "name": "[parameters('SignalR_mySignalR_name')]",
            "location": "<target-region>",
            "properties": {
            }
          }
        ]
    
    
  11. 若要获取区域位置代码,请参阅 Azure SignalR 位置。 区域的代码是无空格的区域名称, 中国东部 2 = chinaeast2

  12. 如果你选择,还可以更改模板中的其他参数,并且根据你的要求是可选的。

  13. 在联机编辑器中选择“ 保存 ”。

  14. 选择 BASICS>订阅 以选择要在其中部署目标资源的订阅。

  15. 选择 BASICS>资源组 以选择要在其中部署目标资源的资源组。 可以选择“ 新建 ”,为目标资源创建新的资源组。 确保名称与现有资源的源资源组不同。

  16. 验证 BASICS>位置 是否已设置为要在其中部署资源的目标位置。

  17. 选择 “查看 + 创建 ”以部署目标 Azure SignalR 资源。

使用 Azure PowerShell 导出模板并部署

若要使用 PowerShell 导出模板,请执行以下作:

  1. 使用 Connect-AzAccount 命令登录到 Azure 订阅,并按照屏幕上的说明作:

    Connect-AzAccount -Environment AzureChinaCloud
    
  2. 如果您的身份与多个订阅相关联,请选择您要移动的 SignalR 资源的订阅作为活动订阅。

    $context = Get-AzSubscription -SubscriptionId <subscription-id>
    Set-AzContext $context
    
  3. 导出源 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
    
  4. 下载的文件将以从中导出资源的资源组命名。 找到从名为 <resource-group-name> 的 命令导出的文件.json,并在所选的编辑器中打开该文件:

    notepad <source-resource-group-name>.json
    
  5. 若要编辑 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"
          }
        }
      }
    
  6. 若要编辑要移动 SignalR 资源的目标区域,请在 location 中更改 resources 属性:

        "resources": [
          {
            "type": "Microsoft.SignalRService/SignalR",
            "apiVersion": "2021-10-01",
            "name": "[parameters('SignalR_mySignalR_name')]",
            "location": "<target-region>",
            "properties": {
            }
          }
        ]
    
  7. 若要获取区域位置代码,请参阅 Azure SignalR 位置。 区域的代码是无空格的区域名称, 中国东部 2 = chinaeast2

    如果你选择,还可以更改模板中的其他参数,具体取决于你的要求。

  8. 保存 <resource-group-name>.json 文件。

  9. 在目标区域中创建资源组,以便使用 New-AzResourceGroup 部署目标 SignalR 资源。

    New-AzResourceGroup -Name <target-resource-group-name> -location <target-region>
    
  10. 使用 < 将编辑>的资源组名称.json 文件部署到在上一步中创建的资源组:

    New-AzResourceGroupDeployment -ResourceGroupName <target-resource-group-name> -TemplateFile <source-resource-group-name>.json
    
  11. 若要验证是否已在目标区域中创建资源,请使用 Get-AzResourceGroupGet-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 中的灾难恢复,请参阅: