通过 http 代理进行故障转移,但不进行负载平衡

通过 http 代理进行故障转移,但不进行负载平衡

我们希望有一个主要的“测试” http 代理,并用它来做一些独特的事情。我们希望这个代理成为主要代理,因此使用 WPAD,我们希望将其作为始终使用的主要代理,而将另一个代理作为辅助代理(两个主机名)。这会起作用吗?还是浏览器会随机选择两者之一并进行负载平衡。

我想到也许可以返回一个 DNS 条目,然后在该 DNS 中放入两个 IP,并让发送回浏览器的顺序始终相同,这样可以工作,但我听说有时 Firefox 会在每个请求上继续尝试使用 DNS 中的失败条目,而 IE 实际上会切换并继续使用辅助条目。(我想我可以更进一步尝试监听第一个代理并更改 DNS 条目……但我不想做这样的工作)。

有什么方法可以仅使用 WPAD 来实现这一点吗?

答案1

一般来说,如果您的 WPAD 返回类似以下内容:

“代理测试代理:8080;代理备份:8080;直接”

浏览器将仅尝试与列表中的第一个建立连接,如果连接失败,则移动到有序列表中的下一个。

另请参阅维基百科条目

使用您描述的 DNS 解决方案,客户端可能不会关心是否有两个 IP 与一个名称相关联;如果它尝试了该名称,那么它就会放弃它。

并且每个浏览器对上述代码的行为可能略有不同。如果您不想使用 HTTP 负载平衡器来提供故障转移,那么基本上就是 WPAD 或 DNS,而 DNS 是一种更糟糕的方法。

DNS 可能会导致类似于“负载平衡”的行为,但在 WPAD 中使用有序列表则不会。故障转移行为可能很棘手,也可能很糟糕,但关闭浏览器通常足以重置它。

答案2

您提出的 DNS 解决方案称为 DNS 循环,它不会满足您的要求。对于每个解析请求,您都可以在响应中获得任一 IP 作为主 IP。它被认为是 [非常] 穷人的负载平衡,而不是故障转移的解决方案。

您会希望将测试服务器放在列表的第一个位置,就像您提到的以及 TristanK 所说明的那样。

相关内容