使用一台服务器和两个 IP 进行简单故障转移的方法

使用一台服务器和两个 IP 进行简单故障转移的方法

该设置是一台服务器(Windows 2008),位于一个位置,具有两个传入连接。由于服务器必须与各种现场设备交互,并且传入连接数量较少,因此数据中心不是一种选择,而是必须使用电缆/dsl 连接。

目标是用户访问https://service.site.com并会发送到主 IP 地址,如果主 IP 地址发生故障,则会发送到辅助 IP 地址。

我见过针对此问题使用循环 DNS 的建议,但是我想要避免的是缓存已关闭的接口的 IP。

在这些限制条件下,这样的事情还可能发生吗?

答案1

大多数浏览器如果第一次连接尝试失败,将尝试其他可用地址。但这显然取决于具体实现,没有 RFC 指令或建议。因此,如果您需要当然,您必须修改 DNS 区域并删除失败链接的 IP 地址。可以通过将 TTL 降低到较低值来解决缓存问题 - 300 秒相当常见,并且是缓存效率和数据时效性之间的良好权衡。

DNS RR 的一个可能问题是,没有办法为 DNS 记录指定任何类型的优先级(由于缺乏浏览器支持,无法使用 DNS SRV 记录),因此客户端将发送请求到两个都由于 DNS 响应中的记录轮换,地址会发生变化。如果您的某个链接比另一个链接更“昂贵”(无论以何种方式),并且除非主链接发生故障,否则您不会使用它,那么 DNS RR 就不是解决您问题的正确方法。

另一种选择是在备用位置/备用链路上使用反向代理(据称比您的 DSL/电缆链路具有更好的正常运行时间 - 例如数据中心中的虚拟机),它将主动监视您的两个连接并自动处理故障转移,而无需更改 DNS 记录。

答案2

在这些限制条件下,这样的事情还可能发生吗?

不。

当您拥有一个负载均衡器,其背后有多台服务器时,就要求负载均衡器始终在线。有多种方法可以实现这一点,例如,负载均衡器实际上可能不是一台服务器 - 可能是多台假装是一台的服务器。如果一台服务器发生故障,另一台服务器将接管。

然而,有一个假设,即在远端,某物那里满足请求。

如果您发现自己处于链接断开的情况,那么数据包将无法到达您的服务器 - 并且您对此无能为力。DNS RR 是次佳选择,因为您正在告诉客户端去尝试另一个 IP 地址。否则,客户端将愉快地重试相同的 IP,并且得不到任何响应,然后放弃。

最前端的服务必须始终可访问,才能使这一切正常工作。没有它,一切都无法进行。HA 解决方案通常假设链接良好。是的,有数据中心级故障转移之类的东西(例如国家级断电),但它们也有相关的停机时间,流量会汇聚到不同的 IP 集 - 它永远不会是即时的。

相关内容