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

北美
TechEd 大会
上,我们宣布了
Azure Traffic Manager将支持 Azure外部端点。我们非常高兴能够宣布进一步的增强功能,为使用轮询机制负载平衡增加权重的支持。综合使用这些功能可以实现一系列新的方案,包括在内部部署和云之间的混合方案中分配流量。

这些功能现可通过我们的 PowerShell cmdlet进行支持
—它还进行了新的扩展,以支持 Traffic Manager。

简介

利用 Traffic Manager,可以在多项服务之间实现传入流量的负载平衡,不论这些服务是在同一数据中心运行,还是在世界各地的不同数据中心运行。Traffic
Manager 可实现的关键方案包括通过将最终用户路由到最近的部署改善应用程序的性能,以及通过监控您的服务并在服务出现故障时自动进行故障转移,从而实现高可用性。

直到最近,还只有 Azure云服务(IaaS和
PaaS)和 Azure网站受到支持。而现在,我们启用了
Traffic Manager对 Azure外部端点的支持。我们还增强了轮询机制负载平衡的方法以支持权重,为在端点间分配流量提供更大的掌控能力。

这些增强功能使 Traffic Manager的优势得以在更广泛的应用程序中发挥作用,并实现了一些新的方案。

例如,外部端点支持意味着 Traffic Manager现在允许您使用
Azure来扩展已有的内部部署或外部托管部署。这可以让离任一Azure数据中心都较远的地理位置改善性能,以主动-主动方式或故障转移方式增加冗余,或者持续增加容量,或临时增加容量以应对需求高峰。外部端点还允许
Traffic Manager配置文件跨不同 Azure订阅中的服务,这在以前是不可能的。

权重轮询机制还可以实现其他新的方案,例如在多个部署之间合理分配负载以最大限度地提高利用率,或将一小部分流量转移到不同部署并作为“A/B测试”方案的一部分。在与外部端点配合使用时,它可实现内部部署应用程序向云的平稳过渡
— 首先将 100%的流量导向内部部署应用程序,然后“转移方向”,逐步将流量迁移到基于云的版本。

这些功能目前可通过我们的REST
API
和我们全新的Traffic
ManagerPowerShell cmdlet
获得。Azure管理门户网站中不提供这些功能。本博客文章的其余部分将向您展示如何使用
PowerShell对 Traffic Manager的新支持,以利用这些新功能。

入门

要开始使用 Azure PowerShell,请参阅如何安装和配置
Azure PowerShell
。请注意,您需要使用 0.8.3或更高版本。

查看已有配置文件和端点

“Get-AzureTrafficManagerProfile”cmdlet可以检索一系列配置文件对象,以便您可以查看:

<span style="font-size:14px;">PS C:\> $profiles = Get-AzureTrafficManagerProfile
PS C:\> $profiles | Format-Table
Name DomainName Status
---- ---------- ------
MyProfile myprofile.trafficmanage...Enabled
websites websites.trafficmanager...Enabled
</span>

或者,通过指定“-Name”参数,您可以仅检索一个配置文件。每个配置文件都包含有关配置文件名称、Traffic
Manager 域、TTL和端点监控设置的字段:

<span style="font-size:14px;">PS C:\> $profile = Get-AzureTrafficManagerProfile -Name "MyProfile"
PS C:\> $profile | Format-List
TimeToLiveInSeconds : 30
MonitorRelativePath : /
MonitorPort : 80
MonitorProtocol :Http
LoadBalancingMethod :RoundRobin
Endpoints :{tm-demo-us.cloudapp.net, www.microsoft.com}
MonitorStatus :CheckingEndpoints
Name :MyProfile
DomainName :myprofile.trafficmanager.net
Status :Enabled
</span>

还有一系列端点,其中包含端点域名、位置、类型、状态、监控状态和权重:

<span style="font-size:14px;">PS C:\> $profile.Endpoints | Format-
DomainName Location Type Status MonitorStatus Weight
---------- -------- ---- ------ ------------- ------
tm-demo-us...CloudService Enabled Online 1
www.micros...Any Enabled Online 1
</span>

创建配置文件并添加端点

常用的方法是使用“Profile”对象来表示您的
Traffic Manager 配置文件。您可以使用 cmdlet来脱机配置此配置文件,然后在准备就绪后,使用“Set-AzureTrafficManagerProfile”cmdlet将其加载到
Azure。(记住,实际调用 Azure管理
API的仅有两个
cmdlet, 分别是“New-AzureTrafficManagerProfile”和“Set-AzureTrafficManagerProfile”。)

下面的示例创建了一个新的
Traffic Manager 配置文件,向其添加两个端点,并将结果提交到 Azue:

<span style="font-size:14px;">PS C:\> $profile = New-AzureTrafficManagerProfile -Name "MyProfile" -DomainName "myprofile.trafficmanager.net" -LoadBalancingMethod "RoundRobin" -Ttl 30 -MonitorProtocol "Http" -MonitorPort 80 -MonitorRelativePath "/"
PS C:\> $profile = Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $profile -DomainName "myapp-eu.cloudapp.net" -Status "Enabled" -Type "CloudService"
PS C:\> $profile = Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $profile -DomainName "myapp-us.cloudapp.net" -Status "Enabled" -Type "CloudService"
PS C:\> Set-AzureTrafficManagerProfile –TrafficManagerProfile $profile
</span>

这些命令(以及本博客文章后面的其他示例)也可以“组合”:

<span style="font-size:14px;">PS C:\> New-AzureTrafficManagerProfile -Name "MyProfile" -DomainName "myprofile.trafficmanager.net" -LoadBalancingMethod "RoundRobin" -Ttl 30 -MonitorProtocol "Http" -MonitorPort 80 -MonitorRelativePath "/" | Add-AzureTrafficManagerEndpoint -DomainName "myapp-eu.cloudapp.net" -Status "Enabled" -Type "CloudService" | Add-AzureTrafficManagerEndpoint -DomainName "myapp-us.cloudapp.net" -Status "Enabled" -Type "CloudService" | Set-AzureTrafficManagerProfile</span>

外部端点

Add-AzureTrafficManagerEndpointcmdlet可用于创建外部端点(即
Azure外部的端点)。只需在 DomainName参数中指定端点的域名,并将类型指定为“Any”即可:

<span style="font-size:14px;">PS C:\> Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $profile -DomainName "www.microsoft.com" -Status "Enabled" -Type "Any" | Set-AzureTrafficManagerProfile</span>

在配合使用外部端点与 Performance负载平衡时,需要一个附加的“Location”参数。它会告诉
Azure 您的外部端点所在的位置,使 Traffic Manager可以适当地跨地域路由流量。

<span style="font-size:14px;">PS C:\> Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $profile -DomainName "www.microsoft.com" -Status "Enabled" -Type "Any" -Location "North Europe" | Set-AzureTrafficManagerProfile</span>

可用的位置反映出
Azure的全球数据中心网络,可使用 Get-AzureLocationcmdlet找到:

<span style="font-size:14px;">PS C:\> $loc = Get-AzureLocation
PS C:\> $loc.Name | Format-List
East Asia
Southeast Asia
North Europe
West Europe
East US
West US
Japan East
Japan West
Brazil South
North Central US
South Central US
</span>

如果您更改了负载平衡方法,例如改为轮询机制,然后切换回
Performance,那么 Traffic Manager会记住(但是会忽略)您以前配置的端点位置,因此您不需要再次指定。

权重端点

权重仅适用于使用“轮询机制”负载平衡方法的
Traffic Manager 策略。它可用于所有端点类型。流量会按比例分布到所有目前正在使用的正常运行的端点的权重。

您可以使用下面示例中所显示的“Weight”参数来指定从
1 到 1000的任意权重。它是一个可选参数
— 默认情况下,所有端点的权重都是“1”。

<span style="font-size:14px;">PS C:\> Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $profile -DomainName "tm-demo-us.cloudapp.net" -Status "Enabled" -Type "CloudService" -Weight 70 | Set-AzureTrafficManagerProfile</span>

与外部端点位置类似,如果您更改了负载平衡方法(例如改为 Performance),权重会被忽略,切换回轮询机制时会记住权重。Tranfic
Manager在 DNS级别运行,而
DNS在设计上会由各组织和
ISP 所运行的 DNS客户端和本地
DNS解析器进行缓存。权重的流量分布最适用于面向 Internet的传统应用程序,因为在这些应用程序中存在大量的客户端
—在这种情况下,DNS缓存不会影响流量的分布。但是,当使用的客户端数量很少时,或当所有客户端均位于少量本地
DNS 服务器之后时,缓存就可能会扭曲流量分布。在这种情况下,应对每个连接分配流量,例如使用应用程序级别的 HTTP 302重定向。

其他常见操作

下面给出了 Traffic Manager配置文件的其他常见操作的示例。

启用和禁用端点

您可以禁用端点,停止分配流量给它。这会停止
Traffic Manager 对此端点计费,但会将它保留在您的配置文件中,因此可以轻松地重新启用。

<span style="font-size:14px;">PS C:\> $profile = Get-AzureTrafficManagerProfile -Name "MyProfile"
PS C:\> $profile.Endpoints[0].Status = "Disabled"
PS C:\> Set-AzureTrafficManagerProfile –TrafficManagerProfile $profile
</span>
<span style="font-size:14px;">
</span>

端点重新排序

端点的顺序可以确定使用“故障转移”负载平衡方法时的故障转移顺序。下面的示例显示了如何对一对端点进行重新排序:

<span style="font-size:14px;">PS C:\> $profile = Get-AzureTrafficManagerProfile -Name "MyProfile"
PS C:\> $profile.Endpoints[0],$profile.Endpoints[1] = $profile.Endpoints[1],$profile.Endpoints[0]
PS C:\> Set-AzureTrafficManagerProfile –TrafficManagerProfile $profile
</span>

删除端点

要删除端点,可以使用“Remove-AzureTrafficManagerEndpoint”cmdlet:

<span style="font-size:14px;">PS C:\> $profile = Get-AzureTrafficManagerProfile -Name "MyProfile"
PS C:\> Remove-AzureTrafficManagerEndpoint -TrafficManagerProfile $profile -DomainName www.microsoft.com
PS C:\> Set-AzureTrafficManagerProfile –TrafficManagerProfile $profile
</span>

更新端点监控设置

在此示例中,我们将修改监控路径,以指向专用的监控页面:

<span style="font-size:14px;">PS C:\> $profile = Get-AzureTrafficManagerProfile -Name "MyProfile"
PS C:\> $profile.MonitorRelativePath = "/monitor.aspx"
PS C:\> Set-AzureTrafficManagerProfile –TrafficManagerProfile $profile
</span>

禁用配置文件

您可以完全禁用 Traffic Manager配置文件。这将停止流向所有端点的流量,也会停止对此配置文件的计费。为此,可以使用专用的
cmdlet:

<span style="font-size:14px;">PS C:\> Disable-AzureTrafficManagerProfile -Name "MyProfile"
PS C:\> Enable-AzureTrafficManagerProfile -Name "MyProfile"
</span>

删除配置文件

最后,您还可以删除 Traffic Manager配置文件(“Force”标记会覆盖确认提示):

<span style="font-size:14px;">PS C:\> Remove-AzureTrafficManagerProfile -Name "MyProfile" -Force</span>

常见问题

我是否可以通过 Azure管理门户网站使用外部端点或权重?

这些功能目前仅能通过 REST API和
PowerShell cmdlet进行配置。在 Azure管理门户网站上不提供这些功能。

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

我是否可以在同一个 Traffic Manager配置文件中混合使用
Azure端点(云服务和网站)与外部端点?

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

外部端点和权重的计费模型是否存在任何变化?

外部端点的计费标准高于 Azure端点。使用权重不额外收费。有关完整的详细信息,请参阅我们的定价页面

AzureTraffic Manager在
Azure SDK或 Xplat-CLI中是否受支持?

TrafficManager管理库包含在.NET
SDK
中。它在
Java SDK或 Node.js SDK以及
Xplat-CLI中尚不受支持。

我能否将 Azure服务设置为外部端点?

可以,您可以使用外部端点来引用其他 Azure服务(不包括网站)。此方法的计费费率与其他
Azure端点相同。但是,与云服务和网站不同的是,如果您禁用该服务,将继续针对相应的 Traffic Manager端点对您进行计费,除非您明确禁用或删除
Traffic Manager中的端点。

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

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

MSDN中包含更为详细的概述,包括对
Traffic Manager 的负载平衡方法以及端点监控配置的说明。

除了 Azure的付款支持计划外,我们的MSDN论坛可用于咨询有关
DNS 或 Traffic Manager的各种
Azure问题。有关功能的建议公布在我们的反馈网站上,您也可以在这里为已有建议投票。

本文翻译自:http://azure.microsoft.com/blog/2014/06/26/azure-traffic-manager-external-endpoints-and-weighted-round-robin-via-powershell/

通过 PowerShell 支持 Azure Traffic Manager 外部端点和权重轮询机制的更多相关文章

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

    Jonathan Tuliani  Azure 网络 - DNS 和 Traffic Manager 项目经理 我们很高兴地宣布,Azure Traffic Manager 支持 Traffic Ma ...

  2. 中国版 Azure 现提供 Azure Traffic Manager

    Stephen MaloneAzure网络 - DNS和 Traffic Manager高级项目经理 我们非常高兴地宣布,中国版 Azure中现已提供 Azure Traffic Manager.Az ...

  3. Windows Azure Traffic Manager (5) Traffic Manager Overview

    <Windows Azure Platform 系列文章目录> 笔者默默地看了一下之前写的Traffic Manager内容,已经差不多是3年前的文章了.现在Azure Traffic M ...

  4. Windows Azure Traffic Manager (6) 使用Traffic Manager,实现本地应用+云端应用的高可用

    <Windows Azure Platform 系列文章目录> 注意:本文介绍的是使用国内由世纪互联运维的Azure China服务. 以前的Traffic Manager,背后的Serv ...

  5. 宣布正式发布 Windows Azure 上的 Oracle 软件以及 Windows Azure Traffic Manager 更新

     Windows Azure 的核心原则之一就是为客户提供一个开放.灵活的平台.今天是一个令人振奋的里程碑,因为我们与 Oracle 的合作又向前迈进了一步.Oracle Database.Ora ...

  6. Azure 提供负载均衡(一)Azure Traffic Manager 为我们的Web项目提供负载均衡

    一,引言 上一篇讲到我们将自己的Net Core Web 项目部署到 Azure 的 Web App 的一项 pass 服务,假如随着项目的日益增长的访问量,之前部署到单节点的应用可能无法保证其稳定性 ...

  7. Azure Traffic Manager(二) 基于权重与基于优先级的路由策略为我们的Web项目提供负载均衡

    一,引言 上一片文章我们使用 Azure Traffic Manager 分发用户请求,同时演示了两种路由策略,“Performance”,“Geographic”的两种方式,今天我们继续讲解 Tra ...

  8. Azure Traffic Manager 现可与 Azure 网站集成!

     编辑人员注释:本文章由 WindowsAzure 网站团队高级专家级工程师 Jim Cheshire撰写. AzureTraffic Manager 已经推出有一段时间,这是一种跨多个区域管理网 ...

  9. Traffic Manager:Azure中国版 正式发布

     我们很高兴地宣布Azure Traffic Manager 现已面向中国版Azure正式发布.此版本现已投入生产,由企业 SLA支持,随时可用于生产场景中. 借助Azure Traffic Ma ...

随机推荐

  1. 探索开发跨平台移动App,谈Jquery Mobile 和PhoneGap应用

    随着智能手机等设备的大范围普及,各形各色的移动端软件随之既出.各互联网运营商也都在抢占移动软件的占有率.不惜采用财力进行宣传推广.例如,通过手机淘宝客户端购买物品总比pc端要便宜,360手机助手下载对 ...

  2. HttpServletRequest 获取URL的方法及区别

    HttpServletRequest 获取请求的URL的方法有: 1.request.getRequestURL() 返回的是完整的url,包括Http协议,端口号,servlet名字和映射路径,但它 ...

  3. HDU 1114 Piggy-Bank(完全背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 题目大意:根据储钱罐的重量,求出里面钱最少有多少.给定储钱罐的初始重量,装硬币后重量,和每个对应 ...

  4. C++常量的引用 const

    如果是对一个常量进行引用,则编译器首先建立一个临时变量,然后将该常量的值置入临时变量中,对该引用的操作就是对该临时变量的操作.对C++常量引用可以用其它任何引用来初始化:但不能改变. 关于引用的初始化 ...

  5. VS2008/MFC —常用控件使用总结 转载

    在公司培训期间,经理给了我们没人10个界面草图,让我们在VS2008下使用MFC设计,因为在经理的帮助和自己的努力下,终于在三天时间内完成,现在就根据在这三天 时间里所用到的控件做出如下总结: 1.D ...

  6. Linux 信号量同步编程

    前一篇文章概述了Linux 系统中信号量互斥编程,这篇文章正好是前一篇的姊妹篇----信号量同步.说它们是姊妹篇是因为它们都是利用了内核的信号量机制实现了进程间的通信.因为两者所解决的问题不同,因此它 ...

  7. mysql5.7下载与安装,php5.6与mysql5.7整合

    Part1 mysql5.7下载 百度“mysql下载”,打开官网    2. 在页面右上角点击,注册/登录 3. 登录后显示下载页面,选择windows 4. 然后选择MySQL Installer ...

  8. ListView item 中TextView 如何获取长按事件

    昨天晚上小伙伴突然来信, ListView item中嵌套的TextView 无法获取长按事件 从前从来没有仔细留意过, coding后发现...果然没什么动静 而且没有合适的API让我调用获取Tex ...

  9. 软件测试software testing summarize

    软件测试(英语:software testing),描述一种用来促进鉴定软件的正确性.完整性.安全性和质量的过程.软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对 ...

  10. CocoaPods ADD private Spec Repo

    Private Pods CocoaPods is a great tool not only for adding open source code to your project, but als ...