《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 路由。
下图说明了具体的工作方式:
- 用户流量指向公司域名:使用公司域名的客户端请求信息。目标是将 DNS 名称解析为 IP 地址。必须通过在 Traffic Manager 外部维护的正常 Internet 域名注册保留公司域。在图 1 中,示例公司域为www.contoso.com。
- 公司域名指向 Traffic Manager 域名:公司域的 DNS 资源记录指向在 Azure Traffic Manager 中维护的 Traffic Manager 域名。这是使用一条 CNAME 资源记录来实现的,该记录可将公司域名映射到 Traffic Manager 域名。在本示例中,Traffic Manager 域名为 contoso.trafficmanager.net。
- Traffic Manager 域名和配置文件:Traffic Manager 域名是 Traffic Manager 配置文件的一部分。用户的 DNS 服务器针对 Traffic Manager 域名(在本示例中为 contoso.trafficmanager.net)发送新的 DNS 查询,该查询由 Traffic Manager DNS 名称服务器接收。
- 处理的 Traffic Manager 配置文件规则:Traffic Manager 使用指定的负载平衡方法和监视状态来确定应该由哪个 Azure 终结点为请求提供服务。
- 发送给用户的终结点域名:Traffic Manager 返回一条 CNAME 记录,该记录将 Traffic Manager 域名映射到终结点的域名。用户的 DNS 服务器将终结点域名解析为其 IP 地址,并将该地址发送给用户。
- 用户调用终结点:用户直接使用返回的终结点的 IP 地址调用该终结点。
由于公司域和解析的 IP 地址已在客户端计算机上缓存,因此,用户将持续与所选终结点交互,直到该终结点的本地 DNS 缓存过期。特别要注意的是,DNS 客户端缓存 DNS 主机条目的持续时间就是这些条目的生存时间 (TTL)。从 DNS 客户端缓存中检索主机条目会绕过 Traffic Manager 配置文件,如果在 TTL 过期之前终结点变为不可用,则你可能会遇到连接延迟的情况。如果缓存中 DNS 主机条目的 TTL 过期,并且客户端计算机需要再次解析公司域名,则该计算机将发送新的 DNS 查询。根据应用的负载平衡方法和请求时终结点的运行状况,客户端计算机可能会收到不同终结点的 IP 地址。
如何实现Traffic Manager
将 Azure 云服务、Azure 网站或其他终结点部署到生产环境。在创建 Traffic Manager 配置文件时,必须将其与某个订阅关联。然后,在生产环境中为云服务和“标准”层网站添加属于同一订阅的终结点。如果某一终结点位于过渡环境中而不在 Azure 生产环境中或同一订阅中,则不能将其添加为外部终结点。
确定 Traffic Manager 域的名称。考虑为域使用带有唯一前缀的名称。域的后半部分(即 trafficmanager.net)是固定的。
确定要使用的监视配置。无论使用哪种负载平衡方法,Traffic Manager 都会监视终结点以确保它们联机。在你配置监视设置之后,Traffic Manager 不会将流量定向到监视系统判定为脱机的终结点,除非它检测到所有终结点均已脱机,或无法检测配置文件中包含的任一终结点的状态。
确定要使用的负载平衡方法。有三种不同的负载平衡方法。花时间了解哪种方法最满足你的要求。你之后可以随时更改方法。另请注意,每种方法都需要稍微不同的配置步骤。
创建配置文件并配置设置。可以使用 REST API、Windows PowerShell 或管理门户来创建 Traffic Manager 配置文件并配置设置测试 Traffic Manager 配置文件。测试你的配置文件和域是否按预期工作。
- 将公司域名的 DNS 资源记录指向配置文件以使其生效。使用图 1 中的示例,更改服务器上的 DNS 资源记录使其包含以下行,以便将公司域名指向 Traffic Manager 域名:
www.contoso.com IN CNAME contoso.trafficmanager.net
参考资料:https://msdn.microsoft.com/zh-cn/library/azure/hh744833.aspx