【问题标题】:DNS: High Availability with Azure Web Apps + Traffic ManagerDNS:Azure Web Apps + 流量管理器的高可用性
【发布时间】:2018-01-03 14:18:31
【问题描述】:

我有一个具有以下设置的客户:

  • DNS 是 NetworkSolutions。 DNS 条目的最短 TTL 为一小时。
  • 托管标准 MVC 站点的 Azure Web 应用程序。
  • Azure 流量管理器设置为优先级。
  • 我们的 A 记录指向 Azure Web App 的 IP 地址。我们的 www 和其他各种子域的 CNAME 指向我们的流量管理器端点。然后,我们的流量管理器端点指向 [siteName].azurewebsites.net。
  • 我们的裸域只是 301 重定向到我们的 www。

我的目标是在另一个数据中心建立一个热备份,如果需要,我可以快速进行故障转移。使用流量管理器,我可以将流量管理器中所有子域的 TTL 设置为较小的值,例如几分钟。如果我需要故障转移,这很快。

我的问题是关于裸域 A 记录的故障转移。在 NetworkSolutions,A 记录必须是 IP 地址。我有 Google'd/Bing'd 并且我相信无论 DNS 提供商如何都是如此。

有哪些选项可用于将 A 记录快速故障转移到次要区域和另一个 Web 应用程序?到目前为止,我唯一的想法是切换到一个新的权威 DNS,让我将 A 记录的 TTL 保持在一个小时以内,然后完全处理掉流量管理器。

考虑到我们的目标是快速故障转移到不同区域的 Web 应用,还有其他更优化的替代方案吗?

【问题讨论】:

    标签: azure dns azure-web-app-service azure-traffic-manager


    【解决方案1】:

    @Y.B.链接到关于服务器故障的一个很好的答案,讨论了 DNS 对于故障转移并不能很好地工作这一事实。即使您确实将 TTL 设置为 5 分钟,也会有很多设备不会遵守这一点。

    here 所述,Traffic Manager 是一项非常可靠的服务。 并且即使某个 Azure 区域出现故障也不会受到影响。

    您的 A 记录策略意味着搜索引擎不会索引原始域。所以这些仍然有效。

    但是,DNS 不是故障转移解决方案。无法保证传播对 DNS 记录的更改需要多长时间。

    像 CloudFlare 这样的服务可以帮助您进行负载平衡,因为它们使用任播地址。

    【讨论】:

    【解决方案2】:

    DNS is a poor choice for simulating failover

    另一种选择可能是在区域 VNet 中使用 App Service EnvironmentSet up IP addressing to connect after failover to a secondary site。基本上,A 记录仍将域名解析为相同的 IP,但 IP 地址本身在主站点释放并分配给故障转移站点。

    【讨论】:

    • 您不能“将 A 记录指向流量管理器”,因为 TM 在 DNS 级别工作。这些请求不通过 TM,因此没有您可以使用的相关 IP 地址。因此,只能使用带有子域的 CNAME 记录。
    • @juunas 对,感谢您对 ATM 的更正。您认为 IP 重新分配适用于 ASE 吗?
    • 嗯,无论这些应用程序是在“公共”服务计划中还是在 ASE 中的专用服务计划中,都不会真正产生影响。无论如何,IP 地址都指向数据中心的负载均衡器。因此,如果单个服务器发生故障,它不会影响任何事情(好吧,也许某些请求会失败)。 OP 必须将 A 记录指向另一个 IP 地址的情况将是整个数据中心出现故障的情况。或者,如果他们希望用户点击更接近的实例,他们需要任播。
    • 您对 ATM 和 CloudFlare 的回答是绝对正确的。我知道在“公共”服务中无法控制 Web App IP 地址,如果数据中心出现故障,Web App 的新实例将有一个新 IP。部署在虚拟网络中的 ASE 应该(可能?)通过重新分配 IP 来实现这一技巧。
    【解决方案3】:

    我假设您的“A”记录位于区域顶点(即 mydomain.com 而不是 something.mydomain.com)。如果是这样,您将面临两个限制:

    • 域的顶点不能包含 CNAME 记录(DNS 标准禁止这样做)
    • 流量管理器仅适用于 CNAME

    这些是不兼容的。你被困住了,需要一个解决方法。

    有一些基于 DNS 的流量管理服务支持使用 A 记录进行流量管理(AWS Route53 就是其中之一,还有很多其他服务)。这些允许在区域顶点(即 mydomain.com)进行流量管理。您需要使用该服务托管您的域,并在那里管理您的域的所有 DNS 记录。

    您的选择是:

    1. 使用不同的基于 DNS 的流量管理服务,而不是流量管理器,该服务支持 A 记录的流量管理。
    2. 使用非顶级域,例如仅限 something.mydomain.com
    3. 创建一个简单的 HTTP 重定向服务,将 mydomain.com 重定向到 something.mydomain.com。在后者上使用流量管理器。将前者托管在多个区域,并在 mydomain.com 上创建指向两者的 A 记录(因此依赖于 A 记录之间的客户端故障转移,应该工作)
    4. 使用应用程序级故障转移服务,例如应用程序网关。在多个区域托管应用程序网关(以实现高可用性),并与 #3 一样在 mydomain.com 上创建指向两者的 A 记录。
    5. 使用非 DNS 第三方流量管理解决方案,例如 CloudFlare。

    您可以在此处投票以在流量管理器中添加对顶点域的支持:https://feedback.azure.com/forums/217313-networking/suggestions/5485350-support-apex-naked-domains-more-seamlessly

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      相关资源
      最近更新 更多