मैं अपाचे सर्वरों के बीच आने वाले वेब ट्रैफ़िक को कैसे संतुलित कर सकता हूं?


12

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

मैंने जो कुछ किया है, उसे स्पष्ट करने के लिए मैंने कुछ तैयार किया है। हरा पक्ष वह है जो प्रारंभिक सेटअप जैसा दिखेगा और नीला पक्ष वह है जो यातायात वृद्धि के कारण अधिक अपाचे उदाहरणों को जोड़ने के बाद लग सकता है। यह नहीं हो सकता है कि ये चीजें कैसे काम करती हैं, लेकिन आदर्श रूप से मैं डोमेन के DNS में बैलेंसर / एस का आईपी जोड़ूंगा। फिर बैलेंसर / एस यह देखता है कि प्रत्येक अपाचे उदाहरण पर कितने कनेक्शन हैं (आंतरिक आईपी या अनन्त आईपी के कुछ कॉन्फिगर सूची के माध्यम से) और समान रूप से कनेक्शन वितरित करता है। नीले रंग में एक दूसरा बैलेंसर है क्योंकि मुझे यकीन है कि किसी समय बैलेंसर को भी मदद की ज़रूरत होगी।

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

कोई भी मदद बहुत अच्छी रहेगी। वैकल्पिक शब्द


1
मुझे क्षमा करें लेकिन आपने अपने चित्र के लिए किस कार्यक्रम का उपयोग किया?
प्रिक्स

1
@Prix - विडियो की तरह दिखता है ( office.microsoft.com/en-us/visio )
malonso

जवाबों:


4

बस किसी भी "रिवर्स प्रॉक्सी" के बारे में आप क्या पूछेंगे।

उदाहरण के लिए वार्निश, पाउंड और हैप्रेसी सभी अच्छे हैं जो वे करते हैं, लेकिन उनके पास अपने मतभेद भी हैं - हालांकि, आप जो पूछ रहे हैं, उनमें से कोई भी करेगा। व्यक्तिगत रूप से, मुझे लगता है कि आप HAProxy के साथ सबसे अच्छा होगा, लेकिन यह सिर्फ एक अनुमान है।

आपको लोड बैलेंसरों के बारे में एक लेख पढ़ने में सबसे अच्छा हो सकता है ताकि आपको यह तय करने में मदद मिल सके कि आपको किस तरह की जरूरत है: http://1wt.eu/articles/2006_lb/

इसके अलावा, आप इसके लिए एक पूर्व-निर्मित सेवा का उपयोग करने पर विचार कर सकते हैं - जैसे कि अमेज़ॅन के इलास्टिक कम्प्यूट क्लाउड पर अपना सॉफ़्टवेयर चलाना और उनके इलास्टिक लोड बैलेंसिंग का उपयोग करना।


2

सबसे पहले, एक महत्वपूर्ण सवाल है जिसका उत्तर दिया जाना चाहिए:
क्या आपको लोड-बैलेंसर (ओं) द्वारा उपयोगकर्ता सत्रों को संभालने की जरूरत है और हमेशा एक ही वेब सर्वर पर (यदि जीवित है) संचालित किया जाए?

  • सत्र की आवश्यकता नहीं है : इस मामले में, आपको लोड बैलेंसर के रूप में कुशल नगनेक्स प्रोग्राम का उपयोग करना चाहिए । कॉन्फ़िगरेशन सेट करना आसान है, जहां आपको मूल रूप से केवल एक upstream upstream_name { server1, ..., serverN }बयान में वेब सर्वर की सूची को इंगित करना होगा , फिर, किसी दिए गए डोमेन के लिए, आपको एक सरल proxy_pass upstream_nameनिर्देश की आवश्यकता है ।
    देखें नग्नेक्स विकी

  • सत्र की आवश्यकता पाउंड के लिए एक समान सेटिंग है जहां आप कुकी के नाम को इंगित करते हैं जो सत्र आईडी ( ) की मेजबानी करेगा ID MYCOOKIENAME, फिर BACKENDआपके सभी सर्वरों की एक सूची ।
    उदाहरण के लिए देखें पाउंड सेटअप छूट

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


1

अतिरिक्त जटिलता और अपनी वास्तुकला में विफलता का एक बिंदु पेश करने के लिए आपको एक बहुत अच्छे कारण की आवश्यकता होनी चाहिए।

राउंड-रॉबिन लोड संतुलन

  • कुछ भी नहीं
  • लागू करने और प्रबंधित करने के लिए सरल है
  • क्लाइंट में विफलताएं लागू होती हैं - एकमात्र स्थान जिसे विफलता का पता लगाया जा सकता है
  • स्पष्ट रूप से सर्वर-आत्मीयता का समर्थन करता है, लेकिन फिर भी स्टिकी सत्रों से जुड़े सत्र प्रबंधन की समस्याओं के बिना विफलता की अनुमति देता है
  • क्लस्टर नोड्स पर कोई अतिरिक्त सॉफ़्टवेयर / हार्डवेयर / कॉन्फ़िगरेशन की आवश्यकता नहीं है

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

केवल एक ही बिंदु मैं स्वीकार करूँगा कि है

  1. IPV4 पते दुर्लभ और इसलिए महंगे हो रहे हैं - लेकिन फिर भी बहुत कुछ। सिस्को सीएसएस कहने की तुलना में बहुत सस्ता है।

  2. वेब-सेवाओं पर इंटरनेट बढ़ रहा है - और सभी डेवलपर्स ऐनक के अनुसार DNS समर्थन को लागू नहीं करते हैं । लेकिन मेरे द्वारा उपयोग किए गए प्रत्येक ब्राउज़र को उसी तरह काम करना चाहिए जैसा कि उसे करना चाहिए


"कोई अतिरिक्त सॉफ़्टवेयर की आवश्यकता नहीं है" - ठीक है, इसके लिए आवश्यक है कि वेबएप ने सत्र की स्थिति साझा की हो (लॉगिन, खरीदारी की टोकरी में क्या है, आदि)। और DNS RR में लंबे समय के लिए असमान भार संतुलन हो सकता है। हाँ, DNS RR एक व्यवहार्य विधि है, लेकिन यह शायद ही विकल्पों में से बेहतर है ...
जेसपर एम


0

बेलेंसर्स के लिए आप http://www.linuxvirtualserverver.org/ पर LVS में देख सकते हैं , शायद ट्रैफ़िक को डायरेक्ट करने और फ़ेलओवर करने के लिए लैक्मेर्ड और हार्टबीट चला रहे हों।


0

Nginx एक अपस्ट्रीम प्रॉक्सी के रूप में कमाल है, मैंने इसे 1M + uniques दैनिक करने वाले कॉन्फ़िगरेशन में बड़ी सफलता के साथ उपयोग किया है


0

ठीक है, यह कुछ समय पहले पूछा गया था, और मुझे पार्टी के लिए देर हो रही है। फिर भी, यहां कुछ जोड़ना है।

जैकी, आपने इसे बहुत पसंद किया है। आपका चित्रण दिखाता है कि कैसे लोड संतुलन को सबसे छोटे और midsized प्रतिष्ठानों पर संभाला जाता है।

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

आपको यह विचार करने की आवश्यकता है कि ये आपकी आवश्यकताओं के अनुसार कैसे फिट होते हैं:

  • टीसीपी / आईपी स्तर लोड बैलेंसर्स (लिनक्स वर्चुअल सर्वर एट अल)। उच्चतम कनेक्शन प्रति सबसे कम गति, उच्चतम गति, "HTTP" नहीं देख सकता है।
  • HTTP स्तर लोड बैलेन्सर (HAProxy, nginx, Apache 2.2, Pound, Microsoft ARR, और अधिक)। उच्च ओवरहेड, HTTP देख सकता है, HTTP को gzip कर सकता है, SSL कर सकता है, चिपचिपा सत्र लोड बैलेंसिंग कर सकता है।
  • HTTP रिवर्स प्रॉक्सीज़ (Apache ट्रैफिक सर्वर, वार्निश, स्क्विड)। कैश-सक्षम ऑब्जेक्ट्स (कुछ वेबपेज, सीएसएस, जेएस, इमेज) को रैम में स्टोर कर सकते हैं और बैकएंड वेबसर्वर को शामिल किए बिना उन्हें बाद के क्लाइंट के लिए अग्रेषित कर सकते हैं। अक्सर वही कुछ काम कर सकते हैं जो L7 HTTP लोड बैलेंसर्स करते हैं।

एक दूसरा बैलेन्सर है क्योंकि मुझे यकीन है कि कुछ समय पर बैलेन्सर को भी मदद की आवश्यकता होगी।

तो यह बात पक्की। लेकिन लोड संतुलन सरल है, और अक्सर एक एकल लोड बैलेंसर तेजी से जा सकता है । मैं इस लेख से जुड़ता हूं, जो वेब में एक तंत्रिका को मारा करता है, जो एक उदाहरण के रूप में एक एकल आधुनिक सर्वर ballpark क्या प्रदर्शन प्रदान कर सकता है। इससे पहले कि आप की जरूरत है कई एलबी का उपयोग न करें। जब आपको एक सामान्य दृष्टिकोण की आवश्यकता होती है तो बहुत ही फ्रंट (या DNS राउंड रॉबिन) पर आईपी लेवल लोड बैलेन्सर होते हैं, जो HTTP लेवल लोड बैलेन्कर्स में जा रहे हैं, प्रॉक्सी और वेबैप सर्वर पर जा रहे हैं।

"बैलेंसर / एस" क्या होना चाहिए और उन्हें कैसे सेट किया जाए, इस पर सर्वोत्तम अभ्यास करने में मदद करें।

मुसीबत की स्थिति सत्र राज्य से निपटने और कुछ हद तक विफलता राज्य व्यवहार है। लोड बैलेंसर्स की स्थापना स्वयं तुलनात्मक रूप से सीधी है।

यदि आप 2-4 बैकएंड वेबएप सर्वर का उपयोग कर रहे हैं, तो मूल आईपी पते के आधार पर स्थिर हैशिंग व्यवहार्य हो सकता है। यह वेब सर्वर के बीच साझा सत्र स्थिति की आवश्यकता से बचा जाता है। प्रत्येक वेबएप नोड कुल ट्रैफ़िक का 1 / N देखता है, और ग्राहक-से-सर्वर मैपिंग सामान्य ऑपरेशन में स्थिर है। हालांकि यह बड़े इंस्टॉलेशन के लिए अच्छा नहीं है।

दो सबसे अच्छा लोड संतुलन एल्गोरिदम, भावना वे उच्च लोड और यहां तक कि लोड वितरण के तहत सौम्य व्यवहार है, में राउंड रोबिन और सच्चे यादृच्छिक लोड संतुलन कर रहे हैं। इन दोनों के लिए आवश्यक है कि आपके वेब एप्लिकेशन में वेबएप नोड्स पर वैश्विक सत्र स्थिति उपलब्ध हो। यह कैसे किया जाता है यह वेबएप्प टेक स्टैक पर निर्भर करता है; लेकिन आम तौर पर इसके लिए मानक समाधान उपलब्ध हैं।

यदि न तो स्थिर हैशिंग, और न ही साझा सत्र राज्य आपके लिए एक अच्छा फिट हैं, तो विकल्प आम तौर पर ' चिपचिपा सत्र ' लोड संतुलन और प्रति-सर्वर सत्र स्थिति है। ज्यादातर मामलों में यह ठीक काम करता है, और यह पूरी तरह से व्यवहार्य विकल्प है।

बैलेंसर / देखें कि प्रत्येक अपाचे उदाहरण पर कितने कनेक्शन हैं (आंतरिक आईपी या अनन्त आईपी के कुछ विन्यास सूची के माध्यम से) और समान रूप से कनेक्शन वितरित करता है

हाँ, कुछ साइटें इसका उपयोग करती हैं। कई अलग-अलग लोड संतुलन एल्गोरिदम के लिए कई नाम हैं जो मौजूद हैं। यदि आप राउंड रॉबिन या रैंडम (या वेटेड राउंड रॉबिन, वेटेड रैंडम) चुन सकते हैं, तो मैं आपको ऊपर दिए गए कारणों से ऐसा करने की सलाह दूंगा।

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

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