आपके एप्लिकेशन और आपके डेटाबेस के बीच लोड बैलेंसर जोड़ने के विभिन्न कारण हैं। यदि आपके पास उच्च ट्रैफ़िक है (और आप विभिन्न डेटाबेस नोड्स के बीच ट्रैफ़िक को संतुलित करना चाहते हैं) या आप लोड बैलेंसर को एकल समापन बिंदु के रूप में उपयोग करना चाहते हैं (इसलिए विफलता के मामले में, यह लोड बैलेंसर ट्रैफ़िक को भेजने में इस समस्या का सामना करेगा। उपलब्ध/स्वस्थ नोड।) यह भी हो सकता है कि आप अपने डेटाबेस से डेटा लिखने और पढ़ने के लिए विभिन्न बंदरगाहों का उपयोग करना चाहते हैं।
इन सभी मामलों में, एक लोड बैलेंसर आपके लिए उपयोगी होगा, और यदि आपके पास एक मारियाडीबी क्लस्टर है, तो इसके लिए एक विकल्प मैक्सस्केल का उपयोग करना है जो मारियाडीबी डेटाबेस के लिए एक डेटाबेस प्रॉक्सी है।
इस ब्लॉग में, हम आपको दिखाएंगे कि इसे मैन्युअल रूप से कैसे स्थापित और कॉन्फ़िगर किया जाए, और इस कार्य में ClusterControl आपकी कैसे मदद कर सकता है। इस उदाहरण के लिए, हम 1 मास्टर और 1 स्लेव नोड के साथ एक MariaDB प्रतिकृति क्लस्टर और ऑपरेटिंग सिस्टम के रूप में CentOS8 का उपयोग करेंगे।
मैक्सस्केल कैसे स्थापित करें
हम मान लेंगे कि आपके पास अपना मारियाडीबी डेटाबेस है और मैक्सस्केल को स्थापित करने के लिए एक मशीन (आभासी या भौतिक) भी है। हम अनुशंसा करते हैं कि आप किसी भिन्न होस्ट का उपयोग करें, इसलिए मास्टर विफलता के मामले में, MaxScale स्लेव नोड में विफल हो सकता है, अन्यथा, MaxScale कोई कार्रवाई नहीं कर सकता यदि सर्वर जहां चल रहा है वह नीचे चला जाता है।
MaxScale को स्थापित करने के विभिन्न तरीके हैं, इस मामले में, हम MariaDB रिपॉजिटरी का उपयोग करेंगे। इसे MaxScale सर्वर में जोड़ने के लिए, आपको चलाना होगा:
$ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
[info] Repository file successfully written to /etc/yum.repos.d/mariadb.repo
[info] Adding trusted package signing keys...
[info] Successfully added trusted package signing keys
अब, MaxScale पैकेज इंस्टॉल करें:
$ yum install maxscale
अब आपके पास अपना MaxScale नोड स्थापित हो गया है, प्रारंभ करने से पहले, आपको इसे कॉन्फ़िगर करने की आवश्यकता है।
मैक्सस्केल को कैसे कॉन्फ़िगर करें
जैसा कि MaxScale प्रमाणीकरण, निगरानी, और बहुत कुछ जैसे कार्य करता है, आपको कुछ विशिष्ट विशेषाधिकारों के साथ एक डेटाबेस उपयोगकर्ता बनाने की आवश्यकता है:
MariaDB [(none)]> CREATE USER 'maxscaleuser'@'%' IDENTIFIED BY 'maxscalepassword';
MariaDB [(none)]> GRANT SELECT ON mysql.user TO 'maxscaleuser'@'%';
MariaDB [(none)]> GRANT SELECT ON mysql.db TO 'maxscaleuser'@'%';
MariaDB [(none)]> GRANT SELECT ON mysql.tables_priv TO 'maxscaleuser'@'%';
MariaDB [(none)]> GRANT SELECT ON mysql.roles_mapping TO 'maxscaleuser'@'%';
MariaDB [(none)]> GRANT SHOW DATABASES ON *.* TO 'maxscaleuser'@'%';
MariaDB [(none)]> GRANT REPLICATION CLIENT on *.* to 'maxscaleuser'@'%';
ध्यान रखें कि MariaDB संस्करण 10.2.2 से 10.2.10 तक की भी आवश्यकता है:
MariaDB [(none)]> GRANT SELECT ON mysql.* TO 'maxscaleuser'@'%';
अब आपके पास डेटाबेस उपयोगकर्ता तैयार है, आइए कॉन्फ़िगरेशन फ़ाइलें देखें। जब आप MaxScale स्थापित करते हैं, तो फ़ाइल maxscale.cnf /etc/ के अंतर्गत बनाई जाएगी। इसे कॉन्फ़िगर करने के कई चर और विभिन्न तरीके हैं, तो आइए एक उदाहरण देखें:
$ cat /etc/maxscale.cnf
# Global parameters
[maxscale]
threads = auto
log_augmentation = 1
ms_timestamp = 1
syslog = 1
# Server definitions
[server1]
type=server
address=192.168.100.126
port=3306
protocol=MariaDBBackend
[server2]
type=server
address=192.168.100.127
port=3306
protocol=MariaDBBackend
# Monitor for the servers
[MariaDB-Monitor]
type=monitor
module=mariadbmon
servers=server1,server2
user=maxscaleuser
password=maxscalepassword
monitor_interval=2000
# Service definitions
[Read-Only-Service]
type=service
router=readconnroute
servers=server2
user=maxscaleuser
password=maxscalepassword
router_options=slave
[Read-Write-Service]
type=service
router=readwritesplit
servers=server1
user=maxscaleuser
password=maxscalepassword
# Listener definitions for the services
[Read-Only-Listener]
type=listener
service=Read-Only-Service
protocol=MariaDBClient
port=4008
[Read-Write-Listener]
type=listener
service=Read-Write-Service
protocol=MariaDBClient
port=4006
इस कॉन्फ़िगरेशन में, हमारे पास 2 डेटाबेस नोड हैं, 192.168.100.126 (मास्टर) और 192.168.100.127 (स्लेव), जैसा कि आप सर्वर परिभाषा अनुभाग में देख सकते हैं।
हमारे पास 2 अलग-अलग सेवाएं भी हैं, एक केवल-पढ़ने के लिए, जहां स्लेव नोड है, और दूसरी जहां मास्टर नोड है वहां पढ़ने-लिखने के लिए।
आखिरकार, हमारे पास 2 श्रोता हैं, प्रत्येक सेवा के लिए एक। केवल पढ़ने वाला श्रोता, पोर्ट 4008 में सुन रहा है, और पढ़ने-लिखने वाला, पोर्ट 4006 में सुन रहा है।
यह एक बुनियादी विन्यास फाइल है। अगर आपको कुछ और विशिष्ट चाहिए तो आप आधिकारिक मारियाडीबी दस्तावेज का पालन कर सकते हैं।
अब आप इसे शुरू करने के लिए तैयार हैं, तो बस दौड़ें:
$ systemctl start maxscale.service
और इसे जांचें:
$ maxctrl list services
सीमांत बल $ maxctrl list servers
आप यहां एक maxctrl कमांड सूची पा सकते हैं, या आप maxadmin का उपयोग भी कर सकते हैं इसे प्रबंधित करने के लिए।
अब कनेक्शन का परीक्षण करते हैं। इसके लिए, आप MaxScale IP पते और उस पोर्ट का उपयोग करके अपने डेटाबेस तक पहुँचने का प्रयास कर सकते हैं जिसका आप परीक्षण करना चाहते हैं। हमारे मामले में, पोर्ट 4006 पर ट्रैफ़िक सर्वर1 पर भेजा जाना चाहिए, और पोर्ट 4008 पर ट्रैफ़िक सर्वर2 पर भेजा जाना चाहिए।
$ mysql -h 192.168.100.128 -umaxscaleuser -pmaxscalepassword -P4006 -e 'SELECT @@hostname;'
+------------+
| @@hostname |
+------------+
| server1 |
+------------+
$ mysql -h 192.168.100.128 -umaxscaleuser -pmaxscalepassword -P4008 -e 'SELECT @@hostname;'
+------------+
| @@hostname |
+------------+
| server2 |
+------------+
यह काम करता है!
MaxScale को ClusterControl के साथ कैसे परिनियोजित करें
अब देखते हैं, इस कार्य को सरल बनाने के लिए आप ClusterControl का उपयोग कैसे कर सकते हैं। इसके लिए, हम मान लेंगे कि आपका मारियाडीबी क्लस्टर क्लस्टरकंट्रोल में जुड़ गया है।
ClusterControl पर जाएं -> MariaDB क्लस्टर चुनें -> क्लस्टर क्रियाएँ -> लोड बैलेंसर जोड़ें -> MaxScale।
यहां आप एक नया MaxScale नोड परिनियोजित कर सकते हैं या आप एक मौजूदा एक। यदि आप इसे परिनियोजित कर रहे हैं, तो आपको IP पता या होस्टनाम, व्यवस्थापक और उपयोगकर्ता MaxScale क्रेडेंशियल, थ्रेड्स की मात्रा और पोर्ट (केवल लिखने और पढ़ने के लिए) जोड़ने की आवश्यकता है। आप यह भी निर्दिष्ट कर सकते हैं कि आप MaxScale कॉन्फ़िगरेशन में कौन सा डेटाबेस नोड जोड़ना चाहते हैं।
आप क्लस्टर नियंत्रण गतिविधि अनुभाग में कार्य की निगरानी कर सकते हैं। जब यह समाप्त हो जाएगा, तो आपके मारियाडीबी क्लस्टर में एक नया मैक्सस्केल नोड होगा।
और बिना एक्सेस की आवश्यकता के ClusterControl UI से MaxScale कमांड चलाना SSH के माध्यम से सर्वर।
यह मैन्युअल रूप से परिनियोजित करने की तुलना में आसान लगता है, है ना?
निष्कर्ष
यदि आप अपने ट्रैफ़िक को संतुलित या विभाजित करना चाहते हैं, या फ़ेलओवर क्रियाओं के लिए भी लोड बैलेंसर रखना एक अच्छा समाधान है, और MaxScale, एक MariaDB उत्पाद के रूप में, MariaDB डेटाबेस के लिए एक अच्छा विकल्प है।
स्थापना आसान है, लेकिन कॉन्फ़िगरेशन और उपयोग मुश्किल हो सकता है यदि यह आपके लिए कुछ नया है। उस स्थिति में, आप इसे आसान तरीके से परिनियोजित करने, कॉन्फ़िगर करने और प्रबंधित करने के लिए ClusterControl का उपयोग कर सकते हैं।