किसी भी डेटाबेस के लिए, ग्राहकों से आने वाले सभी अनुरोधों का भार संतुलन मापनीयता सुनिश्चित करने के लिए एक महत्वपूर्ण और मौलिक तंत्र है। एक उचित लोड संतुलन समाधान सभी क्लाइंट अनुरोधों को सभी डेटाबेस संसाधनों में समान रूप से फैलाता है। यदि डेटाबेस क्लस्टर उचित लोड संतुलन समाधान के साथ सुरक्षित नहीं है, तो आपका डेटाबेस उस पर बढ़े हुए ट्रैफ़िक लोड को संभालने में सक्षम नहीं होगा।
सौभाग्य से, MongoDB शार्पनिंग के माध्यम से क्षैतिज स्केलिंग का समर्थन करके उच्च ट्रैफ़िक को संतुलित करने के लिए अंतर्निहित समर्थन प्रदान करता है। आप शार्किंग का उपयोग करके अपने संग्रह के डेटा को कई सर्वरों पर वितरित कर सकते हैं। डेटाबेस पर बढ़े हुए ट्रैफ़िक को संभालने के लिए आप अपने क्लस्टर में नए सर्वर/मशीन भी जोड़ सकते हैं। आप अपने MongoDB रेप्लिका क्लस्टर को शार्डिंग क्लस्टर में बदलने के लिए इस गाइड का अनुसरण कर सकते हैं।
इस लेख में, हम MongoDB शार्प क्लस्टर में चलने वाली बैलेंसर प्रक्रिया के व्यवहार और इसके व्यवहार को संशोधित करने के तरीके के बारे में जानेंगे। MongoDB बैलेंसर प्रक्रिया आपके संग्रह को समान रूप से शार्क में वितरित करने का ध्यान रखती है। उदाहरण के लिए, यदि आपके क्लस्टर के एक शार्प में आपके शार्प किए गए संग्रह के बहुत अधिक हिस्से हैं, तो उस विशेष शार्क को अन्य शार्क की तुलना में अधिक ट्रैफ़िक प्राप्त हो सकता है। इसलिए, बैलेंसर प्रक्रिया संग्रह के टुकड़ों को शार्प में ठीक से संतुलित करती है। अधिकांश MongoDB परिनियोजन में, बैलेंसर प्रक्रिया का डिफ़ॉल्ट कॉन्फ़िगरेशन सामान्य संचालन के लिए पर्याप्त है। लेकिन, कुछ स्थितियों में, डेटाबेस व्यवस्थापक इस प्रक्रिया के डिफ़ॉल्ट व्यवहार को बदलना चाह सकते हैं। यदि आप किसी भी एप्लिकेशन-स्तर की जरूरतों या परिचालन आवश्यकताओं के लिए बैलेंसर प्रक्रिया के डिफ़ॉल्ट व्यवहार को संशोधित करना चाहते हैं तो आप इस गाइड का पालन कर सकते हैं।
बैलेंसर प्रक्रिया की स्थिति और स्थिति के बारे में कुछ जानकारी प्राप्त करने के लिए कुछ बुनियादी आदेशों के साथ शुरू करते हैं।
बैलेंसर स्टेट स्टेटस
यह कमांड जांचता है कि बैलेंसर सक्षम है या चलने की अनुमति है या नहीं। यदि बैलेंसर प्रक्रिया नहीं चल रही है तो यह कमांड झूठी वापसी करेगी। यह जाँच नहीं करेगा कि बैलेंसर प्रक्रिया चल रही है या नहीं।
sh.getBalancerState()
बैलेंसर प्रक्रिया सक्षम करें
यदि बैलेंसर डिफ़ॉल्ट रूप से सक्षम नहीं है तो आप निम्न आदेश चलाकर इसे सक्षम कर सकते हैं। यह कमांड बैलेंसर प्रक्रिया शुरू नहीं करेगा, लेकिन यह प्रक्रिया को सक्षम करेगा और यह सुनिश्चित करेगा कि अगली बार बैलेंसर प्रक्रिया चलने पर चंक बैलेंसिंग को ब्लॉक नहीं किया जाएगा।
sh.enableBalancing(<collection_name/namespace>)
बैलेंसर प्रक्रिया अक्षम करें
बैलेंसर प्रक्रिया डिफ़ॉल्ट रूप से किसी भी समय चलती है। इसलिए, यदि आप कुछ विशिष्ट समय अवधि के लिए बैलेंसर प्रक्रिया को अक्षम करना चाहते हैं तो आप निम्न आदेश का उपयोग कर सकते हैं। इस कमांड का उपयोग करने के लिए एक आदर्श परिदृश्य है जब आप अपने डेटाबेस का बैकअप ले रहे हों।
sh.stopBalancer()
सुनिश्चित करें कि बैकअप लेने से पहले बैलेंसर प्रक्रिया रोक दी गई है। यदि डेटाबेस बैकअप लेते समय प्रक्रिया सक्षम है, तो आप अपने डेटाबेस की कुछ असंगत प्रतिकृति के साथ समाप्त हो सकते हैं। ऐसा तब हो सकता है जब बैलेंसर प्रक्रिया बैकअप प्रक्रिया के दौरान लोड संतुलन के लिए कुछ हिस्सों को शार्क के आर-पार ले जाती है।
आप निम्न आदेश का उपयोग करके एक पैरामीटर के रूप में संग्रह का पूरा नाम स्थान प्रदान करके कुछ विशिष्ट संग्रहों पर संतुलन को अक्षम भी कर सकते हैं।
sh.disableBalancing("<db_name>.<collection_name>")
बैलेंसर रनिंग स्टेटस
यह कमांड जांचता है कि बैलेंसर प्रक्रिया चल रही है या नहीं। यह यह भी जांचता है कि क्या यह सक्रिय रूप से शार्डिंग चंक्स का प्रबंधन कर रहा है या नहीं। यदि प्रक्रिया चल रही है तो सत्य लौटाता है अन्यथा झूठा लौटाता है।
sh.isBalancerRunning()
डिफ़ॉल्ट चंक आकार कॉन्फ़िगरेशन
डिफ़ॉल्ट रूप से, किसी भी MongoDB शार्प क्लस्टर में चंक का आकार 64MB है। अधिकांश परिदृश्यों के लिए, यह कटे हुए टुकड़ों को स्थानांतरित करने या विभाजित करने के लिए पर्याप्त है। हालाँकि, कभी-कभी सामान्य माइग्रेशन प्रक्रिया में आपके हार्डवेयर द्वारा संसाधित किए जा सकने वाले I/O संचालनों की संख्या अधिक होती है। इस प्रकार की स्थितियों में, आप विखंडू के आकार को कम करना चाह सकते हैं। आप निम्न आदेशों के सेट को चलाकर ऐसा कर सकते हैं।
use config
db.settings.save( { _id:"chunksize", value: <sizeInMB> } )
यदि आप शार्प किए गए क्लस्टर में डिफ़ॉल्ट चंक आकार बदलते हैं, तो निम्न बातों को ध्यान में रखें
- आप केवल 1 से 1024 एमबी के बीच के चंक आकार को निर्दिष्ट कर सकते हैं
- स्वचालित विभाजन केवल डालने या अपडेट करने पर ही होगा
- विभाजन प्रक्रिया के दौरान छोटे टुकड़ों के आकार के कारण अधिक समय लगेगा।
एक विशिष्ट समय के लिए संतुलन निर्धारित करें
जब आपके डेटाबेस का आकार बहुत बड़ा होता है, तो संतुलन या माइग्रेशन प्रक्रियाएं आपके डेटाबेस के समग्र प्रदर्शन को प्रभावित कर सकती हैं। इसलिए, डेटाबेस पर लोड बहुत कम होने पर एक विशिष्ट समय विंडो के दौरान संतुलन प्रक्रिया को शेड्यूल करना बुद्धिमानी है। बैलेंसर प्रक्रिया को चलाने के लिए समय विंडो सेट करने के लिए आप निम्न कमांड का उपयोग कर सकते हैं।
use config
db.settings.update({ _id : "balancer" }, { $set : { activeWindow : { start : "<start-time>", stop : "<stop-time>" } } }, true )
उदाहरण
निम्नलिखित आदेश संतुलन प्रक्रिया को चलाने के लिए 1:00 AM से 5:00 AM तक समय विंडो सेट करेगा।
db.settings.update({ _id : "balancer" }, { $set : { activeWindow : { start : "01:00", stop : "05:00" } } }, true )
सुनिश्चित करें कि दी गई समय-सीमा पूरी संतुलन प्रक्रिया के लिए पर्याप्त है।
आप निम्न आदेश चलाकर किसी भी मौजूदा संतुलन प्रक्रिया समय विंडो को भी हटा सकते हैं।
db.settings.update({ _id : "balancer" }, { $unset : { activeWindow : true } })
उपरोक्त आदेशों के अलावा, आप _secondaryThrottle पैरामीटर का उपयोग करके चंक माइग्रेशन प्रक्रिया करते समय प्रतिकृति व्यवहार को भी बदल सकते हैं। साथ ही, आप _waitForDelete प्रॉपर्टी का उपयोग moveChunk कमांड के साथ कर सकते हैं ताकि संतुलन प्रक्रिया को नए चंक माइग्रेशन चरण से शुरू करने से पहले वर्तमान माइग्रेशन के डिलीट चरण की प्रतीक्षा करने के लिए कहा जा सके।
निष्कर्ष
उम्मीद है, MongoDB बैलेंसर प्रक्रिया के डिफ़ॉल्ट व्यवहार को बदलते समय आपको यह सब कुछ चाहिए। संतुलन किसी भी MongoDB शार्प क्लस्टर का एक बहुत ही महत्वपूर्ण पहलू है। इसलिए, यदि आप संतुलन प्रक्रिया के बारे में विस्तार से जानते हैं, तो आपकी आवश्यकताओं और उपयोग के मामलों के अनुसार बैलेंसर प्रक्रिया के डिफ़ॉल्ट व्यवहार को संशोधित करना बहुत आसान हो जाता है।