2011-07-05 115 views
8

我很好奇在node.js中的水平縮放 是否可以跨多個虛擬服務器(如rackspace雲服務器)進行負載平衡? 我讀過關於集羣插件,但我認爲它只適用於具有多核CPU的單個服務器。Node.js支持多個服務器間的多重負載均衡?

+2

nginx的? => http://www.shinstudio.com/blog/backend-tech/setting-up-node-js-in-nginx/ – Alfred

+1

很簡單,在節點中編寫節點負載平衡器代理。 – Raynos

+1

但是實例連接如何,例如多個聊天室如何將用戶路由到特定服務器,如果用戶分佈在服務器中,會發生什麼情況。 – Christian

回答

10

嘗試爲node-http-proxyroundrobin.js

var httpProxy = require('http-proxy'); 
// 
// A simple round-robin load balancing strategy. 
// 
// First, list the servers you want to use in your rotation. 
// 
var addresses = [ 
    { 
    host: 'ws1.0.0.0', 
    port: 80 
    }, 
    { 
    host: 'ws2.0.0.0', 
    port: 80 
    } 
]; 

httpProxy.createServer(function (req, res, proxy) { 
    // 
    // On each request, get the first location from the list... 
    // 
    var target = addresses.shift(); 

    // 
    // ...then proxy to the server whose 'turn' it is... 
    // 
    proxy.proxyRequest(req, res, target); 

    // 
    // ...and then the server you just used becomes the last item in the list. 
    // 
    addresses.push(target); 
}); 

// Rinse; repeat; enjoy. 
+5

此實現是否代理連接或客戶端連接是否切換到發生下一次的服務器?我想知道在使用websockets的情況下,並有一個持久的連接。如果所有連接均通過負載均衡器進行傳輸,那麼您仍然有瓶頸,因爲負載平衡器會飽和連接。 – jlafay

相關問題