如何利用Azure中的Traffic Manager避免此次携程事件

此次携程事件导致携程网站和APP停止服务长达将近9个小时。至于什么原因引起的,截至到我写稿时还没有一个官方的答复。那些坊间的传闻这里我就不再多说,至于一点,携程的网站在停止服务9个小时内竟然没有一套备用站点快速的切换提供服务,这是不可理解的。

下面就这个事件,我设计了一个简单的场景,站点1(Blog01)是主站点,站点2(Blog02)是备用站点。我采用Traffic Manager将这两个站点做高可用负载平衡。

  先来看下Microsoft Azure Traffic Manager 到底是什么东东。

使用 Microsoft Azure Traffic Manager 可以控制向指定的终结点(可能包括 Azure 云服务、网站和其他终结点)分配用户流量。Traffic Manager 的工作原理是将智能策略引擎应用到对 Internet 资源域名执行的域名系统 (DNS) 查询。Azure 云服务或网站可以在世界各地不同的数据中心内运行。

说的简单易懂点Traffic Manager就是一个智能的DNS解析。

  能帮助我们做什么?

  • 提高关键应用程序的可用性,当你的应用程序的某个节点出问题的时候,Traffic Manager可以通过智能的监视你的终结点(云服务、网站和其他角色)的服务状态,然后把流量迁移到正常的终结点。
  • 提高应用程序的响应性,当你的应用程序客户遍布全国甚至是世界各地时,如何能够把流量引到离他们最近的数据中心,已达到最快的响应速度。这就是Traffic Manager需要做的事情。
  • 大型复杂的流量分配,如果你有像淘宝、京东等这类网站时,你需要复杂的流量分配规则来满足用户的快速访问需求,使用嵌套的 Traffic Manager 配置文件(在其中的一个 Traffic Manager 配置文件可以将另一个 Traffic Manager 配置文件作为终结点),可以创建配置来优化更大、更复杂部署的性能和分布。

工作原理是啥?

我来根据这张图来解释下:

1. 首先客户端需要知道IP地址才能去访问应用,然后就发送域名解析请求到公网域名www.contoso.com(就是在公网域名服务商注册的域名)。

2. 请求发到公网DNS上进行解析,然后公网DNS根据你的配置的CNAME记录把请求发给Traffic Manager。

3. Traffic Manager会根据自己的配置文件(性能、循环法、故障转移),确定最佳终结点,选择好终结点后,把终结点的IP信息返回给客户端。

4. 客户端根据解析到的IP地址信息,直接发送请求道终结点。

怎么配置Traffic Manager?

Traffic Manager包含三种负载平衡方法:

  • 故障转移:如果终结点位于相同或不同的 Azure 数据中心(在管理门户中称为区域)内,并且你希望对所有流量使用一个主终结点,但是希望在主终结点或备用终结点不可用时提供备份,请选择“故障转移”。
  • 循环:如果要将负载分配到同一数据中心内的一组终结点或者分配到不同的数据中心,请选择“循环”。
  • 性能:如果终结点位于不同的地理位置,并且你希望请求客户端使用“最靠近的”终结点(因为延迟最低),请选择“性能”。

三个不同的负载平衡方法,三个不同的选择,下面我主要就故障转移场景来演练,如何通过Powershell创建Traffic Manager,并进行基本的配置。

创建故障转移的负载平衡器

New-AzureTrafficManagerProfile -Name "cloudvip" -DomainName "cloudvip.trafficmanager.net" -LoadBalancingMethod "Failover" -Ttl 30 -MonitorProtocol "Http" -MonitorPort 80 -MonitorRelativePath "/"

表示我要创建一个cloudvip的Profile,域名为cloudvip.trafficmanager.net,负载平衡方法是故障转移,监视内容:协议http 端口 80 默认路径。

我们进入门户可以看到已经创建好该Traffic Manager。

加入终结点

这时我们的Traffic Manager并没有包含任何终结点,下面我开始通过Powershell把终结点加进来。

1.$TrafficManagerProfile = Get-AzureTrafficManagerProfile -Name "cloudvip"
2.Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $TrafficManagerProfile -DomainName "blog01.cloudapp.net" -Status "Enabled" -Type "CloudService" | Set-AzureTrafficManagerProfile

第一个命令是使用Get-AzureTrafficManagerProfile得到cloudvip的参数然后存放在TrafficManagerProfile变量中。

第二个命令是添加域名为blog01.cloudapp.net的云服务,然后通过Set-AzureTrafficManagerProfile变更到azure中。

带有权重参数加入终结点

使用同样方法添加另外一个终结点,这次加上权重的参数。

Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $TrafficManagerProfile -DomainName "blog02.cloudapp.net" -Status "Enabled" -Type "CloudService" -Weight 2 | Set-AzureTrafficManagerProfile

查看终结点详细信息

$TrafficManagerProfile.Endpoints | Format-List

使用PowerShell修改权重

可以使用Set-AzureTrafficManagerEndpoint重新设置终结点,我来演示把blog01节点的权重改成3.

Set-AzureTrafficManagerEndpoint -TrafficManagerProfile $TrafficManagerProfile -DomainName "blog01.cloudapp.net" -Status "Enabled" -Type "CloudService" -Weight 3 | Set-AzureTrafficManagerProfile

查看结果

最后我们在客户端进行测试

这时我们可以看到Traffic Manager把流量引入到blog01上了,这时我如果想把节点2(blog02)作为主节点,要怎么设置呢?你可以运行一下命令

1. $Profile = Get-AzureTrafficManagerProfile -Name "MyProfile"
2. $Profile.Endpoints[0],$Profile.Endpoints[1] = $Profile.Endpoints[1],$Profile.Endpoints[0]
3. Set-AzureTrafficManagerProfile -TrafficManagerProfile $PROFILE

从结果中我们可以看到,节点2变成了主节点,我们再来ping一下试试。

现在是节点2在提供服务。

总结:从上面的示例中,我们可以看到,一个网站设计成一个高可用架构,如果一个站点遭到毁灭性的攻击和破坏,我们可以快速的切换到备用站点,以提供服务。从而避免类似携程的事件发生。

时间: 2024-10-06 20:32:09

如何利用Azure中的Traffic Manager避免此次携程事件的相关文章

Windows Azure Traffic Manager (5) Traffic Manager Overview

<Windows Azure Platform 系列文章目录> 笔者默默地看了一下之前写的Traffic Manager内容,已经差不多是3年前的文章了.现在Azure Traffic Manager有了新的功能,正好周末的时候也在研究相关的内容,这次做笔记总结一下. 首先第一点,笔者不太认同Azure官方网站写的Traffic Manager是负载平衡: Traffic Manager最多算是智能DNS解析(Smart DNS).用户的请求,按照一定的规则(性能.循环法.故障转移)路由到合适

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

<Windows Azure Platform 系列文章目录> 注意:本文介绍的是使用国内由世纪互联运维的Azure China服务. 以前的Traffic Manager,背后的Service Endpoint必须是Azure数据中心的Cloud Service. 现在最新的Traffic Manager,Endpoint不仅仅支持Azure数据中心的Cloud Service和Web Site.同时还支持部署在自建数据中心(第三方托管)的应用程序. 这种增强功能对客户的收益在于,平时客户可

技术直播 | 数据分析在携程产品设计中的应用

数据与设计的关系,业界向来颇多热议——有“数据驱动设计”之说,有“数据引导设计”之论,也有类似“数据关注削弱用户体验”的抱怨. 看似感性主观的用户体验设计与理性客观的数据分析,究竟怎样才能相互作用进而碰撞出产品的灵感火花? 在本期携程技术微分享中,我们将通过酒店产品设计中的两个案例介绍数据在携程产品设计过程中的应用实践,以及携程所构建的专业数据体系,并探讨身为一个设计师的数据观. 活动详情 主题:数据分析在携程产品设计中的应用 嘉宾:林传毅,携程酒店UED资深交互设计师 时间:9月27日(周二)

微软公有云魅力之Traffic Manager

在上一篇博文中简单说了说Azure的Websites服务,Websites可以支持多实例扩展,也就实现了负载平衡功能,此外像Azure的虚拟机服务本身所在的云服务其实也是一个负载平衡的形式存在着,那么在Azure当中除了这些内置的负载平衡功能之外,还单独的推出了一个叫做Traffic Manager的服务,那么这个traffic manager到底是干嘛用的呢? 从微软官方的说明来看如下: "使用 Azure Traffic Manager 可以控制向指定的终结点(可能包括 Azure 云服务.

利用Azure Rest API 创建虚拟机

在此之前,我曾经看过一篇文章讲叙了如何利用Azure power shell team 提供的class library. 而就在这篇文章发布之后不久,我又发现微软发布了一个preview 版本的Windows Azure Management Libraries For .NET Nuget package来帮助.NET 开发人员来更好的控制Auzre Platform. 相比power shell team使用的library, Windows Azure Management Librar

在Azure中运行虚拟应用的最佳方式&mdash;&mdash;XenApp

之前写过两篇博客,介绍Microsoft将其虚拟应用RemoteApp放到了Azure云平台,利用这种方式,将传统的Windows应用转化成类似SaaS应用的交付方式. 有关各类应用及其将来发展的思考,暂且不提,不过微软忽然停止了支持RemoteApp. 作为老牌应用虚拟化厂商,Citrix 的XenApp广为人知,现在,XenApp已经把方案部署到了Azure中.通过Azure市场,即可找到XenApp的试用. 从Citrix官网的介绍来看,XenAp在Azure中的架构和私有云搭建的架构有所

wp8.1 Study16:网络之 使用Azure移动服务及利用Azure推送通知服务

一.WP8.1有关网络的API WP8.1与其它平台的对比如下图: 二.Azure移动服务 前提: Azure移动服务可以让使用者的数据存放在云空间,从而方便使用者的App在不同平台上的数据共享. 1.在App添加Azure服务 (注意:如果微软账户没有添加Azure移动服务,那么你没有上图界面且不能进行下步) 当成功添加Azure后,会自动在项目的引用下添加有关Azure移动服务客户端库,同时也会在APP.xaml.cs添加对Microsoft.WindowsAzure.MobileServ-

利用Azure Automation实现云端自动化运维(4)

在上述基本准备工作做完后,wo们看看如何实现利用Azure Automation实现定时自动开关机的操作,这种场景非常适合Dev/Test环境,因为Azure的虚拟机是按照分钟收费的,所以我们可以在开发测试人员上班的时候打开虚拟机,而在下班,周末的时候关闭虚拟机,从而节约成本,从另外一个层面来讲,也是体现云的灵活性. 首先讲一下设计的基本原则,如何做能让你的自动化脚本更灵活,更具有可移植性: 参数化:尽量不要在脚本中写死任何变量,负责除了修改代码,别无他法,而且可维护性会变的很差 合理使用资产:

如何利用excel中的数据源制作数据地图

关于这个问题,制作数据地图的方法已不新奇,总体来说有这么几类方案: 一类方案:直接在excel里制作 优势:个人小数据量应用较为方便简单 缺点:需要熟悉VBA,且更强大的功能对VBA水平要求较高 1.绘制地图图形 + VBA宏语言 思路:用插入图形"任意多边形"绘制地图:每一个"任意多边形"赋予正确名称:对"任意多边形"赋值:利用VBA对"任意多边形"的值进行操作, 例如上色. 先准备一张所需要的地图图片,网上都有,可以下载