क्या मेरे एप्लिकेशन सर्वर पर ट्रैफ़िक को पुनर्निर्देशित करने के लिए कई लोड बैलेन्सर का उपयोग करना संभव है?


9

मैं बैलेंसिंग लोड करने के लिए नया हूं और मुझे आश्चर्य हो रहा है कि क्या मेरे एप्लिकेशन सर्वर पर ट्रैफ़िक को रीडायरेक्ट करने के लिए कई लोड बैलेंसरों का उपयोग करना संभव है। मैं वास्तव में यह कैसे किया जा सकता है समझ में नहीं आता। क्या एक डोमेन नाम एक निश्चित सर्वर के आईपी पते के साथ एक से मेल नहीं खाता (इस मामले में एक लोड बैलेंसर का आईपी)? यदि प्रत्येक लोड बैलेंसिंग सर्वर में एक अलग आईपी है, तो दोनों लोड बैलेंसरों (या 10 लोड बैलेंसरों या 50 या 100) द्वारा अनुरोध कैसे प्राप्त किया जा सकता है?


आपकी प्रतिक्रिया के लिए धन्यवाद। मूल रूप से, अगर मैं अपने ट्रैफ़िक को संभालने के लिए कई लोड बैलेन्सर का उपयोग करना चाहता हूँ तो मुझे उनमें से हर एक के लिए एक अलग CNAME सेटअप करना होगा? विशेष रूप से, अगर मुझे अपनी साइट पर ट्रैफ़िक को संभालने के लिए 10 लोड बैलेंसरों की आवश्यकता है, तो ऐसा करने का एकमात्र तरीका है?
user3790827

1
मैं उन्हें बंद करने से पहले कम से कम एक दिन के लिए प्रश्नों को खुला छोड़ने की सलाह देता हूं। यहां तक ​​कि आमतौर पर जल्दबाजी की जा रही है। सिर्फ इसलिए कि आपको एक उत्तर मिला है इसका मतलब यह नहीं है कि यह केवल (या सर्वोत्तम) एक है, और आपके प्रश्नोत्तर का उत्तर देने का मतलब है कि इसका ध्यान कम है।
एंड्रयू बी

1
@ अनाटोली मैंने अभी तक कोई निर्णय नहीं लिया। मैंने यहां प्रस्तुत समाधानों की समीक्षा की है और अपने कुछ दोस्तों के साथ भी बात की है जिन्होंने मुझे अन्य समाधान सुझाए हैं। मुझे लगता है कि मेरे उपयोग के मामले के लिए अब तक का सबसे अच्छा समाधान VPS सर्वर का उपयोग करना होगा जैसे कि डीओ या वल्चर जैसे सस्ते प्रदाता से, जो वर्चुअल आईपी की पेशकश नहीं करता है और क्लाइंट लोड बैलेंसिंग के साथ अल्गोलिया द्वारा उपयोग की जाने वाली विधि का उपयोग करता है। मुझे एपीआई के लिए हा और स्केलेबिलिटी की जरूरत है इसलिए अगर मैं प्रत्येक लोड बैलेंसर के लिए अलग-अलग सबडोमेन बनाए तो इतना बड़ा सौदा नहीं होगा। विजेट के ये अंतिम उपयोगकर्ता वैसे भी उन्हें कभी नोटिस नहीं करेंगे।
user3790827

@ user3790827 एक योजना की तरह लगता है। हा और फेलओवर होने की आवश्यकताओं के प्रकार के बावजूद, चारों ओर बहुत अधिक पैटर्न हैं, हर कोई एक ही समस्या को मारता है, लेकिन किसी को भी SLA 99.9 (वर्ष में 8 घंटे डाउनटाइम) या उच्चतर नहीं है। हा समाधान आमतौर पर उपलब्धता और लागत के बीच महंगे और व्यापारिक व्यापार बंद हैं। ग्राहक आमतौर पर 99.9 स्वीकार करते हैं और संभावित डाउनटाइम या अनुसूचित समय-सीमा के बारे में जानते हैं, यहां तक ​​कि 100% अपटाइम आपको विकास / तैनाती / सुरक्षा या मानव गलतियों के साथ शून्य कीड़े की गारंटी नहीं देता है।
अनातोली

मैंने जांच की कि Google Chrome ने DNS अमान्यकरण और क्वेरी को 3sec टाइमआउट के मामले में होने के लिए बाध्य किया है। हालांकि अन्य ब्राउज़रों के व्यवहार पर यकीन नहीं है।
अनातोली

जवाबों:


12

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

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

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

बेशक आपके बुनियादी ढांचे को इसका समर्थन करना चाहिए और ट्रैफ़िक भेजे जाने के कारण ओवरहेड है, लेकिन छोड़ दिया गया है।
अधिक जानकारी, उदाहरण के लिए यहां: http://community.brocade.com/t5/SteelApp-Docs/Feature-Brief-Deep-dive-on-Multi-Hosted-IP-addresses-in-Srayray/ta-p/73867


जब आप कहते हैं "बेशक आपके बुनियादी ढांचे को इसका समर्थन करना चाहिए" तो आपका मतलब है कि मुझे एक अतिरिक्त मशीन या वीएम की आवश्यकता है जो लोड बैलेंसरों के लिए अनुरोध भेजेगा?
user3790827

2
@ user3790827 इस संदर्भ में इन्फ्रास्ट्रक्चर नेटवर्क उपकरण है, सर्वर नहीं। '
जेनी डी

1
मैं एक क्लाउड प्रदाता का उपयोग करने की योजना बना रहा हूं इसलिए भौतिक बुनियादी ढांचे पर मेरा सीधा नियंत्रण नहीं है। मुझे अपने vps सेवा प्रदाता से क्या पूछना चाहिए?
user3790827

1
केवल सार सिफारिशें हैं क्योंकि यह विवरण के एक टन पर निर्भर करता है। हमें यह भी पता नहीं है कि क्या यह समझ में आता है कि यहाँ एक मल्टी होस्टेड आईपी है - शायद उसका ट्रैफिक केवल कुछ सौ Mbit / s है। यदि आपको इसकी आवश्यकता है, तो मैं उचित सॉफ्टवेयर का मूल्यांकन करूंगा, आवश्यकताओं की जांच करूंगा और यह पता लगाऊंगा कि कौन सा प्रदाता इसका समर्थन करता है। DNS आरआर काम करेगा? ज़रूर। क्या मैं इसका उपयोग करूंगा? इस बात पर निर्भर करता है कि मैं जिस व्यवसाय के लिए काम कर रहा हूं उसके मालिक की उपलब्धता किस तरह की है!
फेकन

@faker मुझे खेद है, मुझे लगता है कि यह मेरी गलती है क्योंकि मैंने पर्याप्त विवरण नहीं दिया है। मैं एक जावास्क्रिप्ट स्क्रिप्ट बनाना चाहता हूं जो अन्य लोगों की वेबसाइटों में डाली जाएगी और ट्रैफ़िक डेटा एकत्र करेगा (Google Analytics के बारे में सोचें), यह उस सर्वर पर भी पहुंच जाएगा जो उस पृष्ठ पर लोड किए गए प्रत्येक पृष्ठ के लिए आंकड़े प्रदर्शित करेगा। मूल रूप से एक जावास्क्रिप्ट फ़ाइल होगी जो उस प्रत्येक वेबसाइट के लिए लोड की जाएगी जिस पर इसका उपयोग किया गया है।
user3790827

6

लोड बैलेंसरों के साथ उच्च उपलब्धता आमतौर पर एक आभासी आईपी पते (वीआईपी) प्रोटोकॉल का उपयोग करके कार्यान्वित की जाती है जो कई होस्ट (यानी लोड बैलेंसर) को कई संभावित तरीकों में से एक में एक सामान्य आईपी पते का जवाब देने की अनुमति देता है (सक्रिय / निष्क्रिय, सक्रिय / सक्रिय पर विविधताएं) ।

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

इस रणनीति के DNS लोड संतुलन पर कई लाभ हैं जो एक सरल रणनीति है (और जो दूसरे उत्तर में ध्यान रखा जाता है)।

उदाहरण के लिए DNS लोड संतुलन पर बोझ है:

  • डीएनएस कैशिंग तंत्र का धीमा कारोबार
  • सीमित लोड संतुलन एल्गोरिदम (आमतौर पर सिर्फ राउंड-रॉबिन)
  • ग्राहक को लोड संतुलन निर्णय की आउटसोर्सिंग (डीएनएस रिकॉर्ड के कैशिंग के माध्यम से)
  • (DNS रिकॉर्ड TTLs के आधार पर सेवा कतारों की धीमी गति से नाली जब एक सर्वर (यानी एक लोड संतुलन) रोटेशन से बाहर ले जाया जाता है के रूप में इंटरनेट सेवा प्रदाताओं और ग्राहकों द्वारा नियंत्रित )
  • लोड बैलेंसर विफलता पर धीमी विफलता

HA के लिए एक वर्चुअल आईपी प्रोटोकॉल का उपयोग करने के लिए उदाहरण के लिए एक विकल्प हो सकता है:

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

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


1
मैं यह भी जोड़ूंगा कि कुछ लोड बैलेंसर पास के राउटर के साथ बीजीपी सत्रों की स्थापना का समर्थन करते हैं, जो आपको एनीकास्ट समाधान स्थापित करने की अनुमति देता है । यदि लोड बैलेंसर नीचे चला जाता है या अन्यथा VIP (विफल स्वास्थ्य जांच) के लिए विज्ञापन बंद कर देता है, तो अगला सबसे अच्छा रूटिंग उम्मीदवार जीत जाता है। इस उत्तर का अंतिम वाक्य हालांकि जरूरी है: आपको वास्तव में अपनी कंपनी के नेटवर्क व्यवस्थापक से बात करने की आवश्यकता है।
एंड्रयू बी


2

आवश्यकताओं: एक व्यावहारिक समाधान है जो क्लाउड या किसी भी प्रकार के वातावरण के लिए काम करता है जहां हार्डवेयर लोड बैलेन्सर, बीजीपी प्रोटोकॉल और उस सभी सामान तक कोई पहुंच नहीं है।

एक आवेदन की आय अनुरोध संख्या अज्ञात है, लेकिन बिना किसी भय के बढ़े हुए लोड की अपेक्षा को पूरा करने के लिए पर्याप्त होना चाहिए।

आइए लोड के समान प्रकृति के साथ एक एप्लिकेशन ढूंढें, उदाहरण के लिए लॉगिंग स्टोर और खोज ऐप। मैंने एक पाया ।

वो क्या चाहते हैं:

  1. कलेक्टरों में लोड को संतुलित करें
  2. दोष सहिष्णुता की पेशकश करें, अगर कलेक्टरों में से एक की मृत्यु हो रही है या समस्याओं का सामना कर रहा है, तो हमें डेटा अंतर्ग्रहण जारी रखने की अनुमति देगा
  3. हमारे लॉग वॉल्यूम में वृद्धि के साथ क्षैतिज रूप से स्केल करें

उन्होंने ELB के बारे में क्या कोशिश की और सीखा:

  1. अपेक्षा के अनुरूप काम नहीं करता है
  2. भार बढ़ने के कारण विलंबता समस्या
  3. पर्याप्त निगरानी की सुविधा नहीं
  4. बहुत अधिक सीमा (खुले बंदरगाह और प्रोटोकॉल संख्या)

उन्होंने रूट 53 के साथ क्यों चुना:

  1. "राउंड रॉबिन काफी बुनियादी भार संतुलन है, लेकिन यह हमारे लिए एक दक्षता के दृष्टिकोण से अच्छा काम करता है"
  2. "हम रूट 53 विफलता स्वास्थ्य जांच का लाभ उठाते हैं।"
  3. "अगर कोई कलेक्टर के साथ कोई समस्या है, तो रूट 53 स्वचालित रूप से इसे सेवा से बाहर कर देता है; हमारे ग्राहकों को कोई प्रभाव नहीं दिखेगा।"
  4. रूट 53 के साथ कोई पूर्व-वार्मअप आवश्यक नहीं है

रूट 53 ने हमारे उच्च प्रदर्शन वाले संग्राहकों को हमारे विशाल लॉग वॉल्यूम, अप्रत्याशित बदलाव और हमारे व्यवसाय में निरंतर वृद्धि को देखते हुए लॉगजी के लिए सबसे अच्छा तरीका बताया। यह कलेक्टरों के मुख्य उद्देश्यों के साथ संरेखित करता है: शून्य हानि के साथ नेटवर्क लाइन गति पर डेटा एकत्र करने के लिए, और यह हमें लॉग इन करने वाले सभी एडब्ल्यूएस सेवाओं के लोच से लाभ उठाने की अनुमति देता है।

उस विशेष उदाहरण से पता चलता है कि कुछ परिदृश्यों में (लॉग कलेक्टर, विज्ञापन सेवा या समान) लोड बैलेंसर निरर्थक है और "DNS स्वास्थ्य-चेक ​​राउंड रॉबिन समाधान" अपना काम बहुत अच्छी तरह से करता है।


आइए देखते हैं कि AWS ने डीएनएस फेलओवर को क्या कहा :

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

यह तकनीक ईएलबी (जरूरी नहीं है, सिर्फ एक नोट के लिए) को और अधिक मजबूत बनाती है, फिर से यह आरआर + हेल्थ चेक के साथ आधारित है:

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


आइए अब देखें कि यह दृश्य के पीछे कैसे काम करता है । स्पष्ट सवाल यह है कि DNS कैशिंग से कैसे निपटें:

हालाँकि, DNS कैशिंग अभी भी यहां एक समस्या हो सकती है (हमारी पिछली पोस्ट (जहां "लंबी पूंछ" समस्या को कवर किया गया है) देखें यदि TTL आपके क्लाइंट और रूट 53 के बीच सभी परतों से सम्मानित नहीं है। आप तब "कैश बस्ट" तकनीक लागू कर सकते हैं: एक अद्वितीय डोमेन के लिए एक अनुरोध भेजें

("http://<unique-id>.<your-domain>") 

और वाइल्डकार्ड संसाधन परिभाषित करें

Record "*.<your-domain>" to match it.

अल्गोलिया ने "क्लाइंट रिट्री स्ट्रैटेजी" पेश की, जो आपके क्लाइंट (आपके मामले में जेएस) को अच्छी तरह से काम कर सकती है:

हमने अपने एपीआई ग्राहकों में एक मूल रिट्री स्ट्रैटेजी को लागू करना समाप्त कर दिया। प्रत्येक एपीआई क्लाइंट को तीन अलग-अलग मशीनों तक पहुंचने में सक्षम होने के लिए विकसित किया गया था। तीन अलग DNS रिकॉर्ड प्रत्येक उपयोगकर्ता का प्रतिनिधित्व करते हैं: USERIDID-1.algolia.io, USERID-2.algolia.io औरUSERID-3.algolia.io। हमारा पहला कार्यान्वयन बेतरतीब ढंग से रिकॉर्ड में से एक का चयन करना था और फिर विफलता के मामले में एक अलग से पुन: प्रयास करना था।


1
मुझे लगता है कि अल्गोलिया का दृष्टिकोण मेरे बजट और उपयोग के मामलों के लिए सबसे अच्छा है। आम तौर पर मैं फिर से प्रत्येक लोड बैलेंसर के लिए अलग-अलग उपडोमेन का उपयोग कर रहा हूं, लेकिन चूंकि केवल जेएस विजेट उन्हें उपयोग करता है इसलिए अंतिम उपयोगकर्ता को कभी भी अंतर नहीं दिखाई देगा।
user3790827

1
किसी भी CloudFlare के DNS का उपयोग करने का सुझाव दिया cloudflare.com/features-optimizer एक बार एक विफलता वर्तमान में प्रयोग लोड संतुलन के साथ होता है अतिरिक्त लोड संतुलन को पुन: निर्देशन यातायात के लिए। Cloudflare.com/dns
user3790827
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.