我有 3 个位置,每个位置都有自己的服务器 (s1.mysite.com、s2.mysite.com、s3.mysite.com)。这些都是站点的一部分:app.mysite.com。
我想使用 ARR 根据请求的来源位置将请求转发到场中的特定服务器(来自站点 1 的请求发送到其本地位置的 s1.mysite.com),同时允许在该特定服务器出现问题的情况下将故障转移到其他服务器之一。
我知道如何根据查询字符串将请求通过 DNS 名称 (s1.mysite.com) 分发到特定服务器,但如果该服务器出现故障,该名称将不起作用。
我可以使用 Microsoft ARR 以这种方式实现这种冗余和工作分配吗?
答案1
根据您对此类设置的理由,可能的解决方案可能会发生变化。我认为这里可能有两个原因:
- 尝试实现高可用性,同时优先选择能够提供最佳响应时间的应用服务器(场景 1)
- 根据用户所在的站点呈现定制内容(场景 2)
场景 1
如果您尝试实现 HA 并获得最佳响应时间,那么您将遇到问题,因为所有请求都需要先通过 ARR 服务器。解决此问题的方法是在每个站点上安装一个 ARR,使用 DNS 将用户指向其站点的 ARR 服务器,然后使用“最短响应时间”负载平衡算法。理论上,这将使站点 1 上的用户指向 s1.mysite.com,同时如果 s1 发生故障,还可以将故障转移到 s2 和 s3。
但是,如果网络问题导致 s1.mysite.com 不可用,那么也可能会导致站点 1 中的 ARR 服务器也不可用。但是,它可以保护您免受 s1.mysite.com 上的应用程序故障的影响。
场景 2
似乎没有任何现成的可用功能来执行您希望完成的路由类型。但是,有 API 可供您创建自定义重写提供程序以进行 URL 重写。有关此操作的信息,请参见这里。您可能能够结合自定义重写提供程序使用来自服务器变量、请求标头甚至查询字符串参数的信息来执行您希望实现的路由类型。