Compartilhar via


新功能:Azure Traffic Manager 嵌套配置文件

Jonathan Tuliani Azure 网络 - DNS 和 Traffic Manager 项目经理

我们很高兴地宣布,Azure Traffic Manager 支持 Traffic Manager 嵌套配置文件了。利用此功能,可以创建功能更加强大和灵活的负载平衡与故障转移方案,以支持更大、更复杂的部署需求。

此功能现在通过 REST API 和 PowerShell cmdlet 提供。

简介

Traffic Manager 允许您跨多个 Azure 部署平衡入站流量负载。Traffic Manager 支持的主要方案包括:通过将最终用户定向到最近的部署提高应用程序性能、通过监视您的服务在服务出现故障时提供自动故障转移实现高可用性。我们最近还宣布了支持加权流量分发和 Azure 外部端点,提供了一系列其他方案,如故障转移到云、将突发大流量分担到云和内部部署到云的迁移。

今天,我们很高兴地宣布另一项新功能:Traffic Manager 嵌套配置文件。利用此功能,可以创建功能更加强大和灵活的负载平衡与故障转移方案,以支持更大、更复杂的部署需求。

嵌套配置文件只能通过 REST APIPowerShell cmdlet 创建(此处是 Azure PowerShell 入门指南—请注意,您需要使用 0.8.8 或更高版本。)不能通过 Azure 管理门户创建。

本博客文章的剩余部分将通过一些示例介绍此功能的强大作用和使用方法。

示例 1:试用具有性能负载平衡功能的新部署

假设您的应用程序部署在多个 Azure 区域—美国东部、美国西部、欧洲北部、欧洲西部、东亚和东南亚。您使用 Traffic Manager 的性能负载平衡方法将流量分发到离用户最近的区域。

现在,假设您希望在大范围应用服务更新之前,先由少量用户进行试用。为此,您希望使用“加权轮询”负载平衡方法,这样可以将流量的一小部分定向到试用部署。之前,无法将此功能与性能负载平衡结合使用。现在,通过嵌套配置文件,可以同时利用这两项功能。

具体方法如下:假设您希望在欧洲北部试用新部署。让现有部署与试用部署共存,并使用这两个端点和加权轮循负载平衡方法创建 Traffic Manager 配置文件。然后,使用性能负载平衡方法将此“子”配置文件作为端点添加到“父”配置文件。

下图和 PowerShell 代码段说明了此示例:

 # 创建子配置文件
$child = New-AzureTrafficManagerProfile -Name "eunorth-child" -DomainName 
"eunorth.trafficmanager.net" -LoadBalancingMethod "RoundRobin" -Ttl 30 -MonitorProtocol
 "Http" -MonitorPort 80 -MonitorRelativePath "/"
$child = Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $child -DomainName
 "eunorth.cloudapp.net" -Status "Enabled" -Type "CloudService" -Weight 99
$child = Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $child -DomainName 
"eunorth-new.cloudapp.net" -Status "Enabled" -Type "CloudService" -Weight 1
Set-AzureTrafficManagerProfile –TrafficManagerProfile $child
# 创建父配置文件
$parent = New-AzureTrafficManagerProfile -Name "parent" -DomainName
 "myapp.trafficmanager.net" -LoadBalancingMethod "Performance" -Ttl 30 -MonitorProtocol
 "Http" -MonitorPort 80 -MonitorRelativePath "/"
$parent = Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $parent -DomainName "
eunorth.trafficmanager.net" -Status "Enabled" -Type "TrafficManager" -Location "North
 Europe"
$parent = Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $parent -DomainName 
"euwest.cloudapp.net" -Status "Enabled" -Type "CloudService"
# 为其他端点重复以上行
Set-AzureTrafficManagerProfile –TrafficManagerProfile $parent

利用此安排,将照常跨区域分发通过父配置文件定向的流量。在欧洲北部区域内,将根据您指定的权重,在现有部署和试用部署之间定向流量。

请注意,将子配置文件分配给使用性能负载平衡方法的父配置文件时,我们指定了子配置文件的位置(与使用 type = ‘Any’指定外部端点位置的方法完全相同,请参阅之前的博客文章)。

嵌套配置文件中的端点监控

TrafficManager 主动监控每个服务端点的运行状况(此处提供了监控方式)。如果端点被确定为不正常,TrafficManager 会将用户定向到其它端点,从而保持服务的总体可用性。此端点监控和故障转移行为适用于所有负载平衡方法(不只是“故障转移”方法)。

对于嵌套配置文件,端点监控的工作方式略有不同。如果父配置文件配置了作为嵌套端点的子配置文件,此父配置文件不会直接探测子配置文件。相反,子配置文件端点的运行状况用于计算子配置文件的整体运行状况,此状况决定了父配置文件是否将流量定向到子配置文件。

返回到我们之前的示例:假设位于欧洲北部的现有部署出现故障。默认情况下,“子”配置文件会将所有流量定向到试用部署。如果试用部署也出现故障,父配置文件会做出既然所有子端点均不正常,子配置文件也不应该接收流量的决定,并将所有欧洲北部的流量故障转移到其他区域。

您可能满意这样的安排,也可能认为试用部署不应该用作所有欧洲北部流量的故障转移对象—如果欧洲北部的现有部署出现故障,不论试用部署的运行状况如何,您都希望故障转移到其他区域。这样做也是可行的:将子配置文件作为父配置文件中的端点配置时,可以指定“MinChildEndpoints”参数,用于确定子配置文件中必须可用的最少端点数。低于此阈值(默认为 1)时,父配置文件会将整个子配置文件视为不可用,并将流量定向到其他父配置文件端点。

下面的示例说明:将 MinChildEndpoints 设置为 2 时,如果欧洲北部的任一部署出现故障,父配置文件将确定子配置文件不应该接收流量,并将用户定向到其他区域。

请注意,当子配置文件使用“故障转移”负载平衡方法时,该子配置文件的所有流量由单个端点接收。因此,在这种情况下,将 MinChildEndpoints 设置为“1”以外的值意义不大。

示例 2:地理区域内故障转移

在最初的示例中(第一张图),如果某个端点(例如欧洲北部)出现故障,已定向到该端点的所有流量将跨所有区域在其他端点之间分发(这是 Traffic Manager 性能负载平衡方法的默认行为,旨在避免“下一个最近的”端点负载过重):

但是,假设您更希望将欧洲北部的流量优先故障转移到欧洲西部,并且只在这两个端点都不可用时才重定向到其他区域。您可以通过创建使用故障转移负载平衡方法的子配置文件实现此目的,如下所示:

您可以为所有区域重复此模式—将父配置文件中的所有 6 个端点替换为 6 个子配置文件,每个子配置文件均提供区域内故障转移。

示例 3:按端点监控设置

假设您正在使用 Traffic Manager 在旧的内部部署网站与 Azure 上托管的基于云的新版本之间顺利迁移流量。对于旧站点,您希望使用主页(路径“/”)监控站点运行状况,但对于基于云的新版本,您正在实现包含其他检查的自定义监控页(路径“/monitor.aspx”)。

TrafficManager 配置文件中的监控设置适用于配置文件内的所有端点,这意味着您之前必须在两个站点上使用相同的路径。随着 Traffic Manager 嵌套配置文件的发布,现在可以按站点使用子配置文件,以便为每个站点定义不同的监控设置:

常见问题

是否可以通过 Azure 管理门户使用嵌套配置文件?

TrafficManager 嵌套配置文件当前只能通过我们的 REST API 和 PowerShell cmdlet 配置。不能通过 Azure 管理门户创建。

但是,您可以继续通过 Azure 管理门户查看使用嵌套配置文件的配置文件的状态,甚至可以管理这些配置文件上的其他设置,例如启用和禁用端点,或配置监控设置。

TrafficManager 支持几层嵌套?

嵌套配置文件的深度最多为 10 层(尽管我们无法想象为何要嵌套这么多层!)。不允许“循环”。

我是否可以在同一个 Traffic Manager 配置文件中混合使用端点类型(云服务、网站和外部端点)与嵌套“子”配置文件?

可以。对于在一个配置文件中如何混合使用不同类型的端点没有任何限制。

计费模式如何应用于嵌套配置文件?

TrafficManager 的计费有两个组成部分,监控的端点数量和每百万个 DNS 查询(有关完整的详细信息,请参阅我们的定价页面。)下面提供了此计费在嵌套配置文件中的应用方式:

·   监控的端点数量:配置为父配置文件中的端点的子配置文件不收费。子配置文件中监控基础服务的端点按正常方式收费。

·   每百万个 DNS 查询:每个查询计算为一次。如果针对父配置文件的查询返回子配置文件中的端点,则只针对父配置文件收费。

我在哪里可以找到有关 Azure Traffic Manager 的更多信息?

Azure 门户中包含有关 Traffic Manager 服务和方案的概述。它还包含定价SLA 的详细信息。

MSDN 中包含更为详细的概述,包括对 Traffic Manager 的负载平衡方法以及端点监控配置的说明。MSDN 还包含 Traffic Manager REST API.NET管理库PowerShell cmdlet 的参考文档。

之前的这篇博客介绍了 Azure Traffic Manager PowerShell 入门指南,包括对外部端点和加权配置文件的配置。

除了 Azure 的付费支持计划,您还可以使用我们的 MSDN 论坛咨询 Azure 中有关 DNS 或 Traffic Manager 的任何方面的问题。功能建议可以发布到我们的反馈网站,您还可以在这里为现有建议投票。

如果你有任何疑问, 欢迎访问MSDN社区,由专家来为您解答Windows Azure各种技术问题,或者拨打世纪互联客户服务热线400-089-0365/010-84563652咨询各类服务信息。

本文翻译自:https://azure.microsoft.com/blog/2014/10/29/new-azure-traffic-manager-nested-profiles/