0

原来 http.request 只能连接到一台主机。是否有其他方式或其他方法可以指定多个主机来创建http远程请求客户端?

这背后的原因是我连接的远程服务有三台冗余主机,如果一台出现故障,其他主机将继续工作。所以,我正在寻找一种方法来使 http.request 或任何请求客户端指定多个主机,并连接到正在工作的主机。如果第一个失败,则切换到列表中的另一台主机。

4

2 回答 2

1

听起来您想在三个主机之间进行负载平衡。那是对的吗?如果是这样,那么这篇文章可能会有所帮助。基本上,这个想法是您将发送到特定主机(虚拟)上的负载均衡器,然后它将代理(循环)到真实服务器(真实)。对于完全冗余,您需要寻找可以集群的负载均衡器。

编辑:我使用HAProxy进行负载平衡,发现它运行良好。它允许您配置绑定到 IP 的虚拟主机。然后从该虚拟 IP 转发到n个真实服务器。

于 2012-08-01T22:48:00.493 回答
0

你可以再做一个,直到有东西起作用:

var hosts = ["first.com", "second.com", "third.com"];
(function loop(i) {
    var host = hosts[i],
        options = {
            host: host,
            port: 80,
            method: 'GET'
        };
    if (host) {
        var req = http.request(options, function(res) {
            if (res.statusCode !== 200) {
                loop(++i)
            } else {
                console.log("request succeeded");
            }
        });
        req.on("error", function() {
            loop(++i);
        });
        req.end();
    } else {
        console.log("ran out of hosts to try");
    }
})(0);
于 2012-08-01T22:34:19.397 回答