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