श्रृंखला में पिछले ब्लॉग में हमने भू-वितरित क्लस्टर बनाने के लिए गैलेरा क्लस्टर का उपयोग करने के पेशेवरों और विपक्षों पर चर्चा की थी। इस पोस्ट में हम एक गैलेरा-आधारित भू-वितरित क्लस्टर डिजाइन करेंगे और हम दिखाएंगे कि आप क्लस्टरकंट्रोल का उपयोग करके सभी आवश्यक टुकड़ों को कैसे तैनात कर सकते हैं।
जियो-डिस्ट्रिब्यूटेड गैलेरा क्लस्टर डिजाइन करना
हम उस परिवेश की व्याख्या के साथ शुरुआत करेंगे जिसे हम बनाना चाहते हैं। हम वाइड एरिया नेटवर्क (WAN) के माध्यम से जुड़े तीन दूरस्थ डेटा केंद्रों का उपयोग करेंगे। प्रत्येक डेटासेंटर को स्थानीय एप्लिकेशन सर्वर से लेखन प्राप्त होगा। पठन भी केवल स्थानीय होगा। इसका उद्देश्य WAN को पार करने वाले अनावश्यक यातायात से बचना है।
इस सेटअप के लिए कनेक्टिविटी मौजूद है और सुरक्षित है, लेकिन हम इसका सटीक वर्णन नहीं करेंगे कि इसे कैसे प्राप्त किया जा सकता है। ओपनवीपीएन के माध्यम से मालिकाना हार्डवेयर और सॉफ्टवेयर समाधान से शुरू होने और एसएसएच सुरंगों पर समाप्त होने वाली कनेक्टिविटी को सुरक्षित करने के लिए कई तरीके हैं।
हम ProxySQL को लोड बैलेंसर के रूप में उपयोग करेंगे। ProxySQL को प्रत्येक डेटासेंटर में स्थानीय रूप से तैनात किया जाएगा। यह यातायात को केवल स्थानीय नोड्स तक ही रूट करेगा। रिमोट नोड्स को हमेशा मैन्युअल रूप से जोड़ा जा सकता है और हम उन मामलों की व्याख्या करेंगे जहां यह एक अच्छा समाधान हो सकता है। एप्लिकेशन को राउंड-रॉबिन एल्गोरिथम का उपयोग करके स्थानीय प्रॉक्सीएसक्यूएल नोड्स में से किसी एक से कनेक्ट करने के लिए कॉन्फ़िगर किया जा सकता है। हम ट्रैफ़िक को एकल ProxySQL नोड की ओर रूट करने के लिए Keepalived और Virtual IP का भी उपयोग कर सकते हैं, जब तक कि एक एकल ProxySQL नोड सभी ट्रैफ़िक को संभालने में सक्षम होगा।
एक अन्य संभावित समाधान प्रॉक्सीएसक्यूएल को एप्लिकेशन नोड्स के साथ जोड़ना और स्थानीयहोस्ट पर प्रॉक्सी से कनेक्ट करने के लिए एप्लिकेशन को कॉन्फ़िगर करना है। यह दृष्टिकोण इस धारणा के तहत काफी अच्छी तरह से काम करता है कि यह संभावना नहीं है कि प्रॉक्सीएसक्यूएल उपलब्ध नहीं होगा, फिर भी आवेदन उसी नोड पर ठीक काम करेगा। आमतौर पर हम जो देखते हैं वह या तो नोड विफलता या नेटवर्क विफलता है, जो एक ही समय में ProxySQL और एप्लिकेशन दोनों को प्रभावित करेगा।
उपरोक्त आरेख पर्यावरण के उस संस्करण को दिखाता है, जहां ProxySQL का स्थान है आवेदन के समान नोड। ProxySQL को स्थानीय डेटासेंटर में सभी गैलेरा नोड्स में वर्कलोड वितरित करने के लिए कॉन्फ़िगर किया गया है। उन नोड्स में से एक को लिखने के लिए नोड के रूप में चुना जाएगा जबकि चयन सभी नोड्स में वितरित किए जाएंगे। डेटासेंटर में एक समर्पित लेखक नोड होने से संभावित प्रमाणन संघर्षों की संख्या को कम करने में मदद मिलती है, जिससे आमतौर पर बेहतर प्रदर्शन होता है। इसे और कम करने के लिए हमें WAN कनेक्शन पर ट्रैफिक भेजना शुरू करना होगा, जो आदर्श नहीं है क्योंकि बैंडविड्थ उपयोग में काफी वृद्धि होगी। अभी, सेगमेंट के साथ, डेटासेंटर में राइटसेट की केवल दो प्रतियां भेजी जा रही हैं - एक प्रति डीसी।
गैलेरा क्लस्टर भू-वितरित तैनाती के साथ मुख्य चिंता विलंबता है। यह कुछ ऐसा है जिसे आपको हमेशा पर्यावरण को लॉन्च करने से पहले परीक्षण करना होगा। क्या मैं प्रतिबद्ध समय के साथ ठीक हूँ? हर कमिट सर्टिफिकेशन पर होना होता है इसलिए राइटसेट को क्लस्टर में सभी नोड्स पर भेजना और प्रमाणित करना होता है, जिसमें रिमोट भी शामिल हैं। हो सकता है कि उच्च विलंबता आपके आवेदन के लिए सेटअप को अनुपयुक्त समझे। उस स्थिति में आपको अतुल्यकालिक प्रतिकृति के माध्यम से जुड़े कई गैलेरा क्लस्टर अधिक उपयुक्त लग सकते हैं। हालांकि यह किसी अन्य ब्लॉग पोस्ट के लिए एक विषय होगा।
ClusterControl का उपयोग करके भू-वितरित गैलेरा क्लस्टर परिनियोजित करना
चीजों को स्पष्ट करने के लिए, हम यहां दिखाएंगे कि एक परिनियोजन कैसा दिख सकता है। हम वास्तविक मल्टी-डीसी सेटअप का उपयोग नहीं करेंगे, सब कुछ एक स्थानीय प्रयोगशाला में तैनात किया जाएगा। हम मानते हैं कि विलंबता स्वीकार्य है और संपूर्ण सेटअप व्यवहार्य है। ClusterControl के बारे में सबसे अच्छी बात यह है कि यह इन्फ्रास्ट्रक्चर-अज्ञेयवादी है। यह परवाह नहीं करता है कि नोड्स एक दूसरे के करीब हैं, एक ही डेटासेंटर में स्थित हैं या यदि नोड्स कई क्लाउड प्रदाताओं में वितरित किए जाते हैं। जब तक ClusterControl इंस्टेंस से सभी नोड्स में SSH कनेक्टिविटी है, तब तक परिनियोजन प्रक्रिया बिल्कुल वैसी ही दिखती है। इसलिए हम केवल स्थानीय लैब का उपयोग करके इसे चरण दर चरण आपको दिखा सकते हैं।
ClusterControl स्थापित करना
सबसे पहले, आपको ClusterControl स्थापित करना होगा। आप इसे मुफ़्त में डाउनलोड कर सकते हैं। पंजीकरण करने के बाद, आपको ClusterControl को डाउनलोड और इंस्टॉल करने के लिए गाइड के साथ पेज तक पहुंचना चाहिए। यह शेल स्क्रिप्ट चलाने जितना आसान है। एक बार जब आप ClusterControl स्थापित कर लेते हैं, तो आपको एक प्रशासनिक उपयोगकर्ता बनाने के लिए एक फॉर्म प्रस्तुत किया जाएगा:
इसे भरने के बाद, आपको एक स्वागत स्क्रीन और एक्सेस के साथ प्रस्तुत किया जाएगा परिनियोजन विज़ार्ड के लिए:
हम परिनियोजन के साथ जाएंगे। यह एक परिनियोजन विज़ार्ड खोलेगा:
हम MySQL गैलेरा को चुनेंगे। हमें SSH कनेक्टिविटी विवरण पास करना होगा - या तो रूट उपयोगकर्ता या sudo उपयोगकर्ता समर्थित हैं। अगले चरण में हमें क्लस्टर में सर्वर को परिभाषित करना है।
हम एक डेटा सेंटर में तीन नोड तैनात करने जा रहे हैं। तब हम विभिन्न खंडों में नए नोड्स को कॉन्फ़िगर करते हुए, क्लस्टर का विस्तार करने में सक्षम होंगे। अभी के लिए हमें बस इतना करना है कि "तैनाती" पर क्लिक करें और क्लस्टर कंट्रोल को गैलेरा क्लस्टर को तैनात करते हुए देखें।
हमारे पहले तीन नोड तैयार हैं और चल रहे हैं, अब हम जोड़ने के लिए आगे बढ़ सकते हैं अन्य डेटा केंद्रों में अतिरिक्त नोड्स।
आप क्रिया मेनू से ऐसा कर सकते हैं, जैसा कि ऊपर स्क्रीनशॉट में दिखाया गया है ।
यहां हम एक-एक करके अतिरिक्त नोड जोड़ सकते हैं। क्या महत्वपूर्ण है, आपको गैलेरा खंड को गैर-शून्य में बदलना चाहिए (शुरुआती तीन नोड्स के लिए उपयोग किया जाता है)।
थोड़ी देर बाद हम सभी नौ नोड्स के साथ समाप्त हो जाते हैं, जो तीन खंडों में वितरित होते हैं।
अब, हमें प्रॉक्सी लेयर तैनात करनी होगी। हम उसके लिए ProxySQL का उपयोग करेंगे। आप इसे मैनेज -> लोड बैलेंसर:
. के माध्यम से ClusterControl में तैनात कर सकते हैंयह एक परिनियोजन फ़ील्ड खोलता है:
सबसे पहले, हमें यह तय करना होगा कि ProxySQL को कहां तैनात किया जाए। हम मौजूदा गैलेरा नोड्स का उपयोग करेंगे लेकिन आप क्षेत्र में कुछ भी टाइप कर सकते हैं ताकि एप्लिकेशन नोड्स के शीर्ष पर प्रॉक्सीएसक्यूएल को तैनात करना पूरी तरह से संभव हो। इसके अलावा, आपको प्रशासनिक और निगरानी उपयोगकर्ता के लिए एक्सेस क्रेडेंशियल पास करना होगा।
फिर हमें या तो MySQL में मौजूदा उपयोगकर्ताओं में से एक को चुनना होगा या एक बनाना होगा अभी इस वक्त। हम यह भी सुनिश्चित करना चाहते हैं कि ProxySQL केवल उसी डेटासेंटर में स्थित गैलेरा नोड्स का उपयोग करने के लिए कॉन्फ़िगर किया गया है।
जब आपके पास डेटासेंटर में एक ProxySQL तैयार हो, तो आप इसे कॉन्फ़िगरेशन के स्रोत के रूप में उपयोग कर सकते हैं:
इसे हर एप्लिकेशन सर्वर के लिए दोहराया जाना चाहिए जो आपके पास सभी डेटासेंटर में है . फिर एप्लिकेशन को स्थानीय प्रॉक्सीएसक्यूएल इंस्टेंस से कनेक्ट करने के लिए कॉन्फ़िगर किया जाना चाहिए, आदर्श रूप से यूनिक्स सॉकेट पर। यह सर्वश्रेष्ठ प्रदर्शन और न्यूनतम विलंबता के साथ आता है।
आखिरी ProxySQL परिनियोजित होने के बाद, हमारा परिवेश तैयार है। एप्लिकेशन नोड्स स्थानीय प्रॉक्सीएसक्यूएल से जुड़ते हैं। प्रत्येक ProxySQL को उसी डेटासेंटर में गैलेरा नोड्स के साथ काम करने के लिए कॉन्फ़िगर किया गया है:
निष्कर्ष
हमें उम्मीद है कि इस दो-भाग की श्रृंखला ने आपको भू-वितरित गैलेरा क्लस्टर की ताकत और कमजोरियों को समझने में मदद की है और कैसे क्लस्टर कंट्रोल ऐसे क्लस्टर को तैनात और प्रबंधित करना बहुत आसान बनाता है।