通过重试存储和转发HTTP请求?

时间:2013-07-31 02:19:40

标签: http proxy twilio high-availability fault-tolerance

Twilio和其他HTTP驱动的Web服务具有fallback URL的概念,如果主URL超时或以其他方式失败,Web服务会向您选择的URL发送GET或POST。对于Twilio,如果回退URL也失败,他们将不会重试请求。我希望将备用URL托管在一台单独的计算机上,以便在主服务器关闭或无法访问时,错误不会在以太网中丢失。

我想为次要的某种方式:

  1. 将请求存储到后备网址
  2. 将请求重播到主服务器上略有不同的URL
  3. 重试#2直到成功,然后从队列/数据库中删除请求
  4. 是否有一些现有的软件可以做到这一点?如果需要,我可以自己构建一些东西,我只是认为这将是某人已经做过的事情。我对HTTP和周围的工具(代理,反向代理等)不太熟悉,无法知道要搜索的正确的流行语。

1 个答案:

答案 0 :(得分:3)

有几种可能性。

一种选择是使用通用地址冗余协议或鲤鱼。手册页的简要说明如下。

“carp允许同一本地网络上的多个主机共享一组IP地址。其主要目的是确保这些地址始终可用,但在某些配置中,carp还可以提供负载均衡功能。”

应该可以配置IP平衡,以便在主要或主要http服务失败时,辅助或备用http服务成为主服务器。 carp是面向主机而不是应用程序服务。因此,当http服务发生故障时,它还应该取消网络接口以便carp做其事情。这意味着您需要多个IP地址才能登录计算机并进行维护。一旦原始服务重新联机,您将需要一个脚本来执行后续操作。

第二个选项是使用nginx。这可能更适合你想要做的事情。

许多年前,我需要类似于正在尝试做的事情。最后,我总结了一些做到这一点的事情。基本上它是一个开关。当'A'失败时,切换到'B'。重新同步过程是从'B'获取带时间戳的日志,并在'A'重新联机后将其播放回'A'。