故障切换开关

我需要一个服务器/交换机/一些东西(我将其称为“故障切换”)来执行以下任务。

  1. 故障切换开关后面有两个HTTP服务器。
    • 通常,所有的请求都被路由到server 1
    • 如果服务器1死亡(及时对HTTP请求停止响应),则所有请求均被路由到server 2
    • server 1恢复时(开始及时响应HTTP请求),所有的请求都被路由回server 1
    • 故障切换开关有一个外部IP地址(请求最初到达)。

这件事应该尽可能的愚蠢和简单。

它是如何被恰当地调用的,这将是怎样的一个例子?

更新:

理想情况下,这不应该有任何移动部分(如HDD或风扇)。 所以专用的硬件解决scheme将是首选。

更新2:

这件事应该是一个开关,而不是一个平衡器。 它应该根据HTTP服务器的可用性进行切换,而不是ARPICMP

你想要什么通常被称为负载平衡器。 负载平衡器可以是设备forms,例如F5 Big-IP机箱,也可以是在商品硬件上运行的负载平衡应用程序forms。 其中一个例子是HAProxy ,巧合的是,它正在为所有的StackExchange站点进行负载平衡。

如果您不想进行负载均衡,则只需要一个简单的故障转移群集解决scheme,即可在群集成员之间发送心跳,并分配您将用于访问该服务的虚拟IP的所有权。 那里有几十个。

在Windows上,事实上的答案是Microsoft Clustering Services(MSCS),它包含在Enterprise和Datacenter版本中。 在Linux / Unix上,您可能希望查看Heartbeat(简单但不是超级可configuration),Pacemaker(强健但稍复杂)或其他类似系统。

这里有一些开源的解决scheme,这将有所帮助。

我会检查的第一个将是PFSENSE

pfSense几乎可以在任何硬件上运行 – 也可以在vps中运行。 该系统将允许负载平衡,集群以及各种其他服务

pf使用“鲤鱼”方法的想法进行负载平衡和故障切换 – 非常容易设置。

另一种方法是在阿尔卡特朗讯Omni-Switch上有一个称为服务器负载均衡的function。 这将做你正在寻找的东西,而不是在ip层这样做,它在MAC地址层。

你在做什么不一定简单实施,并采取一些监测/维护。

我不知道任何不是平衡器的硬件解决scheme。 您可能需要查看群集,这意味着运行一种屏蔽和心跳的forms,以便服务器相互监视。

如果可能的话,您可能会希望在Web服务器前端使用共享存储。

也就是说,如果你使用的是Linux,你可能会希望谷歌的高可用性的Linux,它应该指向你的资源configuration心跳软件,监视服务器上的服务,如果一个人失败,它会带来另一台服务器过度。 一旦另一台服务器恢复运行,您可以将服务请求转换回主服务器。

我之所以这么说并不简单,是因为你脑海中可能出现了分裂的情况。 确保你谷歌和相应的计划。

您还需要硬件设置在服务器之间的专用高速连接上彼此交谈,您必须保持某种共享存储共享,因此您不需要同步文件。

所以如果你不想采取平衡器路线,你将不得不花费一些时间和精力来运行集群。 我不太了解Windows集群,但是如果这就是你正在运行的内容,那么你将会在集群服务的Windows的高端版本中内置一些选项; 我认为这是在企业和数据中心版本。 你将不得不浏览微软的营销无人机网站了解更多信息。

祝你好运!

我在Linux上使用磅( http://www.apsis.ch/pound )。 您可以轻松将其安装到小型设备型机箱中。 从他们的网站:

什么是:

  1. 反向代理:它将来自客户端浏览器的请求传递给一个或多个后端服务器。 […]
  2. 一个故障转移服务器:如果后端服务器出现故障,Pound会注意到这个事实,并停止向它传递请求,直到它恢复。

它的好处包括真正的微小,简洁的configuration文件和小的代码和系统脚印。 你可以在10分钟内完成,运行和validation。

通常,这种事情是在更大的环境中使用负载平衡器来完成的,因为LB设备倾向于相对稳定并且不倾向于摔倒。 对于您所看到的具体情况,您只需将其中一个设置为“100%”,另一个设为负载的“0%”,如果第一个设置消失,则第二个接pipe。

如果您正在查看基于软件的解决scheme,则取决于您使用的操作系统。 我build立了Ultramonkey和Zebra的解决scheme(现在是HA-Linux套件的一部分,我相信),但是我正在伦敦和Palo Alto之间进行故障切换,所以我也需要路由组件。