流量管理器的工作原理

使用 Azure 流量管理器可以控制跨应用程序终结点的流量分布。 终结点是 Azure 内部或外部托管的任何面向 Internet 的服务。

流量管理器提供两个关键优势:

客户端尝试连接到服务时,必须先将服务的 DNS 名称解析为 IP 地址。 然后,客户端连接到该 IP 地址以访问服务。

要了解的最重要点是,流量管理器在应用程序层(第 7 层)的 DNS 级别工作。 流量管理器使用 DNS 根据流量路由方法的规则将客户端定向到特定服务终结点。 客户端直接连接到所选终结点 。 流量管理器不是代理或网关。 流量管理器看不到在客户端和服务之间传递的流量。

流量管理器使用配置文件来控制云服务或网站终结点的流量。 有关配置文件的详细信息,请参阅管理 Azure 流量管理器配置文件

流量管理器示例

Contoso Corp 开发了新的合作伙伴门户。 这个门户的URL是https://partners.contoso.com/login.aspx。 该应用程序托管在 Azure 的三个区域中。 为了提高可用性并最大限度地提高全局性能,他们使用流量管理器将客户端流量分发到最近的可用终结点。

若要实现此配置,请完成以下步骤:

  1. 部署其服务的三个实例。 这些部署的 DNS 名称为“contoso-east.chinacloudapp.cn”、“contoso-north.chinacloudapp.cn”和“contoso-east2.chinacloudapp.cn”。

  2. 创建名为“contoso.trafficmanager.cn”的流量管理器配置文件,并将其配置为跨三个终结点使用“性能”流量路由方法。

  3. 使用 DNS CNAME 记录将虚名域名“partners.contoso.com”配置为指向“contoso.trafficmanager.cn”。

    重要

    只有一个 Azure [租户 ID] 可以拥有给定的根流量管理器 DNS 名称。 尝试使用已在使用的名称将显示错误。 在以下示例中,根 DNS 名称 contoso。 此外,如果配置文件是使用点分隔的名称(例如 partners.contoso.trafficmanager.cn)创建的,则会自动保留 contoso.trafficmanager.cn。

    流量管理器 DNS 配置

    备注

    将虚域与 Azure 流量管理器一起使用时,必须使用 CNAME 将虚名域名指向流量管理器域名。 DNS 标准不允许在域的“顶点”(或根)创建 CNAME。 因此,不能为“contoso.com”(有时称为“裸”域)创建 CNAME。 只能在“contoso.com”下为域创建 CNAME,例如“www.contoso.com”。 若要解决此限制,我们建议在 Azure DNS 上托管您的 DNS 域,并使用 别名记录 指向您的流量管理器配置文件。 或者,可以使用简单的 HTTP 重定向将“contoso.com”的请求定向到备用名称,例如“www.contoso.com”。

客户端如何使用流量管理器进行连接

在前面的示例中,当客户端请求页面 https://partners.contoso.com/login.aspx时,客户端将执行以下步骤来解析 DNS 名称并建立连接:

使用流量管理器建立连接

  1. 客户端将 DNS 查询发送到其配置的递归 DNS 服务,以解析名称“partners.contoso.com”。 递归 DNS 服务(有时称为“本地 DNS”服务)不会直接托管 DNS 域。 相反,客户端会将联系互联网中各种权威 DNS 服务以解析 DNS 名称的任务转移出去。

  2. 若要解析 DNS 名称,递归 DNS 服务将查找“contoso.com”域的名称服务器。 然后,它会联系这些名称服务器以请求“partners.contoso.com”DNS 记录。 contoso.com DNS 服务器返回指向 contoso.trafficmanager.cn 的 CNAME 记录。

  3. 接下来,递归 DNS 服务查找 Azure 流量管理器服务提供的“trafficmanager.cn”域的名称服务器。 然后,它会向这些 DNS 服务器发送“contoso.trafficmanager.cn”DNS 记录的请求。

  4. 流量管理器名称服务器接收请求。 他们根据以下条件选择终结点:

    • 每个终结点的配置状态(禁用的终结点不会被返回)
    • 每个终结点的当前运行状况,可通过流量管理器运行状况检查来确定。 有关详细信息,请参阅流量管理器终结点监视
    • 所选的流量路由方法。 有关详细信息,请参阅 流量管理器路由方法
  5. 所选的终结点将作为另一个 DNS CNAME 记录返回。 在这种情况下,假设返回的结果是 contoso-north.chinacloudapp.cn。

  6. 接下来,递归 DNS 服务查找“chinacloudapp.cn”域的名称服务器。 它会联系这些名称服务器以请求“contoso-north.chinacloudapp.cn”DNS 记录。 返回包含中国-北部服务终结点 IP 地址的 DNS“A”记录。

  7. 递归 DNS 服务合并结果,并向客户端返回单个 DNS 响应。

  8. 客户端接收 DNS 结果并连接到给定的 IP 地址。 客户端直接连接到应用程序服务终结点,而不是通过流量管理器。 由于它是 HTTPS 终结点,客户端执行必要的 SSL/TLS 握手,然后对“/login.aspx”页发出 HTTP GET 请求。

流量管理器和 DNS 缓存

递归 DNS 服务会缓存它收到的 DNS 响应。 客户端设备上的 DNS 解析程序也会缓存结果。 通过缓存,可以使用缓存中的数据,而不是查询其他名称服务器来更快地回答后续 DNS 查询。 缓存的持续时间由每个 DNS 记录的“生存时间”(TTL)属性决定。 较短的值会导致缓存过期更快,从而增加往返流量管理器名称服务器的次数。 较长的值意味着将流量从失败的终结点重新定向可能需要更长的时间。 流量管理器允许将流量管理器 DNS 响应中使用的 TTL 配置为低至 0 秒,最高为 2,147,483,647 秒(符合 RFC-1035的最大范围),从而选择最能平衡应用程序需求的值。

常见问题解答

后续步骤

详细了解流量管理器终结点监视和自动故障转移

详细了解流量管理器 流量路由方法