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

क्लाउड में डेटाबेस लोड बैलेंसिंग - ProxySQL 2.0 के साथ MySQL मास्टर फ़ेलओवर:भाग एक (परिनियोजन)

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

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

प्रारंभिक क्लाउड सेटअप

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

नीचे दिए गए चित्र में परिवेश ऐसा दिखाई देगा:

एप्लिकेशन के रूप में, हम Sysbench - MySQL के लिए एक सिंथेटिक बेंचमार्क प्रोग्राम का उपयोग करेंगे। . इसमें लेन-देन के उपयोग को अक्षम और सक्षम करने का एक विकल्प है, जिसका उपयोग हम यह प्रदर्शित करने के लिए करेंगे कि ProxySQL उन्हें कैसे संभालता है।

ClusterControl का उपयोग करके एक MySQL प्रतिकृति क्लस्टर स्थापित करना

परिनियोजन को तेज और कुशल बनाने के लिए, हम अपने लिए MySQL प्रतिकृति सेटअप को परिनियोजित करने के लिए ClusterControl का उपयोग करने जा रहे हैं। ClusterControl की स्थापना के लिए केवल कुछ चरणों की आवश्यकता होती है। हम यहां विवरण में नहीं जाएंगे, लेकिन आपको हमारी वेबसाइट खोलनी चाहिए, पंजीकरण करना चाहिए और क्लस्टर कंट्रोल की स्थापना बहुत सीधी होनी चाहिए। कृपया ध्यान रखें कि आपको ClusterControl इंस्टेंस और उन सभी नोड्स के बीच पासवर्ड रहित SSH सेटअप करने की आवश्यकता है जिन्हें हम इसके साथ प्रबंधित करेंगे।

एक बार ClusterControl स्थापित हो जाने के बाद, आप लॉग इन कर सकते हैं। आपको एक परिनियोजन विज़ार्ड के साथ प्रस्तुत किया जाएगा:

चूंकि हमारे पास पहले से ही क्लाउड में इंस्टेंस चल रहे हैं, इसलिए हम इसके साथ जाएंगे "तैनाती" विकल्प। हमें निम्नलिखित स्क्रीन के साथ प्रस्तुत किया जाएगा:

हम क्लस्टर प्रकार के रूप में MySQL प्रतिकृति को चुनेंगे और हमें कनेक्टिविटी प्रदान करने की आवश्यकता है विवरण। यह रूट उपयोगकर्ता का उपयोग करके कनेक्शन हो सकता है या यह पासवर्ड के साथ या बिना सूडो उपयोगकर्ता भी हो सकता है।

अगले चरण में, हमें कुछ निर्णय लेने हैं। हम इसके नवीनतम संस्करण में MySQL के लिए Percona Server का उपयोग करेंगे। हमें उस नोड पर रूट उपयोगकर्ता के लिए एक पासवर्ड भी परिभाषित करना होगा जिसे हम तैनात करेंगे।

अंतिम चरण में हमें एक टोपोलॉजी को परिभाषित करना होगा - हम साथ जाएंगे हमने शुरुआत में क्या प्रस्तावित किया - एक स्वामी और तीन दास।

ClusterControl परिनियोजन शुरू करेगा - हम इसे गतिविधि टैब में ट्रैक कर सकते हैं, जैसा कि ऊपर स्क्रीनशॉट में दिखाया गया है।

एक बार परिनियोजन पूरा हो जाने के बाद, हम क्लस्टर सूची में क्लस्टर देख सकते हैं:

ClusterControl का उपयोग करके ProxySQL 2.0 संस्थापित करना

अगला चरण ProxySQL को परिनियोजित करना होगा। ClusterControl हमारे लिए यह कर सकता है।

हम इसे मैनेज -> लोड बैलेंसर में कर सकते हैं।

चूंकि हम केवल चीजों का परीक्षण कर रहे हैं, हम ClusterControl इंस्टेंस का पुन:उपयोग करने जा रहे हैं ProxySQL और Sysbench के लिए। वास्तविक जीवन में आप शायद अपने "वास्तविक" एप्लिकेशन सर्वर का उपयोग करना चाहेंगे। यदि आप इसे ड्रॉप डाउन में नहीं ढूंढ पा रहे हैं, तो आप हमेशा सर्वर पता (आईपी या होस्टनाम) हाथ से लिख सकते हैं।

हम निगरानी और प्रशासनिक उपयोगकर्ता के लिए क्रेडेंशियल भी परिभाषित करना चाहते हैं। हमने यह भी दोबारा जांचा है कि ProxySQL 2.0 परिनियोजित किया जाएगा (यदि आपको आवश्यकता हो तो आप इसे हमेशा 1.4.x में बदल सकते हैं)।

विज़ार्ड के निचले हिस्से पर हम उपयोगकर्ता को परिभाषित करेंगे जो होगा MySQL और ProxySQL दोनों में बनाया गया है। यदि आपके पास कोई मौजूदा एप्लिकेशन है, तो आप शायद किसी मौजूदा उपयोगकर्ता का उपयोग करना चाहते हैं। यदि आप अपने एप्लिकेशन के लिए कई उपयोगकर्ताओं का उपयोग करते हैं, तो ProxySQL के परिनियोजित होने के बाद आप उनमें से बाकी को बाद में हमेशा आयात कर सकते हैं।

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

स्थापना पूर्ण होने पर, ProxySQL नोड्स की सूची में दिखाई देगा क्लस्टर में। जैसा कि आप ऊपर दिए गए स्क्रीनशॉट में देख सकते हैं, इसने पहले से ही टोपोलॉजी का पता लगा लिया है और पाठक और लेखक होस्टग्रुप में नोड्स वितरित कर चुका है।

सिसबेंच स्थापित करना

अंतिम चरण Sysbench इंस्टॉल करके हमारा "एप्लिकेशन" बनाना होगा। प्रक्रिया काफी सरल है। सबसे पहले हमें Sysbench को संकलित करने के लिए आवश्यक पूर्वापेक्षाएँ, पुस्तकालय और उपकरण स्थापित करने होंगे:

[email protected]:~# apt install git automake libtool make libssl-dev pkg-config libmysqlclient-dev

फिर हम sysbench रिपॉजिटरी को क्लोन करना चाहते हैं:

[email protected]:~# git clone https://github.com/akopytov/sysbench.git

आखिरकार हम Sysbench को संकलित और स्थापित करना चाहते हैं:

[email protected]:~# cd sysbench/

[email protected]:~/sysbench# ./autogen.sh && ./configure && make && make install

बस इतना ही, Sysbench इंस्टॉल हो गया है। अब हमें कुछ डेटा जेनरेट करने की जरूरत है। उसके लिए, सबसे पहले, हमें एक स्कीमा बनाने की आवश्यकता है। हम स्थानीय ProxySQL से जुड़ेंगे और इसके माध्यम से हम मास्टर पर एक 'sbtest' स्कीमा बनाएंगे। कृपया ध्यान दें कि हमने ProxySQL के कनेक्शन के लिए यूनिक्स सॉकेट का उपयोग किया है।

[email protected]:~/sysbench# mysql -S /tmp/proxysql.sock -u sbtest -psbtest

mysql> CREATE DATABASE sbtest;

Query OK, 1 row affected (0.01 sec)

अब हम डेटा के साथ डेटाबेस को पॉप्युलेट करने के लिए sysbench का उपयोग कर सकते हैं। फिर से, हम प्रॉक्सी के साथ कनेक्शन के लिए यूनिक्स सॉकेट का उपयोग करते हैं:

[email protected]:~# sysbench /root/sysbench/src/lua/oltp_read_write.lua --threads=4 --events=0 --time=3600 --mysql-socket=/tmp/proxysql.sock --mysql-user=sbtest --mysql-password=sbtest --tables=32 --report-interval=1 --skip-trx=on --table-size=100000 --db-ps-mode=disable prepare

डेटा तैयार होने के बाद, हम अपने परीक्षण के लिए आगे बढ़ सकते हैं।

निष्कर्ष

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. #1139 - regexp . से त्रुटि 'पुनरावृत्ति-संचालक संकार्य अमान्य' मिला

  2. डेटाबेस बनाम फाइल सिस्टम में फाइलों को स्टोर करना

  3. एक अजगर MySQLDB खंड में उपयोग के लिए एक सूची को फंसाना

  4. आपके MySQL स्रोत-प्रतिकृति सर्वर के लिए महत्वपूर्ण स्वास्थ्य जांच

  5. SQL सर्वर के लिए MySQL LIMIT क्लॉज समतुल्य