MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

आपके अनुप्रयोगों के लिए पारदर्शी डेटाबेस विफलता

ClusterControl डेटाबेस क्लस्टर्स को तैनात और प्रबंधित करने के लिए एक बेहतरीन टूल है - यदि आप MySQL में हैं, तो आप पारंपरिक MySQL मास्टर-स्लेव प्रतिकृति, गैलेरा क्लस्टर या MySQL NDB क्लस्टर दोनों के आधार पर आसानी से क्लस्टर्स को तैनात कर सकते हैं। उच्च उपलब्धता प्राप्त करने के लिए, हालांकि एक क्लस्टर तैनात करना पर्याप्त नहीं है। नोड्स नीचे जा सकते हैं (और संभवतः होंगे), और आपके सिस्टम को उन परिवर्तनों के अनुकूल होने में सक्षम होना चाहिए।

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

ClusterControl का उपयोग करके HAProxy को परिनियोजित करना

HAProxy मानक है - MySQL के संबंध में उपयोग किए जाने वाले सबसे लोकप्रिय प्रॉक्सी में से एक (लेकिन न केवल, निश्चित रूप से)। ClusterControl HAProxy नोड्स के परिनियोजन और निगरानी का समर्थन करता है। यह Keepalived का उपयोग करके स्वयं प्रॉक्सी की उच्च उपलब्धता को लागू करने में भी मदद करता है।

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

डिफ़ॉल्ट रूप से, ClusterControl द्वारा तैनात HAProxy इंस्टेंस MySQL क्लस्टर (NDB), गैलेरा क्लस्टर, PostgreSQL स्ट्रीमिंग प्रतिकृति और MySQL प्रतिकृति पर काम करेगा। मास्टर-स्लेव प्रतिकृति के लिए, ClusterControl दो श्रोताओं को कॉन्फ़िगर कर सकता है, एक केवल-पढ़ने के लिए और दूसरा पढ़ने-लिखने के लिए। इसके बाद एप्लिकेशन को संबंधित पोर्ट पर रीड एंड राइट भेजना होगा। मल्टी-मास्टर प्रतिकृति के लिए, ClusterControl मानक  TCP लोड-बैलेंसिंग को कम से कम कनेक्शन संतुलन एल्गोरिथम के आधार पर सेट करेगा (उदाहरण के लिए, गैलेरा क्लस्टर के लिए जहां सभी नोड्स लिखने योग्य हैं)।

Keepalived का उपयोग प्रॉक्सी परत में उच्च उपलब्धता जोड़ने के लिए किया जाता है। जब आपके सिस्टम में कम से कम दो HAProxy नोड हों, तो आप ClusterControl UI से Keepalived इंस्टॉल कर सकते हैं।

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

आप हमारे HAProxy ट्यूटोरियल को पढ़कर इस बारे में अधिक जानकारी प्राप्त कर सकते हैं कि आंतरिक कैसे कॉन्फ़िगर किया गया है।

ClusterControl का उपयोग करके ProxySQL परिनियोजित करना

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

ProxySQL इस समस्या को हल करता है - यह MySQL प्रोटोकॉल पर बात करता है और यह (अन्य बातों के अलावा) अपने शक्तिशाली क्वेरी नियमों के माध्यम से रीड-राइट स्प्लिट कर सकता है और आने वाले MySQL ट्रैफ़िक को विभिन्न मानदंडों के अनुसार रूट कर सकता है। क्लस्टरकंट्रोल से प्रॉक्सीएसक्यूएल की स्थापना सरल है - आप मैनेज -> लोड बैलेंसर सेक्शन में जाना चाहते हैं और आवश्यक डेटा के साथ "प्रॉक्सीएसक्यूएल तैनात करें" टैब भरें।

संक्षेप में, हमें यह चुनने की आवश्यकता है कि ProxySQL कहाँ स्थापित किया जाएगा, उसके पास कौन सा प्रशासन उपयोगकर्ता और पासवर्ड होना चाहिए, कौन से निगरानी उपयोगकर्ता को इसका उपयोग  MySQL बैकएंड से कनेक्ट करने और उनकी स्थिति और मॉनिटर स्थिति को सत्यापित करने के लिए करना चाहिए। ClusterControl से, आप या तो एप्लिकेशन द्वारा उपयोग किए जाने के लिए एक नया उपयोगकर्ता बना सकते हैं - आप इसका नाम, पासवर्ड, किस डेटाबेस तक पहुंच प्रदान करते हैं और उपयोगकर्ता के पास कौन से MySQL विशेषाधिकार हैं, यह तय कर सकते हैं। ऐसा उपयोगकर्ता MySQL और ProxySQL दोनों पक्षों पर बनाया जाएगा। दूसरा विकल्प, मौजूदा बुनियादी ढांचे के लिए अधिक उपयुक्त, मौजूदा डेटाबेस उपयोगकर्ताओं का उपयोग करना है। आपको उपयोगकर्ता नाम और पासवर्ड पास करने की आवश्यकता है, और ऐसा उपयोगकर्ता केवल ProxySQL पर बनाया जाएगा।

अंत में, आपको एक प्रश्न का उत्तर देना होगा:क्या आप निहित लेनदेन का उपयोग कर रहे हैं? इससे हम समझते हैं कि SET autocommit=0 चलाकर लेन-देन शुरू किया गया है; यदि आप इसका उपयोग करते हैं, तो ClusterControl ProxySQL को मास्टर को सभी ट्रैफ़िक भेजने के लिए कॉन्फ़िगर करेगा। यह सुनिश्चित करने के लिए आवश्यक है कि ProxySQL, ProxySQL 1.3.x और इससे पहले के संस्करणों में लेनदेन को सही ढंग से हैंडल करेगा। यदि आप नया लेनदेन बनाने के लिए SET autocommit=0 का उपयोग नहीं करते हैं, तो ClusterControl रीड/राइट स्प्लिट को कॉन्फ़िगर करेगा।

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

एक और तरीका है, Keepalived का उसी तरह उपयोग करना जैसे हमने HAProxy के मामले में किया था।

आप हमारे ProxySQL ट्यूटोरियल को पढ़कर इस बारे में अधिक विवरण प्राप्त कर सकते हैं कि आंतरिक कैसे कॉन्फ़िगर किए गए हैं।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मैं मोंगोडीबी में किसी संपत्ति को टेक्स्ट से डेट प्रकार में कैसे परिवर्तित करूं?

  2. नोड - नेवला 3.6 - आबादी वाले क्षेत्र के साथ क्रमबद्ध क्वेरी

  3. किसी नेस्टेड सरणी से $pull और $[identifier] (mongoDB 3.6) के साथ किसी ऑब्जेक्ट को निकालें

  4. mongodb . में एक ही संग्रह पर संघ

  5. मोंगो गैर-अद्वितीय क्षेत्रों पर 'डुप्लिकेट कुंजी त्रुटि' दे रहा है