MariaDB
 sql >> डेटाबेस >  >> RDS >> MariaDB

MariaDB क्लस्टर के लिए maxctrl का उपयोग करके MaxScale प्रशासन का परिचय

मारियाडीबी क्लस्टर में गैलेरा क्लस्टर और मारियाडीबी मैक्सस्केल के साथ मारियाडीबी सर्वर शामिल हैं। मल्टी-मास्टर प्रतिकृति समाधान के रूप में, गैलेरा क्लस्टर वाला कोई भी मारियाडीबी सर्वर प्राथमिक सर्वर के रूप में काम कर सकता है। इसका मतलब यह है कि क्लस्टर में किसी भी नोड में किए गए परिवर्तन, प्रमाणन-आधारित प्रतिकृति और InnoDB स्टोरेज इंजन के लिए लेनदेन के वैश्विक क्रम का उपयोग करते हुए क्लस्टर में हर दूसरे नोड को दोहराते हैं। MariaDB MaxScale एक डेटाबेस प्रॉक्सी है, जो MariaDB सर्वर के शीर्ष पर स्थित है, जो उच्च उपलब्धता, मापनीयता और सुरक्षा का विस्तार करता है, जबकि साथ ही अंतर्निहित डेटाबेस इन्फ्रास्ट्रक्चर से इसे डिकूप करके एप्लिकेशन विकास को सरल बनाता है।

इस ब्लॉग श्रृंखला में, हम अपने MariaDB क्लस्टर के लिए maxctrl का उपयोग करते हुए MaxScale प्रशासन को देखने जा रहे हैं। ब्लॉग श्रृंखला की इस पहली किस्त में, हम maxctrl कमांड-लाइन उपयोगिता के परिचय और कुछ बुनियादी बातों को कवर करने जा रहे हैं। हमारे सेटअप में एक मैक्सस्केल सर्वर और गैलेरा 4 के साथ एक 3-नोड मारियाडीबी 10.4 है, जैसा कि निम्नलिखित आरेख में दिखाया गया है:

हमारे MariaDB क्लस्टर को ClusterControl द्वारा परिनियोजित और प्रबंधित किया गया था, जबकि हमारा MaxScale होस्ट है क्लस्टर में एक नया होस्ट और इस वॉकथ्रू के उद्देश्य के लिए ClusterControl द्वारा तैनात नहीं किया गया था।

मैक्सस्केल इंस्टालेशन

MaxScale इंस्टालेशन बहुत सीधा है। MaxScale के लिए MariaDB डाउनलोड पेज से सही ऑपरेटिंग सिस्टम चुनें और इसे डाउनलोड करें। निम्न उदाहरण दिखाता है कि कोई CentOS 8 होस्ट पर MaxScale कैसे स्थापित करेगा:

$ wget https://dlm.mariadb.com/1067156/MaxScale/2.4.10/centos/8/x86_64/maxscale-2.4.10-1.centos.8.x86_64.rpm
$ yum localinstall maxscale-2.4.10-1.centos.8.x86_64.rpm
$ systemctl enable maxscale
$ systemctl start maxscale

डेमॉन शुरू होने के बाद, डिफ़ॉल्ट रूप से, मैक्सस्केल घटक निम्नलिखित पोर्ट पर चलेंगे:

  • 0.0.0.0:4006 - डिफॉल्ट रीड-राइट स्प्लिटिंग श्रोता।
  • 0.0.0.0:4008 - डिफ़ॉल्ट राउंड-रॉबिन श्रोता।
  • 127.0.0.1:8989 - MaxScale Rest API.

उपरोक्त बंदरगाह परिवर्तनशील हैं। उत्पादन में एक स्टैंडअलोन मैक्सस्केल सर्वर का पोर्ट 3306 पर रीड/राइट स्प्लिट और पोर्ट 3307 पर राउंड-रॉबिन के साथ चलना आम बात है। इस कॉन्फ़िगरेशन को हम इस ब्लॉग पोस्ट में तैनात करने जा रहे हैं।

महत्वपूर्ण फ़ाइलें और निर्देशिका संरचना

एक बार पैकेज इंस्टाल हो जाने पर, आपको निम्नलिखित उपयोगिताएँ/कार्यक्रम प्राप्त होंगे:

  • अधिकतम पैमाने - मैक्सस्केल ही।
  • maxctrl - MaxScale के लिए कमांड-लाइन प्रशासनिक क्लाइंट जो संचार के लिए MaxScale REST API का उपयोग करता है।
  • अधिकतम व्यवस्थापक - पदावनत MaxScale प्रशासनिक और मॉनिटर क्लाइंट। इसके बजाय maxctrl का उपयोग करें।
  • अधिकतम कुंजी - यह उपयोगिता फ़ाइल .secrets में, निर्दिष्ट निर्देशिका में, AES एन्क्रिप्शन कुंजी और init वेक्टर में लिखती है, जिसका उपयोग उपयोगिता maxpasswd द्वारा किया जाता है, जब MariaDB MaxScale कॉन्फ़िगरेशन फ़ाइल में उपयोग किए गए पासवर्ड को एन्क्रिप्ट करते हैं।
  • अधिकतमपासवार्ड - यह उपयोगिता एक .secrets फ़ाइल का उपयोग करके एक एन्क्रिप्टेड पासवर्ड बनाती है जिसे पहले maxkeys का उपयोग करके बनाया गया है।

MaxScale निम्नलिखित स्थानों से सभी कॉन्फ़िगरेशन विकल्पों को विशेष क्रम में लोड करेगा:

  1. /etc/maxscale.cnf
  2. /etc/maxscale.cnf.d/*.cnf
  3. /var/lib/maxscale/maxscale.cnf.d/*.cnf

MaxScale कॉन्फ़िगरेशन को और समझने के लिए, MaxScale कॉन्फ़िगरेशन मार्गदर्शिका देखें।

एक बार MaxScale प्रारंभ हो जाने के बाद, डिफ़ॉल्ट फ़ाइलें और निर्देशिका संरचनाएं हैं:

  • MaxScale डेटा निर्देशिका:/var/lib/maxscale
  • MaxScale PID फ़ाइल:/var/run/maxscale/maxscale.pid
  • MaxScale लॉग फ़ाइल:/var/log/maxscale/maxscale.log
  • MaxScale दस्तावेज़ीकरण:/usr/share/maxscale

MaxCtrl - CLI

एक बार शुरू करने के बाद, हम लोकलहोस्ट पर पोर्ट 8989 पर MaxScale REST API का उपयोग करके MaxScale को प्रशासित करने के लिए MaxCtrl कमांड-लाइन क्लाइंट का उपयोग कर सकते हैं। REST API के लिए डिफ़ॉल्ट क्रेडेंशियल "व्यवस्थापक:mariadb" हैं। REST API द्वारा उपयोग किए जाने वाले उपयोगकर्ता वही हैं जो MaxAdmin नेटवर्क इंटरफ़ेस द्वारा उपयोग किए जाते हैं। इसका मतलब है कि MaxAdmin नेटवर्क इंटरफ़ेस के लिए बनाए गए किसी भी उपयोगकर्ता को MaxScale REST API और MaxCtrl के साथ काम करना चाहिए।

हम mysql क्लाइंट के समान इंटरैक्टिव मोड में maxctrl उपयोगिता का उपयोग कर सकते हैं। बस "maxctrl" टाइप करें और आप इंटरेक्टिव मोड में पहुंच जाएंगे (जहां प्रॉम्प्ट शेल प्रॉम्प्ट से मैक्सक्टल प्रॉम्प्ट में बदल गया है), बिल्कुल निम्न स्क्रीनशॉट की तरह:

वैकल्पिक रूप से, हम उसी कमांड को सीधे शेल प्रॉम्प्ट में निष्पादित कर सकते हैं, उदाहरण के लिए:

MaxCtrl कमांड विकल्प इसके साथ आने वाले MaxScale संस्करण पर निर्भर करते हैं। इस लेखन के समय, मैक्सस्केल संस्करण 2.4 है और आपको आदेशों की पूरी सूची के लिए इस दस्तावेज़ीकरण को देखना चाहिए। MaxCtrl MaxScale REST API इंटरफ़ेस का उपयोग करता है, जो यहाँ विस्तार से बताता है।

MaxScale में MariaDB सर्वर जोड़ना

जब हम पहली बार अपना MaxScale प्रारंभ करते हैं, तो यह कुछ डिफ़ॉल्ट पैरामीटर और उदाहरणों के साथ /etc/maxscale.cnf पर एक कॉन्फ़िगरेशन फ़ाइल जनरेट करेगा। हम इस कॉन्फ़िगरेशन का उपयोग नहीं करने जा रहे हैं और हम इसके बजाय अपना स्वयं का निर्माण करने जा रहे हैं। इस फ़ाइल का बैकअप बनाएँ क्योंकि हम इसे बाद में खाली करना चाहते हैं:

$ mv /etc/maxscale.cnf /etc/maxscale.cnf.bak
$ cat /dev/null > /etc/maxscale.cnf # empty the file

सब कुछ नए सिरे से शुरू करने के लिए MaxScale को पुनरारंभ करें:

$ systemctl restart maxscale

मैक्सस्केल में "सर्वर" शब्द मूल रूप से बैकएंड मारियाडीबी सर्वर का अर्थ है, जैसा कि इस मामले में, हमारे मारियाडीबी क्लस्टर के सभी 3 नोड्स हैं। MaxScale रनटाइम में सभी 3 MariaDB क्लस्टर सर्वर जोड़ने के लिए, निम्न कमांड का उपयोग करें:

$ maxctrl create server mariadbgalera1 192.168.0.221 3306
$ maxctrl create server mariadbgalera2 192.168.0.222 3306
$ maxctrl create server mariadbgalera3 192.168.0.222 3306

जोड़े गए सर्वरों को सत्यापित करने के लिए, सूची कमांड का उपयोग करें:

$ maxctrl list servers

और आपको निम्न आउटपुट देखना चाहिए:

MaxScale में मॉनिटरिंग जोड़ना

अगली बात MaxScale उपयोग के लिए निगरानी सेवा को कॉन्फ़िगर करना है। MaxScale डेटाबेस प्रकार के आधार पर कई निगरानी मॉड्यूल का समर्थन करता है, अर्थात्:

  • MariaDB मॉनिटर
  • गैलेरा मॉनिटर
  • क्लस्ट्रिक्स मॉनिटर
  • ColumnStore Monitor
  • अरोड़ा मॉनिटर

इस सेटअप में, हम "गैलेरामोन" नामक गैलेरा मॉनिटर मॉड्यूल का उपयोग करने जा रहे हैं। सबसे पहले, हमें एक डेटाबेस उपयोगकर्ता बनाने की आवश्यकता है जिसका उपयोग मैक्सस्केल द्वारा मारियाडीबी क्लस्टर में किसी एक सर्वर पर किया जाएगा। इस उदाहरण में हमने निम्नलिखित कथनों को चलाने के लिए mariadbgalera1, 192.168.0.221 को चुना:

MariaDB> CREATE USER [email protected]'192.168.0.220' IDENTIFIED BY 'MaXSc4LeP4ss';
MariaDB> GRANT SELECT ON mysql.* TO 'maxscale_monitor'@'192.168.0.220';
MariaDB> GRANT SHOW DATABASES ON *.* TO 'maxscale_monitor'@'192.168.0.220';

जहां 192.168.0.220 हमारे मैक्सस्केल सर्वर का आईपी पता है।

maxscale_monitor उपयोगकर्ता पासवर्ड को सादे पाठ में संग्रहीत करना सुरक्षित नहीं है। इसके बजाय पासवर्ड को एन्क्रिप्टेड प्रारूप में संग्रहीत करने की अत्यधिक अनुशंसा की जाती है। इसे प्राप्त करने के लिए, हमें विशेष रूप से इस मैक्सस्केल उदाहरण के लिए एक गुप्त कुंजी उत्पन्न करने की आवश्यकता है। एन्क्रिप्शन और डिक्रिप्शन उद्देश्यों के लिए MaxScale द्वारा उपयोग की जाने वाली गुप्त कुंजी उत्पन्न करने के लिए "maxkeys" उपयोगिता का उपयोग करें:

$ maxkeys
Generating .secrets file in /var/lib/maxscale.

अब हम अपने पासवर्ड का एन्क्रिप्टेड मान उत्पन्न करने के लिए maxpasswd उपयोगिता का उपयोग कर सकते हैं:

$ maxpasswd MaXSc4LeP4ss
D91DB5813F7C815B351CCF7D7F1ED6DB

MaxScale के अंदर अपने मॉनिटरिंग यूजर क्रेडेंशियल्स को स्टोर करते समय हम इसके बजाय हमेशा उपरोक्त मान का उपयोग करेंगे। अब हम मैक्सस्केल का उपयोग करके गैलेरा मॉनिटरिंग सर्विस को मैक्सस्केल में जोड़ने के लिए तैयार हैं:

maxctrl> create monitor galera_monitor galeramon servers=mariadbgalera1,mariadbgalera2,mariadbgalera3 user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB

निम्न आदेश के साथ सत्यापित करें:

MaxScale में सेवाएं जोड़ना

सेवा मूल रूप से यह है कि मैक्सस्केल को बैकएंड सर्वर पर प्रश्नों को कैसे रूट करना चाहिए। MaxScale 2.4 कई सेवाओं (या राउटर) का समर्थन करता है, अर्थात्:

  • एव्रोराउटर
  • Binlogrouter
  • बिल्ली
  • CLI
  • HintRouter
  • रीडकॉनरूट
  • रीडराइटस्प्लिट
  • स्कीमा राउटर
  • SmartRouter

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

राउंड-रॉबिन (या मल्टी-मास्टर) के लिए रूटिंग सेवा बनाएँ:

maxctrl> create service Round-Robin-Service readconnroute user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB --servers mariadbgalera1 mariadbgalera2 mariadbgalera3

रीड-राइट स्प्लिटिंग (या सिंगल-मास्टर) के लिए एक और रूटिंग सर्विस बनाएं:

maxctrl> create service Read-Write-Service readwritesplit user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB --servers mariadbgalera1 mariadbgalera2 mariadbgalera3

इससे सत्यापित करें:

MaxCtrl द्वारा सफलतापूर्वक बनाए गए सभी घटक / के अंतर्गत अपनी स्वयं की कॉन्फ़िगरेशन फ़ाइल जेनरेट करेंगे var/lib/maxscale/maxscale.cnf.d. इस बिंदु पर, निर्देशिका इस तरह दिखती है:

$ ls -l /var/lib/maxscale/maxscale.cnf.d
total 24
-rw-r--r--. 1 maxscale maxscale  532 Jul  5 13:18 galera_monitor.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera1.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera2.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:56 mariadbgalera3.cnf
-rw-r--r--. 1 maxscale maxscale 1128 Jul  5 16:01 Read-Write-Service.cnf
-rw-r--r--. 1 maxscale maxscale  477 Jul  5 16:00 Round-Robin-Service.cnf

श्रोताओं को MaxScale में जोड़ना

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

maxctrl> create listener Read-Write-Service Read-Write-Listener 3306 --interface=0.0.0.0 --authenticator=MariaDBAuth
maxctrl> create listener Round-Robin-Service Round-Robin-Listener 3307 --interface=0.0.0.0 --authenticator=MariaDBAuth

निम्न आदेशों के साथ सत्यापित करें:

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

फिर से, जब maxctrl के माध्यम से कॉन्फ़िगरेशन विकल्प बदलते हैं, तो सभी सफलतापूर्वक बनाए गए घटकों की अपनी कॉन्फ़िगरेशन फ़ाइल /var/lib/maxscale/maxscale.cnf.d के अंदर होगी, जैसा कि निम्न आउटपुट में दिखाया गया है:

$ ls -l /var/lib/maxscale/maxscale.cnf.d
-rw-r--r--. 1 maxscale maxscale  532 Jul  5 13:18 galera_monitor.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera1.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera2.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:56 mariadbgalera3.cnf
-rw-r--r--. 1 maxscale maxscale  259 Jul  5 16:06 Read-Write-Listener.cnf
-rw-r--r--. 1 maxscale maxscale 1128 Jul  5 16:06 Read-Write-Service.cnf
-rw-r--r--. 1 maxscale maxscale  261 Jul  5 16:06 Round-Robin-Listener.cnf
-rw-r--r--. 1 maxscale maxscale  477 Jul  5 16:06 Round-Robin-Service.cnf

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

अगले एपिसोड में, हम अपने MariaDB क्लस्टर के लिए MaxCtrl के प्रबंधन और निगरानी आदेशों पर गौर करेंगे।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मारियाडीबी डे () समझाया गया

  2. मारियाडीबी में ADD_MONTHS () कैसे काम करता है

  3. ClusterControl 1.7 . के साथ एजेंट-आधारित डेटाबेस मॉनिटरिंग का परिचय

  4. मारियाडीबी एलटीआरआईएम () बनाम एलटीआरआईएम_ओआरएसीएलई ():क्या अंतर है?

  5. SQL फ़ायरवॉल को ClusterControl और ProxySQL के साथ आसान बनाया गया है