如何设置主动/被动(又名故障转移)模式下的ARR?

问题

我正在尝试在NLB + ARR体系结构之后configuration多个Web场(针对不同的站点)。 假设我有6个虚拟机:

  1. ARR + NLB 2个虚拟机群集。 它接收stream量并将其转发给内容服务器。 使用HTTP主机头条件的URL重写规则将请求路由到正确的内容服务器。
  2. 站点1内容服务器:2个虚拟机。 托pipehttp://www.mysite1.com/
  3. 站点2内容服务器:2个虚拟机。 托pipehttp://www.mysite2.com/

一切工作正常,我已经testing,我有两个层次上的高可用性。

现在,由于Site 2必须以主动/被动模式工作,所以只有一个虚拟机接收stream量,而另一个虚拟机则用于故障转移。 在某种程度上,我想要类似于NLB的单主机模式,但是对于ARR。

这怎么能实现?

解决方法

我已经尝试了几种间接方法来达到预期的行为。

  1. 负载平衡algorithm。 试图设置轮和权重为1/0。 问题是你不能设置0.它必须至less为1.你可以设置40亿+ smth / 1,但我不确定这是否保证没有随机请求进入第二个节点。
  2. 主机名称与服务器相关性 在Host Name Affinity的高级设置中,我只能configuration1台服务器分配到Site 2.它工作正常,但问题是2台ARR虚拟机之间路由表不同步。 所以,ARR1不时地将stream量关联到一个节点,而ARR2则关联到另一个节点,而不是主动/被动的。
  3. 主机名称关联+ NLB单个主机。 作为先前方法的修改,我还可以将NLB切换到单主机模式以解决路由表同步问题。 在这种情况下,问题是我正在closures站点1的ARR负载平衡。
  4. 主机名称亲和力+ NLB单个主机+2个IP地址。 如果我添加第二个IP地址到以前的解决scheme,创build2个NLB群集工作在不同的模式,一切都应该工作得很好。 问题是我不想为第二个公共IP付钱。

没有一个解决scheme是完美的。

理想解决scheme的形象

我真的很想知道如何将ARR置于单主机模式,就像它可以为NLB所做的一样。 让它同步节点之间的路由。

任何人都知道如何做到这一点? 或者知道替代方法?

我发现了一种似乎有效的方式,尽pipe不是完全的。 这里有描述。 这个想法是使用“服务器variables散列”负载均衡algorithm和“HTTP_HOST”作为variables。 这样ARR的所有实例都将给定的主机映射到相同的内容服务器。 我testing过,如果映射的服务器不工作,他们会回退到另一台可用的服务器。

但是,解决scheme的问题在于,您无法控制主机映射到哪个内容服务器,而是由散列函数确定。 然而,从某种意义上说,这是正确的 – 如果您害怕将任何节点作为活动节点,那么您如何期望可靠的故障转移? 您必须确保在所有的内容服务器上同时进行。

另一个问题是你不能为每个站点使用多个主机名,因为你可能会把它们映射到不同的服务器上。