快速入门:使用 ARM 模板创建流量管理器配置文件

本快速入门介绍如何使用 Azure 资源管理器模板(ARM 模板)创建具有使用性能路由方法的外部终结点的流量管理器配置文件。

Azure 资源管理器模板是定义项目基础结构和配置的 JavaScript 对象表示法 (JSON) 文件。 模板使用声明性语法。 你可以在不编写用于创建部署的编程命令序列的情况下,描述预期部署。

如果你的环境满足先决条件,并且你熟悉如何使用 ARM 模板,请选择“部署到 Azure”按钮。 Azure 门户中会打开模板。

用于将资源管理器模板部署到 Azure 的按钮。

先决条件

如果没有 Azure 订阅,请在开始前创建一个试用版订阅

查看模板

本快速入门中使用的模板来自 Azure 快速启动模板

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.25.53.49325",
      "templateHash": "17662726020644193974"
    }
  },
  "parameters": {
    "uniqueDnsName": {
      "type": "string",
      "metadata": {
        "description": "Relative DNS name for the traffic manager profile, must be globally unique."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Network/trafficmanagerprofiles",
      "apiVersion": "2022-04-01",
      "name": "ExternalEndpointExample",
      "location": "global",
      "properties": {
        "profileStatus": "Enabled",
        "trafficRoutingMethod": "Performance",
        "dnsConfig": {
          "relativeName": "[parameters('uniqueDnsName')]",
          "ttl": 30
        },
        "monitorConfig": {
          "protocol": "HTTPS",
          "port": 443,
          "path": "/",
          "expectedStatusCodeRanges": [
            {
              "min": 200,
              "max": 202
            },
            {
              "min": 301,
              "max": 302
            }
          ]
        },
        "endpoints": [
          {
            "type": "Microsoft.Network/TrafficManagerProfiles/ExternalEndpoints",
            "name": "endpoint1",
            "properties": {
              "target": "www.microsoft.com",
              "endpointStatus": "Enabled",
              "endpointLocation": "chinaeast2"
            }
          },
          {
            "type": "Microsoft.Network/TrafficManagerProfiles/ExternalEndpoints",
            "name": "endpoint2",
            "properties": {
              "target": "docs.microsoft.com",
              "endpointStatus": "Enabled",
              "endpointLocation": "chinaeast"
            }
          }
        ]
      }
    }
  ],
  "outputs": {
    "name": {
      "type": "string",
      "value": "ExternalEndpointExample"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.Network/trafficmanagerprofiles', 'ExternalEndpointExample')]"
    }
  }
}

模板中定义了一个 Azure 资源:

若要查找与 Azure 流量管理器相关的更多模板,请参阅 Azure 快速入门模板

部署模板

  1. 以管理员权限打开本地 PowerShell 控制台,并运行以下脚本。

    Connect-AzAccount -Environment AzureChinaCloud
    
    $projectName = Read-Host -Prompt "Enter a project name that is used for generating resource names"
    $location = Read-Host -Prompt "Enter the location (i.e. chinaeast)"
    $templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.network/traffic-manager-external-endpoint/azuredeploy.json"
    
    $resourceGroupName = "${projectName}rg"
    
    New-AzResourceGroup -Name $resourceGroupName -Location "$location"
    New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri
    
    Read-Host -Prompt "Press [ENTER] to continue ..."
    

    等到控制台中显示提示。

    注意

    当我们使用以 https://raw.githubusercontent.com/ 开头的指定模板文件 URI 部署资源时,控制台有时会生成错误,如 Unable to download deployment content

    可以执行以下操作来解决相应问题。

    1. 复制模板 URI,通过更改前缀、中缀和模板文件名来转换 URI。 例如,源 URI 是 https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-cosmosdb-sql-autoscale/azuredeploy.json

      类别 原始值 转换后的值 操作
      前缀 https://raw.githubusercontent.com https://github.com 更新
      中辍 blob mastermain 之前添加分支名称
      模板文件名 azuredeploy.json 你的下载模板文件名 update

      修改后,转换后的 URI 看起来将类似于 https://github.com/Azure/azure-quickstart-templates/blob/master/101-cosmosdb-sql-autoscale/azuredeploy.json

      请注意,某些模板 URI 已更新为 https://github.com/Azure/azure-quickstart-template/quickstarts/{Microsoft_Resource_Provider_Name}/ ,你可以按照相应的路径规定来更新原始 URI。

    2. 复制转换后的 URI,并在 Internet 浏览器中手动下载特定的模板内容。

    3. 修改从 GitHub 存储库下载或引用的模板,以适应 Azure 中国世纪互联环境。 例如,替换某些终结点(将“blob.core.windows.net”替换为“blob.core.chinacloudapi.cn”,将“cloudapp.azure.com”替换为“chinacloudapp.cn”);必要时更改某些不受支持的位置、VM 映像、VM 大小、SKU 以及资源提供程序的 API 版本。

    4. 将参数 -TemplateUri 替换为 -TemplateFile(对于 powershell)或将参数 --template-uri 替换为 --template-file(针对 CLI),然后用已下载的实际文件名称更新指定的 URI,然后重新运行脚本。

      语言类别 参考链接 操作
      PowerShell New-AzResourceGroupDeployment -TemplateUri 替换为 -TemplateFile
      如有必要,请按照前面的步骤下载 -TemplateParameterUri 内容并在 cmdlet 中替换为 -TemplateParameterFile
      Azure CLI az deployment group create --template-uri 替换为 --template-file
  2. 从上一个代码块中选择“复制”,以复制 PowerShell 脚本。

  3. 右键单击 shell 控制台窗格,然后选择“粘贴”

  4. 输入相应的值。

    模板部署将创建包含两个外部终结点的配置文件。 Endpoint1 使用位于“中国北部”的目标终结点 www.microsoft.com 。 Endpoint2 使用位于“中国东部”的目标终结点 learn.microsoft.com

    资源组名称是追加了 rg 的项目名称。

    注意

    “uniqueDNSname”需要是全局唯一名称,才能成功部署模板。 如果部署失败,请从步骤 1 重新开始。

    部署模板需要几分钟时间。 完成后,输出类似于:

    Azure 流量管理器资源管理器模板 PowerShell 部署输出

使用 Azure PowerShell 部署模板。 除了 Azure PowerShell,还可以使用 Azure 门户、Azure CLI 和 REST API。 若要了解其他部署方法,请参阅部署模板

验证部署

  1. 使用 Get-AzTrafficManagerProfile 确定流量管理器配置文件的 DNS 名称。

    Get-AzTrafficManagerProfile -Name ExternalEndpointExample -ResourceGroupName $resourceGroupName | Select RelativeDnsName
    

    复制 RelativeDnsName 值。 流量管理器配置文件的 DNS 名称为 <relativednsname>.trafficmanager.cn

  2. 在本地 PowerShell 中,运行以下命令,将 {relativeDNSname} 变量替换为 <relativednsname>.trafficmanager.cn

    Resolve-DnsName -Name {relativeDNSname} | Select-Object NameHost | Select -First 1
    

    你应该获得的 NameHost 为 www.microsoft.comlearn.microsoft.com,具体取决于哪个区域离你更近。

  3. 若要检查是否可以解析为其他终结点,请禁用在上一步中获得的目标的终结点。 将 {endpointName} 替换为 endpoint1 或 endpoint2,分别禁用 www.microsoft.comlearn.microsoft.com 的目标 。

    Disable-AzTrafficManagerEndpoint -Name {endpointName} -Type ExternalEndpoints -ProfileName ExternalEndpointExample -ResourceGroupName $resourceGroupName -Force
    
  4. 在本地 PowerShell 中再次运行步骤 2 中的命令。 这一次你应该获得其他终结点的其他 NameHost。

清理资源

如果不再需要流量管理器配置文件,请删除资源组。 这会删除流量管理器配置文件和所有相关资源。

若要删除资源组,请调用 Remove-AzResourceGroup cmdlet:

Remove-AzResourceGroup -Name <your resource group name>

后续步骤

本快速入门介绍了如何创建流量管理器配置文件,

若要详细了解如何路由流量,请继续学习流量管理器教程。