मेरे पास हैप्रोक्सी के तहत चल रहे प्रमाणीकरण के साथ socket.io के कई उदाहरण हैं और मुझे यह बल देने की आवश्यकता है कि प्रमाणीकरण अनुरोध और सॉकेट कनेक्शन एक ही उदाहरण पर जाएं। मैं पर कुछ संशोधनों के रूप में तो साथ this answer to a SO question आधारित HAProxy सेट कर लेते हैं:क्या मेरे पास प्रमाणीकरण के साथ हैप्रोक्सी और सॉकेट.ओ के साथ चिपचिपा सत्र हो सकते हैं?
global
maxconn 4096 # Total Max Connections. This is dependent on ulimit
nbproc 2
defaults
mode http
frontend all 0.0.0.0:80
timeout client 86400000
default_backend www_backend
acl is_websocket hdr(Upgrade) -i WebSocket
acl is_websocket hdr_beg(Host) -i ws
use_backend socket_backend if is_websocket
backend www_backend
balance url_param sessionId
option forwardfor # This sets X-Forwarded-For
timeout server 30000
timeout connect 4000
server server1 localhost:8081 weight 1 maxconn 1024 check
server server2 localhost:8082 weight 1 maxconn 1024 check
server server3 localhost:8083 weight 1 maxconn 1024 check
backend socket_backend
balance url_param sessionId
option forwardfor # This sets X-Forwarded-For
timeout queue 5000
timeout server 86400000
timeout connect 86400000
server server1 localhost:8081 weight 1 maxconn 1024 check
server server2 localhost:8082 weight 1 maxconn 1024 check
server server3 localhost:8083 weight 1 maxconn 1024 check
मैं url_param की कोशिश की है और शेष राशि के रूप में स्रोत (जहाँ sessionId एक क्वेरी स्ट्रिंग पैरामीटर दोनों प्रमाणीकरण कॉल और WebSocket संबंध में पारित कर दिया है) विकल्प लेकिन ऐसा लगता है जैसे हैप्रोक्सी केवल इन विकल्पों को HTTP कनेक्शन के लिए अनुमति देता है और इसलिए उन्हें वास्तविक वेबसाइकिल कनेक्शन के लिए अनदेखा करता है। नतीजा यह है कि कभी-कभी ऑथ अनुरोध और सॉकेट कनेक्शन अलग-अलग सर्वरों में समाप्त होता है, जो हमारे आवेदन के लिए अस्वीकार्य है।
क्या यह वांछित व्यवहार करने का कोई तरीका है?
क्या तुमने कभी का सबसे अच्छा तरीका यह करने के लिए यह पता लगाने क्या है? मैं वही काम करना चाहता था। धन्यवाद। –
मैं आईपी-हैश संतुलन का उपयोग कर समाप्त हुआ। एक ही आईपी से सभी अनुरोध एक ही सर्वर पर जाते हैं – Diego
ओ ठीक है, लेकिन क्या इसका मतलब यह है कि सर्वर ए पर किसी उपयोगकर्ता से प्रसारित किया जा रहा वेबसाइकिल सर्वर बी पर किसी भी उपयोगकर्ता तक नहीं पहुंचता है? –