我们目前有一个 DNS 记录通过 DNS Made Easy 连接到 IIS 中的许多 Web 应用程序。例如。
myDNSName.example.com/Customer1
myDNSName.example.com/Customer2
这很有效,因为myDNS名称.example.com指向一个框。现在我们处于需要将这些网站分散到多个框的情况。如果我们要求客户点击不同的链接,我们将面临重大问题,因为他们需要将此传播给所有用户。
有没有办法在 DNS 级别设置映射来指向myDNSName.example.com/Customer1一个 IP 地址和myDNSName.example.com/Customer2另一个 IP 地址?我认为目前我们可以实现这一目标的方法是编写 IIS 级别的网站重定向/重写,但这意味着 IIS 会成为一个故障点,如果执行重定向的中央框发生故障,则所有内容都会发生故障。我们希望确保我们有一个关注点分离,这样我们就可以限制一件事发生故障而导致所有事情都发生故障的可能性。
答案1
不,DNS 不了解 http,因此您无法根据 URL 将其指向服务器。
您可以将 DNS 指向负载均衡器(例如 Nginx),并让其将请求代理到其他服务器。如果您想要冗余,可以查看负载均衡器的两个 A 记录,并在循环赛理论上,如果一个负载均衡器宕机,另一个可以使用,但我不知道这在实践中是否可行。客户端可能始终使用第一个 A 记录,也可能 50/50 使用它们,也可能将第一个故障转移到第二个,等等。值得考虑,因为这是最便宜的选择,但同样,我还没有尝试过。
更好的选择可能是托管服务,例如 AWS ELB(弹性负载均衡器)。但是您必须使用 AWS(亚马逊网络服务)。ELB 需要 DNS 中的 CNAME 记录,而不是 A 记录。
AWS路线 53DNS 是一种高级 DNS 服务,可以有效地将请求分发到不同的服务器。您可以按百分比分割流量,可以进行故障转移,可以进行基于地理位置或延迟的平衡,也可以使用这些的组合。这可能是您的最佳选择。
另一个选择是使用CloudFlare CDN,谁能做负载均衡跨多台服务器为您提供服务。这是一个实用的选择。打电话给他们询问他们是否能提供帮助。您可能需要他们的付费计划之一。可能还有很多其他提供商可以做到这一点,我恰好知道 CloudFlare 可以做到。