2012-08-15 41 views
0

我遇到了兩個相同主機但不同端口之間彈跳的問題。如何在node.js中的兩個相同主機之間加載均衡(彈性)

所以我使用Node.js的模塊bouncy,我有相同的主機(本地主機),但聽不同的端口上的兩個應用程序主機。

我使用的是routes.json

{ "localhost" : 8001, "localhost" : 8000 }

,並指出在命令行有彈性。

但它似乎不適用於兩臺相同的主機?只有主機與端口8000工程...

這個任何解決方案? 提前致謝

+0

也許你能避免衝突的關鍵:'{ 「本地主機」:8001, 「127.0.0.1」:8000}'。如果你的主機需要更多的名字,那麼你可以在'/ etc/hosts'中添加一些新的名字。 – joeytwiddle 2013-07-19 21:37:41

回答

1

我想你誤會了點routes.json:散列中的鍵表示虛擬主機名。

這可能與域名的工作,例如:

{ "dev.xx.com" : 8001, "prod.xx.com" : 8000 } 

基於文件的配置工作,通過檢查req.headers.host決定在哪裏路由流量。

你試圖加載在「localhost」相同的應用程序的平衡兩個實例?在這種情況下,你應該看看內置節點的羣集庫:http://nodejs.org/api/cluster.html

編輯:

兩個羣集和有彈性的,可以用來加載你的平衡請求。如果你使用彈性,你將不得不自己寫一個簡單的循環機制(不能使用routes.json),集羣內置它。

有彈性的(針對特定使用案例)的另一個缺點是有彈性確實沒有監控它反彈請求到服務器。您必須添加邏輯才能檢查兩臺服務器是否響應。同樣,這些都集成到集羣中(它將服務器作爲子進程運行,並可以在發生故障時重新啓動它們)。集羣還可以用於使用新代碼安全地重新啓動子服務器,而不會丟失任何請求。

總而言之:快活是確定的,如果你想使用它作爲一個代理,但集羣負載平衡製成。

+0

是的,這個想法是設置多個節點服務器,所以如果一臺服務器關閉,客戶端仍然可以通過其他服務器訪問。集羣有能力完成這項工作? – nihulus 2012-08-16 07:15:15

+0

和彈性不能做到這一點? – nihulus 2012-08-16 07:24:30

+0

爲您添加了一些說明。 – rdrey 2012-08-16 07:57:30