2012-05-10 19 views
7

हम वर्तमान में रेडिस तक पहुंचने के लिए node_redis क्लाइंट का उपयोग कर रहे हैं। मुझे रेडिस गुलामों के सामने हैप्रोक्सी का उपयोग करने की ज़रूरत है जो मेरे मामले में 3 नंबर है। मैंने हैप्रोक्सी स्थापित की और रेडिस दासों को संतुलित करने के लिए इसे कॉन्फ़िगर किया। लेकिन जब मैं node_redis ग्राहक HAProxy के लिए मैं कनेक्शन बनाने के लिए सक्षम नहीं था से संबंध बनाने की कोशिश की है और एक त्रुटिरेडिस गुलामों के लिए HAproxy

Error: Redis reply parser error: Error: Protocol error, got "H" as reply type byte 
at HiredisReplyParser.execute (/home/user1/doosra/node-exp/node_modules/redis/lib/parser/hiredis.js:32:31) 
at RedisClient.on_data (/home/user1/doosra/node-exp/node_modules/redis/index.js:440:27) 
at Socket.<anonymous> (/home/user1/doosra/node-exp/node_modules/redis/index.js:70:14) 
at Socket.emit (events.js:67:17) 
at TCP.onread (net.js:347:14) 
+1

इस सटीक प्रश्न पर मेलिंग सूची से लिंक करें - https://groups.google.com/d/msg/redis-db/2yELzDSz1y4/hIeFhh7-WIUJ –

उत्तर

19

पोस्ट करना haproxy विन्यास में मदद की है | सबसे हो रही थी ...

संभावित स्पष्टीकरण हैप्रोक्सी जेनेरिक टीसीपी यातायात को संसाधित करने के लिए कॉन्फ़िगर नहीं किया गया है लेकिन HTTP यातायात।

उदाहरण:

निम्नलिखित विन्यास के साथ

:

global 
    daemon 
    maxconn 256 

defaults 
    mode http 
    timeout connect 5000ms 
    timeout client 50000ms 
    timeout server 50000ms 

frontend redis 
    bind *:1521 
    default_backend servers 

backend servers 
    server R1 127.0.0.1:6379 maxconn 1000 

और निम्नलिखित Node.js स्क्रिप्ट:

var redis = require('redis') 
var redis_client = redis.createClient(1521, 'localhost'); 
redis_client.get('key', function(e,o) { 
    console.log("return "+e+o); 
}); 

... हम एक ही सटीक त्रुटि मिलती है:

Error: Redis reply parser error: Error: Protocol error, got "H" as reply type byte 

यह अपेक्षा की जाती है, क्योंकि Redis प्रोटोकॉल पार्सर HTTP को समझ में नहीं आता है। इसे ठीक करने के लिए, बस एक सामान्य टीसीपी मोड लागू करने के लिए haproxy विन्यास में परिवर्तन:

mode http 

to be changed into: 

    mode tcp 

... और अब यह ठीक काम करता है।

संबंधित मुद्दे