2012-11-28 15 views
9

Sto provando a codificare un loadbalancing con node.js e http-proxy. Voglio un loadBalancer che condivida il trattamento delle richieste in entrata tra 2 server.Bilanciamento del carico con node.js utilizzando http-proxy

var http = require('http'), 
httpProxy = require('http-proxy'); 

var servers = [{host :'127.0.0.1', port :3000}, {host : 'remote_adr',port :3000}]; 

    httpProxy.createServer(function (req, res, proxy) { 

    var target = servers.shift(); 
    proxy.proxyRequest(req, res, target); 
    servers.push(target); 


    }).listen(8000); 

ho pensato che facendo questo, avrebbe fatto un loadbalancer cui inviare le richieste alternativamente Serv1 e Serv2.

Tuttavia, quando provo, sembra richiedere i 2 server in un ordine particolare. Inoltre, la maggior parte delle richieste viene inviata al mio server nodo localhost (127.0.0.1:3000)

Qualcuno è in grado di spiegare tale comportamento?

risposta

7

Questo dovrebbe essere un round robin come richiesto, tuttavia è un ingenuo round robin. Quello che potresti vedere è che le tue richieste favicon.ico stanno mettendo una quota più alta del normale delle richieste su un singolo server. Per esempio.

Server 1: Actual Requests 
Server 2: favicon.ico 
Server 1: Another Request 
Server 2: favicon.ico 
Server 1: Final Request 
Server 2: favicon.ico 

Quindi, a seconda di come si sta accedendo, apparirà il server 1 è sempre tutte le richieste, ove tecnicamente ogni server è sempre lo stesso numero di richieste. Inoltre, tieni presente che le risorse saranno incluse nel round robin anche se le stai servendo dal nodo. Quindi ogni immagine o richiesta di file verrà passata a un'altra istanza di nodo.

+0

spiegazione impressionante. favicon.ico non viene colpito essere node.js? se sì, come mai la richiesta gestita non viene mostrata? – Amareswar

+1

@Amareswar Non sai cosa intendi per 'favicon.ico non viene colpito da node.js'. Node.js può certamente gestire le richieste favicon, ma se stai semplicemente registrando i percorsi espliciti espressi, ad esempio, potresti non vedere una richiesta favicon.ico nei tuoi log. –

+0

capito. Questo era il mio dubbio. – Amareswar

Problemi correlati