जब HAProxy के साथ टीसीपी लोड संतुलन का उपयोग करते हैं, तो क्या एलबी के माध्यम से सभी आउटबाउंड यातायात प्रवाह होता है?


19

मैं VMs (शायद अमेज़न में सेट नहीं है, लेकिन यह पत्थर में सेट नहीं है) का उपयोग करके होस्ट किया जाने वाला एक ऐप स्थापित कर रहा हूं, जिसमें लगातार टीसीपी कनेक्शन की बड़ी संख्या (50k या यदि संभव हो तो) के लिए HTTP लोड संतुलन और लोड दोनों की आवश्यकता होगी। डेटा की मात्रा सभी उच्च नहीं है, लेकिन अपडेट अक्सर होते हैं।

अभी मैं लोड बैलेन्स का मूल्यांकन कर रहा हूं और HAProxy की वास्तुकला के बारे में थोड़ा भ्रमित हूं। अगर मैं टीसीपी कनेक्शन को संतुलित करने के लिए HAProxy का उपयोग करता हूं, तो क्या सभी परिणामी ट्रैफ़िक को लोड बैलेंसर से प्रवाहित करना होगा? यदि हां, तो क्या एक और समाधान (जैसे LVS या यहां तक ​​कि nginx_tcp_proxy_module) एक बेहतर फिट होगा?

जवाबों:


33

HAProxy (कई लोड बैलेंसरों की तरह) आम तौर पर दो वार्तालाप बनाए रखते हैं। क्लाइंट के साथ प्रॉक्सी का एक सत्र (इस मामले में tcp) होता है, और सर्वर के साथ एक और सत्र होता है। इसलिए समीपता के साथ आप 2x को लोड बैलेंसर पर कनेक्शन देखकर समाप्त करते हैं। इसलिए सारा ट्रैफिक लोड बैलेंसर से होकर बहता है।

जब यह कई लोड बैलेंसरों में स्केलिंग की बात आती है तो मुझे नहीं लगता कि आपको इसकी आवश्यकता है। लेकिन ऐसा करने का एक व्यावहारिक और काफी आसान तरीका है, दो फ्लोटिंग आईपी के साथ रखने और उन दो आईपी के बीच राउंड रॉबिन डीएनएस का उपयोग करना । रखने के साथ, अगर एक लोड बैलेंसर दूसरे के पास जाता है, तो दोनों IP पकड़ सकते हैं, इसलिए आपको इस तरह से उच्च उपलब्धता मिलती है। कहा जा रहा है, मुझे लगता है कि आप अपने लोड के साथ एक सक्रिय हाइप्रोक्स उदाहरण के साथ ठीक हो जाएंगे।

HAProxy तराजू बहुत अच्छी तरह से। एक उदाहरण, स्टैक एक्सचेंज नेटवर्क वेब सॉकेट का उपयोग करता है जो खुले टीसीपी कनेक्शन बनाए रखता है। जब मैं इसे पोस्ट कर रहा हूं तो हमारे पास VMware वर्चुअल मशीन पर 143,000 स्थापित टीसीपी सॉकेट्स हैं जिनमें कोई समस्या नहीं है। VM पर CPU का उपयोग लगभग 7% है।

HAProxy के साथ इस तरह के सेटअप के साथ सुनिश्चित करें कि आपने maxconnपर्याप्त उच्च सेट किया है। यहाँ कुछ उदाहरण है HAProxy config आरंभ करने के लिए:

frontend fe_websockets
        bind 123.123.123.123:80
        mode tcp
        log global
        option tcplog
        timeout client 3600s
        backlog 4096
        maxconn 50000
        default_backend be_nywebsockets

backend be_nywebsockets
        mode  tcp
        option log-health-checks
        option redispatch
        option tcplog
        balance roundrobin
        server web1 10.0.0.1:1234
        server web2 10.0.0.2:1234
        timeout connect 1s
        timeout queue 5s
        timeout server 3600s

कि 143,000 - अभी भी वेब-सॉकेट्स के बारे में बात कर रहा है? या कि अन्य चीजें भी हैं?
मार्क ग्रेवेल

@MarcGravell: वस्तुतः सभी वेब सॉकेट। ध्यान रखें कि यह 2x है, जैसा कि मैंने अपने परिचय में कहा था, इसलिए वेब सॉकेट सर्वरों को कुल ~ 70k
काइल ब्रांट

@ काइल - किसी भी कारण से आपको वेब सॉकेट और लगातार टीसीपी कनेक्शन की आवश्यकता है? इस वेबसाइट में ऐसी कोई वास्तविक समय सुविधाएँ नहीं हैं जिनकी आवश्यकता होती है।
कंटीन्यू

@ समापन: इनबॉक्स सूचनाओं, वोटों, संपादन, नई टिप्पणियों / उत्तरों / प्रश्नों सहित वास्तविक समय सुविधाओं की एक अच्छी मात्रा है। यकीन नहीं होता कि वे केवल एक निश्चित प्रतिनिधि सीमा के साथ उपयोगकर्ताओं के लिए सक्षम हैं, यदि आप उन्हें नहीं देखते हैं तो आप meta.stackoverflow.com पर पूछताछ कर सकते हैं
काइल

1
@KyleBrandt टीसीपी-मोड में भी काम करता है?
19

2

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

सही उपकरण चुनने के लिए, मुझे अन्य विकल्पों के बारे में ज्यादा अनुभव नहीं है। मैं haproxy का उपयोग कर रहा हूं और यह वास्तव में अच्छा और स्थिर है और बड़ी मात्रा में यातायात को संभाल सकता है। इसके अलावा, इसकी ACL की क्षमताएं बहुत अच्छी हैं।


2

डीएसआर (डायरेक्ट सर्वर रिटर्न) का उपयोग करने और कॉन्फ़िगर करने की संभावना है, लेकिन इसका लोडबेलेंसर के साथ कोई लेना-देना नहीं है, लेकिन टीसीपी-स्टैक (रूटिंग टेबल) में कॉन्फ़िगर किया गया है। हम इसका इस्तेमाल एक बड़े वीडियो स्ट्रीमिंग पोर्टल के लिए कर रहे हैं। हालांकि यह काम करता है यह आपको आवश्यक रूटिंग की जटिलता के बारे में महत्वपूर्ण मात्रा में सिरदर्द देगा।

इस प्रकार मैं बहुत अच्छी तरह से उपयोग और कमियों पर विचार किए बिना इस तकनीक का उपयोग करने की अनुशंसा नहीं करूंगा।

शायद वहाँ शुरू करने के लिए कुछ संकेत हैं:

मज़े करो!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.