2011-06-27 22 views
17

मैं अपने ऐप को एकाधिक सर्वरों पर स्केल करने पर काम कर रहा हूं, और एक आवश्यकता यह है कि एक ग्राहक हमेशा एक ही सर्वर से संचार कर रहा है (बहुत अधिक लाइव डेटा का उपयोग बाउंसिंग की अनुमति देने के लिए किया जाता है सर्वर के बीच कुशलतापूर्वक)।लोड संतुलन (हैप्रोक्सी या अन्य) - चिपचिपा सत्र

मेरा वर्तमान सेटअप एक छोटा सर्वर क्लस्टर (लिनोड का उपयोग कर) है। मेरे पास "बैलेंस सोर्स" का उपयोग करके हैप्रोक्सी चल रहा एक फ्रंटेंड नोड है ताकि एक आईपी हमेशा एक ही नोड की ओर इशारा किया जा सके।

मुझे लगता है कि "बैलेंस स्रोत" एक बहुत ही वितरण नहीं है। मेरे वर्तमान परीक्षण सेटअप (2 बैकएंड सर्वर) के साथ, 80-100 स्रोत आईपी के नमूना आकार का उपयोग करते समय एक सर्वर में अक्सर 3-4x कनेक्शन होते हैं।

क्या अधिक संतुलित वितरण प्राप्त करने का कोई तरीका है? जाहिर है चिपचिपा सत्र एक "सही" संतुलन को प्रतिबंधित करता है, लेकिन 40/60 विभाजन को 25/75 विभाजन के लिए प्राथमिकता दी जाएगी।

उत्तर

0

आप एचए-प्रॉक्सी में संतुलित एल्गोरिदम समायोजित कर सकते हैं, हालांकि कुछ उपलब्ध हैं। उदा। राउंडरोबिन या कम से कम कॉनकॉन।

लेकिन आपको उन उपयोगकर्ताओं के डोमेन के अनुसार सामान्य रूप से अपने संतुलन को समायोजित करने की आवश्यकता है जिनके लिए सामग्री परोसा जाता है। अधिकांश बार आपको अनुभवजन्य परीक्षण करने की आवश्यकता होती है और आपके निष्कर्षों के अनुसार अपना निर्णय दोहराया जाता है।

25

हैप्रोक्सी cookie पैरामीटर के साथ सत्र दृढ़ता प्रदान करने के लिए कुकी को संशोधित या डालने का समर्थन करता है। एक कुकी COOKIENAME कहा जाता है के लिए सर्वर का नाम जोड़कर

cookie COOKIENAME prefix 

यह उदाहरण के लिए एक मौजूदा कुकी को संशोधित करेगा:

या तो बैकएंड या वर्गों सुनने में, निम्न जोड़ें। आपका ग्राहक server1~someotherdata जैसा कुछ दिखाई देगा लेकिन आपका एप्लिकेशन केवल someotherdata भाग देखेंगे। तो आप इसे मौजूदा कुकीज़ पर उपयोग कर सकते हैं। इसके अतिरिक्त यह विधि आपको उस कुकी मौजूद होने पर केवल सत्र पर्सिटेंस को लागू करने की अनुमति देती है, जिसका अर्थ है कि आप अभी भी अपनी साइट के स्थिर हिस्सों के आसपास लोगों को समान रूप से संतुलित कर सकते हैं और केवल आवश्यकता होने पर चिपचिपापन लागू कर सकते हैं, लेकिन उस कुकी नाम को सत्र में जोड़ना।

इसके अलावा अपने सर्वर नाम है, तो अपने सर्वर लाइनों ऐसा दिखाई देगा:

server server1 1.2.3.4 cookie server1 

अधिक विस्तार HAProxy config guide में है, यह भी है कि आप के रूप में अच्छी appsession config पैरामीटर का उपयोग कर सकते हैं लग रहा है।

एक बार ऐसा करने के बाद, आप सूची से अपनी खुद की शेष राशि चुन सकते हैं, मैं roundrobin का उपयोग करता हूं लेकिन leastconn चिपचिपा सत्रों को ध्यान में रखकर आपको बेहतर संतुलन दे सकता है।

cookie <name> [ rewrite | insert | prefix ] [ indirect ] [ nocache ] 
       [ postonly ] [ preserve ] [ domain <domain> ]* 
       [ maxidle <idle> ] [ maxlife <life> ] 
    Enable cookie-based persistence in a backend. 
    May be used in sections : defaults | frontend | listen | backend 
           yes | no | yes | yes 
:


प्रलेखन से अधिक यह आसान संदर्भ अनुभाग देखने के लिए बनाने के लिए

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