2012-08-01 31 views
0

最初的http.request只能連接到一臺主機。有其他方式或其他方法可以指定多個主機來創建一個http遠程請求客戶端嗎?http.request可以連接到多個主機(node.js)嗎?

背後的原因是,我連接的遠程服務有三個冗餘主機,如果其中一個出現故障,其他人將繼續工作。所以,我正在尋找一種方法來使http.request或任何請求客戶端指定多個主機,並連接到正在工作的那個。如果第一個失敗,則切換到列表中的另一個主機。

回答

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); 
+0

:)似乎我必須做我自己的代碼。 :) – murvinlai 2012-08-01 23:24:54

1

這聽起來像你希望跨三臺主機負載平衡。那是對的嗎?如果是這樣,那麼this post可能會有所幫助。基本上,這個想法是,你將發送到特定主機(虛擬)的負載均衡器,然後它將代理(循環)到真實服務器(真實)。對於完全冗餘,您需要尋找一個可以集羣的負載均衡器。

編輯: 我已經使用HAProxy進行負載平衡,並發現它運行良好。它允許您配置綁定到IP的虛擬主機。然後從該虛擬IP轉發到n真實服務器的數量。

+0

絕對正確。好。然後我看看你的帖子。 :) 謝謝。 – murvinlai 2012-08-01 23:24:33

相關問題