2012-11-28 6 views
9

का उपयोग करके node.js के साथ लोड संतुलन लोड करना मैं node.js और http-proxy के साथ लोड लोडिंग कोड को कोड करने का प्रयास कर रहा हूं। मुझे एक लोड बैलेंसर चाहिए जो 2 सर्वरों के बीच आने वाले अनुरोध उपचार को साझा करता है।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); 

मैंने सोचा कि ऐसा करने से, यह एक लोड बैलेंसरर होगा जो serv1 और serv2 के लिए वैकल्पिक रूप से अनुरोध भेजता है।

हालांकि, जब मैं इसे आज़माता हूं, तो ऐसा लगता है कि 2 सर्वर किसी विशेष क्रम में अनुरोध नहीं करते हैं। इसके अलावा अधिकांश अनुरोध मेरे लोकहोस्ट नोड सर्वर (127.0.0.1:3000)

पर भेजे गए हैं क्या कोई उस व्यवहार को समझाने में सक्षम है?

उत्तर

7

जैसा कि आपने अनुरोध किया था, राउंड रॉबिन करना चाहिए, हालांकि यह एक बहुत ही मूर्ख राउंड रॉबिन है। आप जो देख रहे हैं वह यह है कि आपके favicon.ico अनुरोध एक सर्वर पर अनुरोधों के सामान्य शेयर से अधिक डाल रहे हैं। उदाहरण के लिए।

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

तो आप कैसे प्रवेश कर रहे हैं पर निर्भर करता है, यह दिखाई देगा कि सर्वर 1 के सभी अनुरोधों हो रही है, जब तकनीकी रूप से प्रत्येक सर्वर अनुरोधों की संख्या समान हो रही है। यह भी ध्यान रखें कि आपकी संपत्ति राउंड रॉबिन में भी शामिल की जाएगी यदि आप उन्हें नोड से सेवा दे रहे हैं। तो प्रत्येक छवि या फ़ाइल अनुरोध को एक अलग नोड उदाहरण के लिए भी सौंप दिया जाएगा।

+0

भयानक स्पष्टीकरण। favicon.ico हिट नहीं है node.js? यदि हां, तो अनुरोध किए गए अनुरोध को कैसे दिखाया नहीं गया है? – Amareswar

+1

@ अमेरेसवार यह सुनिश्चित नहीं है कि 'favicon.ico' से आपका क्या मतलब है node.js द्वारा हिट नहीं किया गया है। Node.js निश्चित रूप से फेविकॉन अनुरोधों को संभाल सकता है, लेकिन यदि आप उदाहरण के लिए एक्सप्रेस में स्पष्ट मार्गों को लॉग कर रहे हैं, तो हो सकता है कि आप अपने लॉग में एक favicon.ico अनुरोध दिखाई न दें। –

+0

इसे मिला। यह मेरा शक था। – Amareswar