6

Twilio 和其他 HTTP 驱动的 Web 服务具有后备 URL的概念,如果主 URL 超时或失败,Web 服务将 GET 或 POST 发送到您选择的 URL。对于 Twilio,如果后备 URL 也失败,他们将不会重试请求。我希望将后备 URL 托管在单独的机器上,这样如果主服务器关闭或无法访问,错误就不会丢失。

我想要一些次要的方法:

  1. 将请求存储到后备 URL
  2. 将请求重播到主服务器上稍有不同的 URL
  3. 重试 #2 直到成功,然后从队列/数据库中删除请求

是否有一些现有的软件可以做到这一点?如果需要,我可以自己构建一些东西,我只是认为这将是某人已经做过的事情。我对 HTTP 和周围的工具(代理、反向代理等)不够熟悉,无法知道要搜索的正确流行语。

4

1 回答 1

3

有几种可能性。

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

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

应该可以配置 IP 平衡,以便当主要或主 http 服务失败时,辅助或备用 http 服务成为主服务。carp 是面向主机的,而不是应用程序服务。所以当 http 服务宕机时,它也应该关闭网络接口让 carp 做它的事情。这意味着您需要多个 IP 地址才能登录机器并进行维护。一旦原始服务重新上线,您将需要一个脚本来执行后续操作。

第二种选择是使用 nginx。这可能更适合您正在尝试做的事情。

许多年前,我需要一些类似于正在尝试做的事情,我最终拼凑了一些可以做到的事情。本质上它是一个开关。当“A”失败时,切换到“B”。重新同步过程是从“B”获取带有时间戳的日志并将它们回放到“A”,一旦“A”重新上线。

于 2013-10-10T16:33:40.803 回答