क्या वेब अनुप्रयोगों में लोड संतुलन और सामग्री स्विचिंग की अवधारणा के बीच कोई अंतर है? लोड बैलेंसर एक सर्वर से अधिक ट्रैफ़िक को संभालने के लिए कई सर्वरों पर अनुरोध वितरित करते हैं।
यह आपको अतिरिक्त हार्डवेयर या सॉफ़्टवेयर जोड़े बिना अपने वेब एप्लिकेशन को स्केल करने की अनुमति देता है। इसके अलावा, लोड संतुलन आपको कम संसाधनों का उपयोग करने में सक्षम बनाता है, अन्यथा यदि सभी आने वाले अनुरोधों को सिर्फ एक सर्वर द्वारा नियंत्रित किया जाता तो इसकी आवश्यकता होती।
दूसरी ओर, सामग्री स्विचिंग का तात्पर्य उपयोगकर्ताओं को एक पृष्ठ से दूसरे पृष्ठ पर पुनर्निर्देशित करना है जब वर्तमान सर्वर उनके अनुरोध को पूरा नहीं कर सकता है। इस लेख में, हम दोनों अवधारणाओं के बीच अंतर को कवर करेंगे।
एक लोड बैलेंसर आने वाले अनुरोधों को कई सर्वरों के बीच वितरित करता है। यह तय नहीं करता कि किस सर्वर को किसी विशेष अनुरोध का उत्तर देना चाहिए। इसके बजाय, यह केवल उपलब्ध सर्वर पर अनुरोध अग्रेषित करता है। एक लोड बैलेंसर आमतौर पर राउंड-रॉबिन शेड्यूलिंग का उपयोग करता है, जहां हर बार एक नया अनुरोध आता है, यह अगले उपलब्ध सर्वर को अनुरोध भेजता है।
इस कार्यक्षमता को प्राप्त करने के लिए लोड बैलेंसर को यह जानना आवश्यक है कि अनुरोध भेजने के लिए कौन सा आईपी पता भेजा जाए। इसलिए, लोड बैलेंसर के पास कॉन्फ़िगरेशन जानकारी तक पहुंच होनी चाहिए।
उदाहरण के लिए, एक लोड बैलेंसर को वेब एप्लिकेशन को होस्ट करने वाली मशीन का नाम, उसका आईपी पता, पोर्ट नंबर आदि जानने की आवश्यकता हो सकती है।
लोड बैलेंसर अन्य सुविधाएँ भी प्रदान करते हैं जैसे एसएसएल समाप्ति, कैशिंग, मॉनिटरिंग, फ़ेलओवर, आदि। इन सुविधाओं का लेख में बाद में विस्तार से वर्णन किया गया है।
आज तीन प्रकार के लोड संतुलन का उपयोग किया जाता है: राउंड रॉबिन (आरआर), वेटेड रैंडम (डब्ल्यूआर), और लीस्ट कनेक्शंस (एलसी)। राउंड रॉबिन (आरआर):
इस प्रकार का भार संतुलन रोटरी डायल टेलीफोन प्रणाली की तरह काम करता है। जब कोई कॉल स्विच में आती है, तो यह गंतव्य तक पहुंचने तक कनेक्शन से गुजरती है। प्रत्येक कनेक्शन के साथ एक निश्चित वजन जुड़ा होता है।
यदि कोई निःशुल्क कनेक्शन नहीं बचा है, तो कॉल ड्रॉप हो जाती है। आरआर के साथ, विभिन्न कनेक्शनों को सौंपा गया भार समय के साथ बदलता रहता है। परिणामस्वरूप, कॉल उपलब्ध सर्वरों पर समान रूप से वितरित की जाती हैं।
भारित रैंडम (डब्ल्यूआर): प्रत्येक सर्वर को कुल बैंडविड्थ का एक निश्चित प्रतिशत निर्दिष्ट करता है। इसलिए, यदि 10 सर्वर हैं और कुल बैंडविड्थ का 5% आवंटित किया गया है, तो प्रत्येक सर्वर को कुल क्षमता का 5% मिलता है। इसका मतलब है कि पहले सर्वर को क्षमता का 50% मिलेगा, दूसरे सर्वर को 25% मिलेगा, आदि। न्यूनतम कनेक्शन (एलसी):
एलसी के साथ, लोड बैलेंसर केवल सबसे कम व्यस्त सर्वर को अनुरोध भेजता है। यदि सभी सर्वर समान रूप से व्यस्त हैं, तो लोड बैलेंसर हमेशा सबसे कम लोड वाले सर्वर को चुनेगा।
WR का मुख्य लाभ यह है कि यह बेहतर प्रदर्शन प्रदान करता है क्योंकि इसके लिए सर्वर पर किसी विशेष सेटिंग्स की आवश्यकता नहीं होती है। हालाँकि, इसके लिए RR की तुलना में अधिक मेमोरी और CPU चक्र की आवश्यकता होती है। WR का मुख्य नुकसान यह है कि यदि सर्वर पर कार्यभार में महत्वपूर्ण परिवर्तन होता है तो यह समस्याएँ पैदा कर सकता है।
जब कोई उपयोगकर्ता किसी विशिष्ट URL का अनुरोध करता है, तो वह उस स्थान पर सामग्री देखने की अपेक्षा करता है। लेकिन कभी-कभी, नेटवर्क समस्याओं के कारण, अनुरोध उस सर्वर तक नहीं पहुंच पाता है जो अनुरोधित संसाधन को होस्ट करता है।
इन मामलों में, उपयोगकर्ता को एक संदेश प्राप्त होता है जिसमें कहा जाता है कि पृष्ठ नहीं मिल सकता है या सर्वर अस्थायी रूप से अनुपलब्ध है। इसे "404 नहीं मिला" त्रुटि कहा जाता है। इस समस्या से बचने के लिए, आप "कंटेंट स्विचिंग" नामक तकनीक का उपयोग कर सकते हैं। सामग्री स्विचिंग के साथ, जब किसी विशिष्ट संसाधन के लिए अनुरोध विफल हो जाता है, तो लोड बैलेंसर क्लाइंट के अनुरोध को उसी संसाधन को होस्ट करने वाले दूसरे सर्वर पर रीडायरेक्ट करता है। इस तरह, उपयोगकर्ता को कभी भी 404 त्रुटियाँ नहीं दिखाई देतीं।
आपके लोड बैलेंसर को यह समझने की आवश्यकता है कि सामग्री स्विचिंग को लागू करने के लिए पुनर्निर्देशन कैसे करें। यह 302 नामक HTTP प्रतिक्रिया कोड का उपयोग करके ऐसा करता है। 302 प्रतिक्रिया ब्राउज़र को एक अलग स्थान पर एक नया अनुरोध करने के लिए कहती है।
इसके अलावा, लोड बैलेंसर यह निर्धारित करने में सक्षम होना चाहिए कि कौन से संसाधन किस सर्वर पर होस्ट किए गए हैं। ऐसा करने के लिए, यह DNS नाम सर्वर (DNS NS) नामक सुविधा का उपयोग करता है। DNS NS होस्टनामों को IP पतों में परिवर्तित करता है। सामग्री स्विचिंग प्राप्त करने के लिए लोड बैलेंसर को वेबसाइट के DNS कॉन्फ़िगरेशन के बारे में जानकारी तक पहुंच प्राप्त करनी होगी। उदाहरण के लिए, यह जानना आवश्यक है कि DNS नाम सर्वर कहाँ स्थित है और उसका IP पता क्या है।
यह लोड बैलेंसर को DNS फ़ॉरवर्डर के रूप में कॉन्फ़िगर करके किया जाता है। आप उपयुक्त DNS नाम सर्वर पर क्वेरी भेजने के लिए DNS फ़ॉरवर्डर को कॉन्फ़िगर करते हैं।
एक बार जब DNS फ़ॉरवर्डर को पता चल जाता है कि DNS नाम सर्वर कहाँ रहता है, तो वह क्वेरी को सर्वर पर अग्रेषित कर देता है। DNS नाम सर्वर से उत्तर प्राप्त करने के बाद, लोड बैलेंसर अनुरोधित संसाधन को होस्ट करने वाले सर्वर का आईपी पता लौटाता है।
यह ध्यान रखना महत्वपूर्ण है कि वर्चुअल सर्वर सामग्री स्विचिंग का समर्थन नहीं करते हैं। वे 404 स्टेटस कोड लौटाते हैं।
एक वर्चुअल सर्वर एक भौतिक सर्वर का तार्किक प्रतिनिधित्व है। प्रत्येक वर्चुअल सर्वर का अपना आईपी पता और पोर्ट नंबर होता है। वर्चुअल सर्वर का उपयोग दोष सहनशीलता प्रदान करने के लिए किया जाता है। जब कोई वर्चुअल सर्वर बंद हो जाता है, तो उस पर निर्देशित ट्रैफ़िक दूसरे भौतिक सर्वर पर पुनर्निर्देशित हो जाता है।
लोड संतुलन में, सभी अनुरोध एक ही पथ से गुजरते हैं। इसलिए कैश में डेटा की हमेशा एक ही कॉपी रहेगी। यदि पहला सर्वर ओवरलोड हो जाता है, तो अन्य सर्वरों को कम काम मिलता है। सामग्री स्विचिंग में, प्रत्येक अनुरोध एक अलग पथ पर जाता है। तो कैश में डेटा की कई प्रतियां होंगी। और यदि पहला सर्वर ओवरलोड हो जाता है, तो अन्य सर्वरों को अधिक काम करना पड़ता है।
लोड बैलेंसिंग में, लोड बैलेंसर प्रत्येक सर्वर के स्वास्थ्य पर नज़र रखता है। यदि कोई सर्वर प्रत्युत्तर देना बंद कर देता है, तो यह लोड बैलेंसर को चेतावनी देता है। लोड बैलेंसर फिर उस सर्वर को सेवा से हटा देता है। कंटेंट स्विचिंग में, लोड बैलेंसर सर्वर के स्वास्थ्य पर नज़र रखते हैं। लेकिन वे ग्राहकों को चेतावनी नहीं भेजते. इसके बजाय, वे अनुरोधों को अन्य सर्वरों पर पुनर्निर्देशित करते हैं।
लोड बैलेंसिंग में, यदि कोई सर्वर क्रैश हो जाता है, तो लोड बैलेंसर क्लाइंट को एक संदेश भेजता है कि उनका अनुरोध विफल हो गया है। कंटेंट स्विचिंग में, यदि कोई सर्वर क्रैश हो जाता है, तो लोड बैलेंसर क्लाइंट को कुछ भी नहीं बताता है।
लोड बैलेंसिंग में, जब कोई सर्वर वापस आता है, तो लोड बैलेंसर यह पता लगाने की कोशिश करता है कि यह क्रैश क्यों हुआ। फिर वह निर्णय ले सकता है कि इसे वापस ऑनलाइन रखा जाए या नहीं। सामग्री स्विचिंग में, लोड बैलेंसर मानते हैं कि सर्वर आने पर सब कुछ ठीक है। इसकी जाँच करने की कोई आवश्यकता नहीं है कि यह वापस क्यों आया। यह बस इसे नए अनुरोध भेजना शुरू कर देता है।
लोड बैलेंसिंग में, आप यह निर्धारित कर सकते हैं कि क्लाइंट को आपकी वेबसाइट तक पहुंचने का प्रयास छोड़ने से पहले कितनी बार त्रुटि मिलती है। सामग्री स्विचिंग में, आप यह नियंत्रित नहीं कर सकते कि ग्राहक आपकी वेबसाइट तक पहुँचने से पहले कितनी देर तक प्रतीक्षा करता है।
लोड संतुलन में, एक सर्वर विफलता कुछ अनुप्रयोगों के साथ समस्याएँ पैदा कर सकती है। एक अच्छा उदाहरण शॉपिंग कार्ट एप्लिकेशन होगा। यदि कोई उपयोगकर्ता किसी आइटम को कार्ट में रखता है लेकिन फिर बिना जांच किए चला जाता है, तो ऑर्डर पूरा नहीं होता है।
सामग्री स्विचिंग में, एकल सर्वर विफलता किसी भी एप्लिकेशन को प्रभावित नहीं करेगी।
लोड बैलेंसिंग कंटेंट स्विचिंग से बेहतर है क्योंकि इसमें कम सीमाएँ हैं और बेहतर प्रदर्शन प्रदान करता है। समग्र कार्यक्रम बहुत समान हैं, सिवाय इसके कि लोड बैलेंसर सभी कनेक्शनों को संभालेगा जबकि सामग्री स्विचर केवल उसी आईपी पते से आने वाले कनेक्शनों को संभालेगा। हालाँकि, दोनों के फायदे और नुकसान हैं। इनका उपयोग करने से पहले यह जानना जरूरी है कि वे क्या हैं।
गेरी मिलेवा