0

元々、http.requestは1つのホストにしか接続できません。httpリモートリクエストクライアントを作成するために複数のホストを指定できる他の方法または他の方法はありますか?

その背後にある理由は、私が接続しているリモートサービスには3つの冗長ホストがあり、1つがダウンしても、他は機能し続けるためです。そのため、http.requestまたは任意のリクエストクライアントで複数のホストを指定し、機能しているホストに接続する方法を探しています。そして、最初のホストが失敗した場合は、リスト内の別のホストに切り替えます。

4

2 に答える 2

1

3 つのホスト間で負荷を分散したいようです。あれは正しいですか?もしそうなら、この投稿が役立つかもしれません。基本的には、特定のホスト (仮想) でロード バランサーに送信してから、実サーバー (実) にプロキシ (ラウンド ロビン) するという考え方です。完全な冗長性を得るには、クラスター化できるロード バランサーを探す必要があります。

編集:負荷分散に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 に答える