डेटाबेस लोड बैलेंसर, या प्रॉक्सी, एप्लिकेशन परत और डेटाबेस परत के बीच एक मिडलवेयर सेवा है। एप्लिकेशन डेटाबेस प्रॉक्सी से जुड़ता है, और प्रॉक्सी डेटाबेस से कनेक्शन को अग्रेषित करता है। डेटाबेस प्रॉक्सी का उपयोग करने के कुछ लाभ हैं, उदाहरण के लिए:विभाजित पढ़ने और लिखने के प्रश्न, कैश क्वेरी, कुछ रूटिंग एल्गोरिथम के आधार पर प्रश्नों को वितरित करना, प्रश्नों को फिर से लिखना, और आपके केवल-पढ़ने के कार्यभार को मापना। एक डेटाबेस प्रॉक्सी अनुप्रयोग परत के लिए डेटाबेस टोपोलॉजी (और कोई भी परिवर्तन) को भी सारगर्भित करता है, इसलिए अनुप्रयोगों को केवल एक एकल समापन बिंदु से कनेक्ट करने की आवश्यकता होती है।
कमर्शियल से लेकर ओपन सोर्स विकल्पों जैसे HAProxy, Nginx, ProxySQL, Maxscale, आदि तक कई डेटाबेस प्रॉक्सी हैं। इस ब्लॉग में, हम चर्चा करेंगे कि डेटाबेस प्रॉक्सी को Maxscale से ProxySQL में कैसे माइग्रेट किया जाए। ClusterControl की मदद से।
मैक्सस्केल के साथ वर्तमान आर्किटेक्चर
एक अत्यधिक उपलब्ध डेटाबेस आर्किटेक्चर पर विचार करें जिसमें गैलेरा क्लस्टर में 3 नोड होते हैं, और इसके ऊपर, डेटाबेस प्रॉक्सी की उच्च उपलब्धता के लिए 2 मैक्सस्केल और कीपलाइव्ड सेवाएं। गैलेरा क्लस्टर "वस्तुतः" तुल्यकालिक प्रतिकृति है, यह प्रतिकृति के लिए एक प्रमाणीकरण का उपयोग करता है यह सुनिश्चित करता है कि आपका डेटा सभी नोड्स पर उपलब्ध होगा। वर्तमान वास्तुकला नीचे दिखाया गया है:

Maxscale, MariaDB Corporation का एक डेटाबेस प्रॉक्सी है, जो अनुप्रयोगों के बीच मिडलवेयर के रूप में कार्य करता है। और डेटाबेस।
यहां क्लस्टरकंट्रोल में गैलेरा क्लस्टर और मैक्सस्केल लोड बैलेंसर्स के लिए टोपोलॉजी आर्किटेक्चर है। आप यह सब सीधे ClusterControl से परिनियोजित करने में सक्षम हैं, या मौजूदा डेटाबेस और प्रॉक्सी नोड्स को ClusterControl में आयात कर सकते हैं। आप अपने डेटाबेस टोपोलॉजी को टोपोलॉजी टैब में देख सकते हैं।

ProxySQL और Keepalived तैनात करें
ProxySQL, ProxySQL का एक अन्य डेटाबेस प्रॉक्सी है, जो क्वेरी पैटर्न के आधार पर क्वेरी कैशिंग, क्वेरी रीराइट, क्वेरीज़ को लिखने और पढ़ने के लिए विभाजित करने जैसी कुछ सुविधाएँ प्रदान करता है। क्लस्टरकंट्रोल में प्रॉक्सीएसक्यूएल को तैनात करने के लिए, आपको अपने क्लस्टर में मैनेज -> लोड बैलेंसर्स पर जाना होगा। ClusterControl कुछ भिन्न डेटाबेस प्रॉक्सी का समर्थन करता है; HAProxy, ProxySQL, MaxScale.
ProxySQL चुनें, और यह नीचे दिया गया पेज दिखाएगा:


हमें सर्वर पता चुनना होगा जहां ProxySQL स्थापित किया जाएगा। हम या तो मौजूदा नोड्स पर स्थापित कर सकते हैं या यदि आप ProxySQL के लिए एक समर्पित नोड चाहते हैं, तो बस सूची में IP पता टाइप करें। प्रशासन और निगरानी उपयोगकर्ताओं के लिए पासवर्ड भरें, एप्लिकेशन उपयोगकर्ता को ProxySQL में जोड़ें या आप बाद में कॉन्फ़िगर कर सकते हैं। ProxySQL में लोड संतुलन सेट में डेटाबेस सर्वर को शामिल करने के लिए सक्षम करें। ProxySQL तैनात करें बटन पर क्लिक करें। उच्च उपलब्धता के लिए हमारे पास कम से कम 2 ProxySQL होने चाहिए।
यदि हम सेटअप के दौरान ProxySQL में डेटाबेस उपयोगकर्ता जोड़ना भूल जाते हैं, तो हम इसे ProxySQL उपयोगकर्ता टैब में कॉन्फ़िगर कर सकते हैं जैसा कि नीचे दिखाया गया है:

ProxySQL के लिए डेटाबेस उपयोगकर्ताओं को ProxySQL में भी कॉन्फ़िगर करने की आवश्यकता है।
ProxySQL के परिनियोजित होने के बाद, हम प्रत्येक ProxySQL होस्ट पर Keepalived को कॉन्फ़िगर करना जारी रखते हैं। ProxySQL इंस्टेंस में Keepalived सेवाएँ मास्टर/बैकअप भूमिकाओं के रूप में कार्य करेंगी। Keepalived सेवा VIP (वर्चुअल आईपी एड्रेस) का उपयोग करती है, इसलिए एप्लिकेशन मास्टर रोल पर वर्चुअल आईपी एड्रेस से कनेक्ट होगा, और स्थानीय प्रॉक्सीएसक्यूएल से कनेक्शन को अग्रेषित करेगा। यदि सेवाएं विफल हो जाती हैं, तो वीआईपी स्वचालित रूप से दूसरे नोड में चला जाएगा।
ClusterControl में रख-रखाव की तैनाती उसी पृष्ठ पर की जाती है जिस पर डेटाबेस प्रॉक्सी होता है, आपको केवल Keepalived टैब चुनने की आवश्यकता होती है। लोड बैलेंसर प्रकार चुनें, जो कि ProxySQL है, और फिर Keepalived1 और Keepalived2 के लिए वर्तमान ProxySQL जोड़ें। वर्चुअल आईपी एड्रेस और नेटवर्क इंटरफेस भरें। और अंत में, डिप्लॉय कीपलाइव्ड बटन पर क्लिक करें।

दो ProxySQL को Keepalived सेवाओं के साथ चलाने से हमें एक उच्च उपलब्धता प्रॉक्सी परत मिलती है। ClusterControl में, यह नीचे टोपोलॉजी दृश्य में दिखाया गया है:

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