当一个人关闭时,“互联网”能否重新路由远程服务器之间的连接请求?

时间:2008-12-05 03:17:09

标签: tcp dns load-balancing reroute

我运行的OLTP系统允许在多个站点通过互联网进行SSL连接。我想找到一个有效的解决方案,以便在一个站点关闭时如何透明地自动重新路由事务连接。当网站实际上无法访问或无法连接但只是延迟或超载或发回不良结果时,考虑网站的奖励积分。

例如,用户系统将附加到www.abcdef.com或123.234.56.7,实际上会重定向到one.abcdef.com/two.abcdef.com或99.5.2.1/68.96.79.1,具体取决于哪个站点是工作。这听起来很像负载平衡,但主要是如何使用网络来避免单点故障,而不是如何在服务器之间传播工作。

用户的优势在于:(1)他们只需要知道一个URL或一个要连接的IP,以及(2)他们的交易在几种不同的故障情况下工作。例如,如果其中一个站点附近的公共网络出现故障或被错误路由,则如果该ISP的本地环路出现故障,则内部路由器或服务器会出现故障。当然,如果问题靠近用户,交易仍然会失败。

3 个答案:

答案 0 :(得分:1)

我曾在多年前问过类似的问题,答案与您愿意花多少钱有很大关系。

有硬件解决方案,设备的唯一目的是坐在服务器A和B的前面,以便当服务器A停机时它停止向它发送请求并且仅使用服务器B.在硬件中执行此操作的优点是性能和可靠性。

了解所有系统组件的相对可靠性也很有帮助。如果它是您担心的一个组件,那么您可以使该片段冗余,并将系统的其余部分设计为从一个到另一个进行故障转移。我这样说的原因是,没有一个完美的答案。

除非您正在尝试建立类似信用卡处理系统或其他类似金融交易系统的东西,其中钱不是对象:P

最常见的情况是故障转移设置,其中A故障转移到B.

如果您正在寻找“完美”故障转移,您可以在客户和A和B之间实施一个系统,该系统将自动重试等并返回答案,而客户甚至不会看到一个错误。但这可能会导致性能瓶颈,然后您就会遇到另一个可能会或可能不会失败的系统问题。现在我们回到我的第二段.... :)

这不是一个糟糕的问题,但了解更多关于你要做的事情(如果你已经被锁定在一个特定的实现中)会有所帮助。

答案 1 :(得分:0)

我想也许有一种方法可以让冗余的前端服务器位于负载均衡器后面。这个前端系统只需通过将它们重定向到分布在不同位置的真实服务器来响应请求。您的前端服务器可以定期检查其他服务器是否已启动,如果没有,则将该服务器从混合中取出。负载均衡器后面的冗余前端(或者可能只是在集群中)使其不会成为单点故障。您还可以使用位于不同位置的循环DNS解决方案来拥有多个前端。您可能需要在应用程序中考虑此体系结构。

您可能还希望拥有指向所有网站的冗余网络链接。

答案 2 :(得分:0)

ifstated可以用作pf的前端(在OpenBSD和FreeBSD上),用于将流量重定向到在线服务器。

man ifstated

  

Blockquote ifstated - 接口状态守护程序

ifstated 守护程序运行命令以响应网络状态更改,        它通过监控接口链路状态或运行exter来确定        最终测试。例如,它可以与carp(4)一起使用来更改运行        服务或确保carp(4)接口保持同步,或与pf(4)保持同步        测试服务器或链接可用性并修改转换或路由        规则。选项如下: