我一直在玩高可用性解决scheme几天,到目前为止,我发现UCARP非常有用的IP故障切换。
这是死了简单,做这项工作。
我正想着更进一步:
如果连接共享相同IP的两个节点的路由器将始终发送所有分组到两个节点 (总是),那么我可以实现更大的负载平衡 。
这就像一个“主 – 主”解决scheme,而不是“主备”。
来源IP是可分的。
如上所述,冗余组合 ,假设两个这样的节点共享一个(“虚拟”)IP。
当他们都起来的时候,他们会简单地分开客户端的源IP(它的普通数字),并知道如何做出反应。
例如,Node1使用除以2的IP。
剩下的就是Node2。
客户端启动TCP / IP连接(通过共享IP)。
连接两个节点的路由器都将此请求发送给两者。
如果客户端的IP完全被2分割,则Node1应答。
此时Node2忽略,因为它知道Node1。
如果一个节点发生故障,例如Node1,则另一个节点(Node2)检测到它 – 通常情况下, 就像UCARP一样!
那时Node2将开始为其他客户提供服务。
当Node1回来的时候,Node2将停止从一个可被2除尽的IP来的SYN请求(TCP / IP连接启动的第一步),让Node1继续服务。
从路由器的方向可能会出现一个可能的问题 :它需要将每个传入的数据包发送到冗余组中的X个节点。 高(er)内部networking负载。
另一个可能的问题是,每个节点实际上获得很多很多的数据包,即使是那些“不需要”的数据包。
有了今天的路由器/networking卡,我认为这是一个非常小的价格,而非常高的可用性 。
更不用说,在这种情况下,我会充分利用我的资源(以一种好的方式),而不是使用一个或多个“待命”服务器,这些服务器只能做到“待命”。
我确切的问题是:
1)有没有这样的解决scheme? (开源,免费,基于Linux)。
2)路由器能支持这样的事情吗? 它应该支持哪些标准? 我会问DS / VPS提供商有关这种能力的是什么?
无论如何,这是我对这个问题的一些思考。 我很乐意得到一个简洁的答案支持的链接和几个字。 不仅如此,显然是欢迎:)
我不认为这是可行的/可行的。 这肯定不存在,因为它比起星球大道来说用途非常有限。
我看到的主要问题是跟踪每个IP数据包的进出,并以对应用程序完全透明的方式在两台计算机上同步IP堆栈的状态。 你如何“模拟”节点1上的应用程序来完成工作但不回答,或者奇迹般地拾取节点2的节点? 它不能仅仅继续nocde 1应用程序的tcp通信,而不需要特殊的编程。