《Windows Azure Platform 系列文章目录

  笔者默默地看了一下之前写的Traffic Manager内容,已经差不多是3年前的文章了。现在Azure Traffic Manager有了新的功能,正好周末的时候也在研究相关的内容,这次做笔记总结一下。

  首先第一点,笔者不太认同Azure官方网站写的Traffic Manager是负载平衡:

  

  Traffic Manager最多算是智能DNS解析(Smart DNS)。用户的请求,按照一定的规则(性能、循环法、故障转移)路由到合适的节点服务器上。

  Traffic Manager与Azure Load Balancer的区别:

  Azure Load Balancer只支持1个DNS服务,且该服务只能在同一个数据中心的多个计算节点,不支持跨数据中心的负载均衡。Load Balancer没有异地容灾的能力。

  Traffic Manager背后可以有多个DNS服务,每个DNS可以分布在不同的区域(北京数据中心、上海数据中心、第三方数据中心)。Azure Traffic Manager支持异地容灾。

  在多数情况下,Azure Traffic Manger是与Azure Load Balancer组合使用。实现异地容灾+负载均衡。

  Traffic Manager可以帮助客户:

  -  提供关键应用程序的可用性。当我们使用一个DNS Hosting公有云服务的时候,Azure负载均衡器所在的所有计算节点,都在同一个数据中心。如果这个数据中心发生宕机,则这个Azure公有云服务就宕机了。我们可以使用Azure Traffic Manager,实现跨数据中心的高可用。

  -  提供高性能应用程序的响应能力。假设我们部署的云端应用程序是面向全国的用户的,需要很好的用户响应能力。如果我只把应用部署到Azure上海数据中心,那北方的用户访问速度可能会受到影响。使用Azure Traffic Manager,我们可以将用户的请求路由到最近的Azure数据中心,比如北方的用户请求路由到北京数据中心,南方的用户请求路由到上海数据中心。

  -  在不停机的情况下执行升级和服务维护 。Traffic Manager后台的Endpoint需要升级的时候,可以在Traffic Manager 管理里暂时禁用该Endpoint。等到该Endpoint升级完毕后,重新在Traffic Manager里重新启用。这样可以保证客户端在不宕机的情况下,维护和升级Azure云端服务。

  -  大型复杂部署的流量分配。Azure Traffic Manager进行进行嵌套,即可以将一个Traffic Manager作为Endpoint,增加到另外一个Traffic Manager里。提供更加负载的部署。(最多可以嵌套10层)

  

  Traffic Manager工作方式:

  在配置 Traffic Manager 配置文件时,指定的设置将为 Traffic Manager 提供所需的信息来根据 DNS 查询确定应该由哪个终结点为请求提供服务。实际的终结点流量不会通过 Traffic Manager 路由。

  下图说明了具体的工作方式:

  

  1. 用户流量指向公司域名:使用公司域名的客户端请求信息。目标是将 DNS 名称解析为 IP 地址。必须通过在 Traffic Manager 外部维护的正常 Internet 域名注册保留公司域。在图 1 中,示例公司域为www.contoso.com
  2. 公司域名指向 Traffic Manager 域名:公司域的 DNS 资源记录指向在 Azure Traffic Manager 中维护的 Traffic Manager 域名。这是使用一条 CNAME 资源记录来实现的,该记录可将公司域名映射到 Traffic Manager 域名。在本示例中,Traffic Manager 域名为 contoso.trafficmanager.net
  3. Traffic Manager 域名和配置文件:Traffic Manager 域名是 Traffic Manager 配置文件的一部分。用户的 DNS 服务器针对 Traffic Manager 域名(在本示例中为 contoso.trafficmanager.net)发送新的 DNS 查询,该查询由 Traffic Manager DNS 名称服务器接收。
  4. 处理的 Traffic Manager 配置文件规则:Traffic Manager 使用指定的负载平衡方法和监视状态来确定应该由哪个 Azure 终结点为请求提供服务。
  5. 发送给用户的终结点域名:Traffic Manager 返回一条 CNAME 记录,该记录将 Traffic Manager 域名映射到终结点的域名。用户的 DNS 服务器将终结点域名解析为其 IP 地址,并将该地址发送给用户。
  6. 用户调用终结点:用户直接使用返回的终结点的 IP 地址调用该终结点。

  由于公司域和解析的 IP 地址已在客户端计算机上缓存,因此,用户将持续与所选终结点交互,直到该终结点的本地 DNS 缓存过期。特别要注意的是,DNS 客户端缓存 DNS 主机条目的持续时间就是这些条目的生存时间 (TTL)。从 DNS 客户端缓存中检索主机条目会绕过 Traffic Manager 配置文件,如果在 TTL 过期之前终结点变为不可用,则你可能会遇到连接延迟的情况。如果缓存中 DNS 主机条目的 TTL 过期,并且客户端计算机需要再次解析公司域名,则该计算机将发送新的 DNS 查询。根据应用的负载平衡方法和请求时终结点的运行状况,客户端计算机可能会收到不同终结点的 IP 地址。

  如何实现Traffic Manager

  

  1. 将 Azure 云服务、Azure 网站或其他终结点部署到生产环境。在创建 Traffic Manager 配置文件时,必须将其与某个订阅关联。然后,在生产环境中为云服务和“标准”层网站添加属于同一订阅的终结点。如果某一终结点位于过渡环境中而不在 Azure 生产环境中或同一订阅中,则不能将其添加为外部终结点。

  2. 确定 Traffic Manager 域的名称。考虑为域使用带有唯一前缀的名称。域的后半部分(即 trafficmanager.net)是固定的。

  3. 确定要使用的监视配置。无论使用哪种负载平衡方法,Traffic Manager 都会监视终结点以确保它们联机。在你配置监视设置之后,Traffic Manager 不会将流量定向到监视系统判定为脱机的终结点,除非它检测到所有终结点均已脱机,或无法检测配置文件中包含的任一终结点的状态。

  4. 确定要使用的负载平衡方法。有三种不同的负载平衡方法。花时间了解哪种方法最满足你的要求。你之后可以随时更改方法。另请注意,每种方法都需要稍微不同的配置步骤。

  5. 创建配置文件并配置设置。可以使用 REST API、Windows PowerShell 或管理门户来创建 Traffic Manager 配置文件并配置设置测试 Traffic Manager 配置文件。测试你的配置文件和域是否按预期工作。

  6. 将公司域名的 DNS 资源记录指向配置文件以使其生效。使用图 1 中的示例,更改服务器上的 DNS 资源记录使其包含以下行,以便将公司域名指向 Traffic Manager 域名:

    www.contoso.com IN CNAME contoso.trafficmanager.net

  参考资料:https://msdn.microsoft.com/zh-cn/library/azure/hh744833.aspx

Windows Azure Traffic Manager (5) Traffic Manager Overview的更多相关文章

  1. [Windows Azure] Windows Azure Virtual Network Overview

    Windows Azure Virtual Network Overview 18 out of 33 rated this helpful - Rate this topic Updated: Ap ...

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

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

  3. Windows Azure功能更新: SDK 2.1发布,Traffic Manager集成

    最近,Windows Azure又进行了更新 Windows Azure SDK 2.0发布没多久,2.1版(for .NET)就在今天发布了.2.1版本在管理功能上进行了重大改进,包括Visual ...

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

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

  5. 宣布正式发布 Biz Talk Services、Azure Active Directory 和 Traffic Manager, 同时发布 Azure Active Directory 高级版预览

    除经济优势之外,云计算还在可转化为竞争优势的应用程序开发方面提供了更大的灵活性.我们很高兴看到每天创建的新 Windows Azure 订阅超过 1000 个,更令人兴奋的是,有一半客户使用价值更高的 ...

  6. 使用 IIS Manager 对 Windows Azure 网站进行远程管理

     最近,我们为客户新增了使用 Windows自带的 IIS管理控制台管理 Azure网站的功能.IIS Manager支持 HTTP over SSL,提供到您的 Windows Azure 网站 ...

  7. ADT后windows菜单未找到Android SDK Manager和Android Virtual Device Manager该解决方案的选择

    打开今天凌晨ADT准备编译androidproject的时候,突然发现windows菜单下的Android SDK Manager和Android Virtual Device Manager选项不见 ...

  8. 无责任Windows Azure SDK .NET开发入门篇一[Windows Azure开发前准备工作]

    一.Windows Azure开发前准备工作 首先我们需要了解什么是 Azure SDK for .NET?微软官方告诉我们:Azure SDK for .NET 是一套应用程序,其中包括 Visua ...

  9. 年末促销 Windows Azure在线充值送微软商城硬件大礼包

    春节前充值,尽享云端体验, 缤纷好礼持续进行时.即日起至2015年2月13日, 充值1000元以上即享好礼.您可以查阅WindowsAzure 官网活动页面,即刻参与活动:http://www.win ...

随机推荐

  1. IOS 计时器暂停和开始 防止重复点击

    -(IBAction)btnClick{ [self starTimer];//开始计时 //[self stopTimer]; } -(NSTimer*)timer{ if (!_timer) { ...

  2. Enum是如何用的?

    一.前言 对于枚举Enum,大家都非常熟悉,但枚举出现的场景非常多的时候,是不是可以抽象出一个通用的解决方式.代码大家都会写,但并不是所有人都喜欢写重复的代码,老是用Ctrl+C和Ctrl+V累不累啊 ...

  3. ehcache基本使用

    maven <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache< ...

  4. [Asp.net 开发系列之SignalR篇]专题六:使用SignalR实现消息提醒

    一.引言 前面一篇文章我介绍了如何使用SignalR实现图片的传输,然后对于即时通讯应用来说,消息提醒是必不可少的.现在很多网站的都有新消息的提醒功能.自然对于SignalR系列也少不了这个功能的实现 ...

  5. Entity Framework 5.0系列之自动生成Code First代码

    在前面的文章中我们提到Entity Framework的"Code First"模式也同样可以基于现有数据库进行开发.今天就让我们一起看一下使用Entity Framework P ...

  6. 使用Guava提供的transform批量转换

    实际开发了,为了快速查询,我们会把日期以Long类型的方式存储到数据库中,比如20000000000000L,但显示的时候,要完整的日期,即yyyy-MM-dd的格式显示. 这个时候,我们就可以使用C ...

  7. 使用MYSQL命令直接导入导出SQL文件

    很多时候,我们的数据开发都会用到很多开发利器,比如powerdesigner, navicat等这些软件,虽然好用,但是要收费,在公司里面是禁止使用盗版软件的,怕罚款各方面的,所以我们也不敢直接在公司 ...

  8. Java基础之如何解决斗地主问题

        难的是逻辑的分析,把逻辑转化成代码是一种能力,这种能力需要多练习总结.     多多指教,共同进步. 问题: 要求实现斗地主游戏发牌过程,打印三个玩家的牌和底牌.在不看底牌的情况下,统计出三个 ...

  9. Java的默认编码

    摘要: 1.Java的默认编码内容: 1.Java的默认编码 java的src.zip包中的java.nio.charset.Charset类中defaultCharset()方法说明java的编码类 ...

  10. EF架构~linq模拟left join的两种写法,性能差之千里!

    回到目录 对于SQL左外连接我想没什么可说的,left join将左表数据都获出来,右表数据如果在左表中不存在,结果为NULL,而对于LINQ来说,要实现left join的效果,也是可以的,在进行j ...