使用 ARM 模板配置多值路由方法

本文介绍如何使用 Azure 资源管理器模板(ARM 模板)创建采用最小子功能的嵌套式多值配置文件。

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

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

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

先决条件

查看模板

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

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "TMProfileParent": {
            "type": "string",
            "metadata": {
            "description": "Name of the parent profile for the nested traffic manager endpoints"
            }
        },
        "existingTMProfileName1": {
            "type": "string",
            "metadata": {
            "description": "Name of the existing Traffic Manager endpoint profile 1"
            }
        },
        "TMProfileDNS1": {
            "type": "string",
            "metadata": {
            "description": "Name of the existing Traffic Manager DNS name 1"
            }
        },
         "existingTMProfileName2": {
            "type": "string",
            "metadata": {
            "description": "Name of the existing Traffic Manager endpoint profile 2"
            }
        },
        "TMProfileDNS2": {
            "type": "string",
            "metadata": {
            "description": "Name of the existing Traffic Manager DNS name 2"
            }
        }
    },
    "variables": {
       "targetid1":"[resourceid('Microsoft.Network/trafficManagerProfiles',parameters('existingTMProfileName1'))]",
       "targetid2":"[resourceid('Microsoft.Network/trafficManagerProfiles',parameters('existingTMProfileName2'))]"
    },
    "resources": [
        {
            "type": "Microsoft.Network/trafficManagerProfiles",
            "apiVersion": "2018-08-01",
            "name": "[parameters('TMProfileParent')]",
            "location": "global",
            "properties": {
                "profileStatus": "Enabled",
                "trafficRoutingMethod": "Priority",
                "dnsConfig": {
                    "relativeName": "[parameters('TMProfileParent')]",
                    "ttl": 90
                },
                "monitorConfig": {
                    "profileMonitorStatus": "Enabled",
                    "protocol": "HTTP",
                    "port": 80,
                    "path": "/",
                    "intervalInSeconds": 30,
                    "toleratedNumberOfFailures": 3,
                    "timeoutInSeconds": 10
                },
                "endpoints": [
                    {
                        "name": "multivalue",
                        "type": "Microsoft.Network/trafficManagerProfiles/nestedEndpoints",
                        "properties": {
                          "endpointStatus": "Enabled",
                          "endpointMonitorStatus": "Online",
                          "targetResourceId": "[variables('targetid1')]",
                          "target": "[parameters('TMProfileDNS1')]",
                          "weight": 100,
                          "priority": 1,
                          "minChildEndpoints": 1,
                          "minChildEndpointsIPv4": 3,
                          "minChildEndpointsIPv6": 2
                        }
                    },
                    {
                        "name": "weighted",
                        "type": "Microsoft.Network/trafficManagerProfiles/nestedEndpoints",
                        "properties": {
                            "endpointStatus": "Enabled",
                            "endpointMonitorStatus": "Online",
                            "targetResourceId": "[variables('targetid2')]",
                            "target": "[parameters('TMProfileDNS2')]",
                            "weight": 1,
                            "priority": 2,
                            "minChildEndpoints": 1
                        }
                    }
                ],
                "trafficViewEnrollmentStatus": "Disabled",
                "maxReturn": 0
            }
        }
    ]
}

该模板中定义了两个 Azure 资源:

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

部署模板

  1. 下载 Azure 快速启动模板并在本地计算机上将其另存为 azuredeploy.json 文件。 使用每个参数的部署值更新模板。

    模板部署从两个现有 Azure 流量管理器配置文件中添加两个嵌套式终结点。

    资源组名称是包含现有配置文件的现有资源组。

    注意

    “existingTMProfileName1”、“existingTMProfileName2”、“TMProfileDNS1”和“TMProfileDNS2”必须与现有的流量管理器配置文件匹配,以便模板可以成功部署。 如果部署失败,请从步骤 1 重新开始。

  2. 使用管理员特权打开 Powershell 控制台,然后运行以下 cmdlet。

    $resourceGroupName = Read-Host -Prompt "Enter name of resource group of the existing traffic manager profiles"
    New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateFile <azuredeploy.json>
    

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

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

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

验证部署

  1. 使用 Get-AzTrafficManagerProfile 验证是否向配置文件添加了嵌套式终结点。 对于 -Name,输入部署模板时输入的父流量管理器配置文件的名称。

    Get-AzTrafficManagerProfile -ResourceGroupName myResourceGroup -Name tmprofileparent-1 | Select Endpoints
    

    输出类似于:

    验证命令的输出

清理资源

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

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

Remove-AzResourceGroup -Name <your resource group name>

后续步骤

在本快速入门中,你添加了采用嵌套式终结点和最小子功能的多值路由方法。

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