हमारे पिछले ब्लॉग में, हमने दो अलग-अलग पोस्ट में Krzysztof Ksiazek द्वारा लिखित वितरित डेटाबेस उच्च उपलब्धता के लिए ClusterControl CMON HA पर चर्चा की है। इस ब्लॉग में, हम ऑन-प्रिमाइसेस और सार्वजनिक क्लाउड (Google क्लाउड प्लेटफ़ॉर्म (GCP) का उपयोग करके) के माध्यम से नोड्स के वितरण को कवर करेंगे।
इस ब्लॉग को लिखने का कारण यह है कि हमें इस बारे में प्रश्न प्राप्त हुए हैं कि क्लस्टरकंट्रोल के उच्च उपलब्धता इंस्टेंस को कैसे कार्यान्वित किया जाए, जिसमें सीएमओएन नोड (एस) समय-समय पर चल रहे हों और एक अन्य सीएमओएन नोड एक पर चल रहे हों। विभिन्न डेटा केंद्र (जैसे सार्वजनिक क्लाउड)। हमारे पिछले ब्लॉग ClusterControl CMON HA में वितरित डेटाबेस उच्च उपलब्धता के लिए, हम Galera क्लस्टर नोड्स का उपयोग कर रहे थे, लेकिन इस बार हम Percona Server 5.7 का उपयोग करके MySQL प्रतिकृति का उपयोग करेंगे। इसके लिए एक आदर्श सेटअप है कि आप अपने ऑन-प्रिमाइसेस और सार्वजनिक क्लाउड में रहने वाले आपके नोड्स के संचार को वीपीएन या एक सुरक्षित चैनल के माध्यम से हमेशा एनकैप्सुलेट करें।
ClusterControl CMON HA अभी शुरुआती चरण में है, जिसके लिए हमारा मानना है कि यह अभी पर्याप्त परिपक्व नहीं हुआ है। फिर भी, हमारा CMON HA आपको ClusterControl को अत्यधिक उपलब्ध कराने के लिए परिनियोजित करने के लिए कार्यक्षमता की भावना प्रदान करने में सक्षम है। आइए आगे बढ़ते हैं कि आप सार्वजनिक क्लाउड के माध्यम से ऑन-प्रिमाइसेस के माध्यम से नोड्स को कैसे परिनियोजित और सेटअप कर सकते हैं।
सीएमओएन क्या है?
मुख्य विषय पर जाने से पहले, आइए हम आपको परिचित कराते हैं कि CMON क्या है। CMON का मतलब ClusterControl Controller है, जो ClusterControl का "प्राथमिक मस्तिष्क" है। एक बैकएंड सेवा जो स्वचालन, प्रबंधन, शेड्यूलिंग कार्यों की निगरानी, और HA उपलब्धता भी करती है। एकत्र किए गए डेटा को CMON डेटाबेस में संग्रहीत किया जाता है, जिसके लिए हम डेटास्टोर के रूप में MySQL संगत डेटाबेस का उपयोग कर रहे हैं।
वास्तुकला सेटअप
आप में से कुछ लोगों को ClusterControl की क्षमताओं के बारे में पता नहीं हो सकता है कि यह प्रदर्शन कर सकता है और उच्च उपलब्धता के लिए स्थापित किया जा सकता है। यदि आपके पास एकाधिक क्लस्टर कंट्रोल (या सीएमओएन) नोड्स चल रहे हैं, तो यह बिना किसी कीमत के संभव है। जब भी आपको आवश्यकता हो, आप ढेर सारे ClusterControl नोड्स चलाने में सक्षम हो सकते हैं।
इस सेटअप के लिए, हमारे पास ClusterControl के शीर्ष पर ClusterControl नोड्स होंगे ताकि डेटाबेस नोड्स को बनाया या तैनात किया जा सके और जब भी कोई विफलता होती है, तो ऑटो फेलओवर का प्रबंधन करें, उदाहरण के लिए। हालांकि आप ऑटो-फेलओवर को प्रबंधित करने के लिए एमएचए, ऑर्केस्ट्रेटर या मैक्सस्केल का उपयोग कर सकते हैं, लेकिन दक्षता और गति के लिए, मैं उन विशेष चीजों को करने के लिए क्लस्टरकंट्रोल का उपयोग करूंगा जिनका मैंने उल्लेख किया है कि मेरे पास अन्य टूल्स नहीं हैं।
तो आइए इस सेटअप के आरेख पर एक नज़र डालते हैं:
उस आरेख पर आधारित सेटअप से पता चलता है कि तीन-नोड CMON के शीर्ष पर , एक चल रहा CMON (ClusterControl) उनमें से सबसे ऊपर है जो स्वचालित विफलता की निगरानी करेगा। फिर, HAProxy मॉनिटर किए गए तीन CMON नोड्स के बीच संतुलन लोड करने में सक्षम होगा, जिसमें एक नोड इस ब्लॉग के लिए GCP में होस्ट किए गए एक अलग क्षेत्र में स्थित है। आपने देखा होगा कि हमने Keepalived को शामिल नहीं किया है, ऐसा इसलिए है क्योंकि हम किसी VIP को GCP के अंतर्गत नहीं रख सकते क्योंकि यह किसी भिन्न नेटवर्क पर है।
जैसा कि आपने देखा होगा, हम कुल तीन नोड रखते हैं। CMON HA की आवश्यकता है कि मतदान प्रक्रिया या तथाकथित कोरम को आगे बढ़ाने के लिए हमें कम से कम 3 नोड्स की आवश्यकता है। इसलिए इस सेटअप के लिए, हम चाहते हैं कि उच्च उपलब्धता के लिए आपके पास कम से कम 3 नोड हों।
एक ऑन-प्रिमाइसेस ClusterControl Nodes परिनियोजित करना
इस खंड में, हम उम्मीद करते हैं कि आपने पहले ही अपना ClusterControl UI सेटअप या स्थापित कर लिया है जिसका उपयोग हम Percona सर्वर का उपयोग करके तीन नोड वाले MySQL प्रतिकृति क्लस्टर को परिनियोजित करने के लिए करेंगे।
आइए पहले एक नया MySQL प्रतिकृति परिनियोजित करके क्लस्टर बनाएं जैसा कि नीचे दिखाया गया है।
ध्यान दें कि मैं यहां परकोना सर्वर 5.7 का उपयोग कर रहा हूं, जिसके लिए डिफ़ॉल्ट ClusterControl द्वारा सेटअप कुशलता से काम करता है।
फिर अपने नोड्स के होस्टनाम या आईपी को परिभाषित करें,
इस समय, हम उम्मीद करते हैं कि आपने पहले ही दो नोड सेट कर लिए हैं। मास्टर/स्लेव प्रतिकृति जो होस्ट की जाती है या ऑन-प्रिमाइसेस चल रही है। नीचे दिए गए स्क्रीनशॉट से पता चलेगा कि आपके नोड कैसे दिखाई देंगे:
ClusterControl को सेटअप और इंस्टॉल करें और पहले नोड पर CMON HA को सक्षम करें
इस पिछले ब्लॉग से वितरित डेटाबेस उच्च उपलब्धता के लिए क्लस्टरकंट्रोल CMON HA, हमने इसे करने के तरीके के बारे में संक्षेप में बताया है। आइए फिर से नीचे जाएं और बताए गए चरणों को करें लेकिन इस विशेष मास्टर/स्लेव प्रतिकृति सेटअप के लिए।
सबसे पहले, एक नोड चुनें जिसे आप पहले ClusterControl स्थापित करना चाहते हैं (इस सेटअप पर, मैं पहले 192.168.70.80 नोड पर स्थापित करता हूं) और नीचे दिए गए चरणों का पालन करें।
एक कदम
ClusterControl स्थापित करें
$ wget http://www.severalnines.com/downloads/CMON/install-cc
$ chmod +x install-cc
$ sudo ./install-cc # omit sudo if you run as root
ध्यान दें कि एक बार जब आपको संकेत दिया जाए कि एक वर्तमान mysql उदाहरण का पता चला है, तो आपको ClusterControl को मौजूदा mysqld का उपयोग करने देना होगा क्योंकि यह CMON HA के लिए और इस सेटअप का उपयोग करने के लिए हमारे लक्ष्यों में से एक है। पहले से ही MySQL सेटअप कर लिया है।
दूसरा चरण
सीएमओएन को न केवल लोकलहोस्ट के माध्यम से अनुमति देने के लिए, बल्कि विशिष्ट आईपी पते पर भी बांधें (क्योंकि हम एचए को सक्षम करेंगे)
## edit /etc/default/CMON and modify the line just like below or add the line if it doesn't exist
RPC_BIND_ADDRESSES="127.0.0.1,192.168.70.80"
तीसरा चरण
फिर CMON को फिर से शुरू करें,
service CMON restart
चरण चार
s9s CLI टूल इंस्टॉल करें
$ wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
$ chmod 755 install-s9s-tools.sh
$ ./install-s9s-tools.sh
इस स्थापना के दौरान, s9s टूल एक व्यवस्थापक उपयोगकर्ता को सेटअप करेगा जिसके लिए आप s9s कमांड के साथ काम करते समय उपयोग कर सकते हैं, ठीक उसी तरह जैसे CMON HA को सक्षम करना।
पांचवां चरण
CMON HA सक्षम करें
$ s9s controller --enable-CMON-ha
छठा चरण
अंत में, /etc/my.cnf को संशोधित करें और जोड़ें,
slave-skip-errors = 1062
[mysqld] अनुभाग के अंतर्गत। एक बार जोड़ने के बाद, mysql को इस रूप में पुनः आरंभ करना न भूलें,
service mysql restart
या
systemctl restart mysql
वर्तमान में, यह वह सीमा है जिसका सामना हम CMON HA के साथ कर रहे हैं क्योंकि यह स्लेव में लॉग प्रविष्टियाँ सम्मिलित करने का प्रयास करता है लेकिन यह अभी के लिए ठीक हो सकता है।
सेटअप करें, ClusterControl स्थापित करें और दूसरे नोड पर CMON HA सक्षम करें
पहले नोड के समान सरल। अब, दूसरे नोड (192.168.70.70) पर, हमें वही चरण करने की आवश्यकता है, लेकिन इसके बजाय हमें इसे संभव बनाने के लिए चरणों में कुछ समायोजन करने की आवश्यकता है।
एक कदम
कॉन्फ़िगरेशन को पहले नोड (192.168.70.80) से दूसरे नोड (192.168.70.70) में कॉपी करें
$ scp -r /etc/CMON* 192.168.70.70:/etc/
दूसरा चरण
दूसरे नोड में, /etc/CMON.cnf संपादित करें और सुनिश्चित करें कि होस्ट सही ढंग से कॉन्फ़िगर किया गया है। उदा.
vi /etc/CMON.cnf
फिर होस्टनाम परम को इस रूप में असाइन करें,
होस्टनाम=192.168.70.70
तीसरा चरण
ClusterControl स्थापित करें,
$ wget http://www.severalnines.com/downloads/CMON/install-cc
$ chmod +x install-cc
$ sudo ./install-cc # omit sudo if you run as root
हालांकि, इस लाइन का सामना करने के बाद, CMON (या ClusterControl Controller) की स्थापना को छोड़ दें,
=> An existing Controller installation detected!
=> A re-installation of the Controller will overwrite the /etc/CMON.cnf file
=> Install the Controller? (y/N):
बाकी, वही करें जो आपने पहले नोड पर किया है जैसे होस्टनाम सेट करना, मौजूदा mysqld रनिंग इंस्टेंस का उपयोग करना, MySQL पासवर्ड प्रदान करना, और आपके सीएमओएन के लिए पासवर्ड जो होना चाहिए दोनों के पास पहले नोड के साथ एक ही पासवर्ड है।
चरण चार
s9s CLI टूल इंस्टॉल करें
$ wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
$ chmod 755 install-s9s-tools.sh
$ ./install-s9s-tools.sh
पांचवां चरण
शेष कॉन्फ़िगरेशन को पहले नोड से दूसरे नोड में कॉपी करें।
$ scp -r ~/.s9s/ 192.168.70.70:/root/
$ scp /etc/s9s.conf 192.168.70.70:/etc/
$ scp /var/www/html/clustercontrol/bootstrap.php 192.168.70.70:/var/www/html/clustercontrol/
छठा चरण
क्लस्टरकंट्रोल-कंट्रोलर पैकेज स्थापित करें,
उबंटू/डेबियन के लिए,
$ apt install -y clustercontrol-controller
आरएचईएल/सेंटोस/फेडोरा के लिए,
$ yum install -y clustercontrol-controller
सातवां चरण
/etc/default/CMON फ़ाइल की प्रतिलिपि बनाएँ और RPC बाइंड पते के लिए IP पता संशोधित करें
scp /etc/default/CMON 192.168.70.70:/etc/default
RPC_BIND_ADDRESSES="127.0.0.1,10.0.0.103"
फिर सीएमओएन को इस प्रकार पुनः आरंभ करें,
service CMON restart
आठवां चरण
/etc/my.cnf को संशोधित करें और जोड़ें,
slave-skip-errors = 1062
[mysqld] अनुभाग के अंतर्गत। एक बार जोड़ने के बाद, mysql को इस रूप में पुनः आरंभ करना न भूलें,
service mysql restart
या
systemctl restart mysql
वर्तमान में, यह वह सीमा है जिसका सामना हम CMON HA के साथ कर रहे हैं क्योंकि यह स्लेव में लॉग प्रविष्टियाँ सम्मिलित करने का प्रयास करता है लेकिन यह अभी के लिए ठीक हो सकता है।
नौवां चरण
आखिरकार, जांचें कि CMON HA नोड कैसे दिखते हैं,
[[email protected] ~]# s9s controller --list --long
S VERSION OWNER GROUP NAME IP PORT COMMENT
l 1.7.5.3735 system admins 192.168.70.80 192.168.70.80 9501 Acting as leader.
f 1.7.5.3735 system admins 192.168.70.70 192.168.70.70 9501 Accepting heartbeats.
Total: 2 controller(s)
क्लाउड में अपना ClusterControl नोड परिनियोजित करना
जैसा कि हमने पहले उल्लेख किया है, संचार के लिए आदर्श सेटअप वीपीएन या सुरक्षित चैनल के अन्य माध्यमों पर पैकेट को इनकैप्सुलेट करना है। यदि आपको यह कैसे करना है, इसके बारे में चिंता है, तो हमारे पिछले ब्लॉग मल्टी-डीसी पोस्टग्रेएसक्यूएल देखें:एक वीपीएन पर एक अलग भू-स्थान पर एक स्टैंडबाय नोड सेट करना जिसके लिए हमने निपटाया है कि आप ओपनवीपीएन का उपयोग करके एक साधारण वीपीएन सेटअप कैसे बना सकते हैं।
इसलिए इस खंड में, हम उम्मीद करते हैं कि आपने पहले ही वीपीएन कनेक्शन स्थापित कर लिया है। अब, हम जो करने जा रहे हैं वह एक दास को जोड़ना है जिसे हम Google क्लाउड प्लेटफ़ॉर्म में CMON की उपलब्धता को वितरित करने वाले हैं। ऐसा करने के लिए, बस प्रतिकृति दास जोड़ें पर जाएं जो दाएं कोने के पास क्लस्टर आइकन पर क्लिक करके पाया जा सकता है। नीचे देखें कि यह कैसा दिखता है:
अब, हम इस तरह से समाप्त करेंगे:
अब, चूंकि हमारे पास एक नया स्लेव जोड़ा गया है जो GCP के अंतर्गत होस्ट किया गया है, आपको दूसरे नोड पर पहले किए गए कार्यों पर फिर से पालन करने की आवश्यकता हो सकती है। मैं आपको उन चरणों का पालन करने और दूसरे नोड पर हमने कैसे किया, इस पर निर्देशों का पालन करने के लिए रिले करूंगा।
एक बार जब आप इसे सही तरीके से प्राप्त कर लेते हैं, तो आपको निम्न परिणाम प्राप्त होंगे:
[[email protected] ~]# s9s controller --list --long
S VERSION OWNER GROUP NAME IP PORT COMMENT
l 1.7.5.3735 system admins 192.168.70.80 192.168.70.80 9501 Acting as leader.
f 1.7.5.3735 system admins 192.168.70.70 192.168.70.70 9501 Accepting heartbeats.
f 1.7.5.3735 system admins 10.142.0.39 10.142.0.39 9501 Accepting heartbeats.
नोड्स में कहां
- 192.168.70.80 - (नोड8) और मेरे ऑन-प्रिमाइसेस में रह रहा है
- 192.168.70.70 - (नोड7) और मेरे ऑन-प्रिमाइसेस में रह रहा है
- 10.142.0.39 - (gnode1) को GCP और विभिन्न क्षेत्रों में होस्ट किया गया है
CMON HA इन एक्शन
मेरे सहयोगी Krzysztof Ksiazek ने पहले से ही इस ब्लॉग पर HAProxy का उपयोग करके HA के लिए सेटअप प्रदान किया है ClusterControl CMON HA वितरित डेटाबेस उच्च उपलब्धता के लिए - भाग दो (GUI एक्सेस सेटअप)।
ब्लॉग में बताई गई प्रक्रिया का पालन करने के लिए, सुनिश्चित करें कि आपके पास xinetd और pathlib पैकेज हैं। आप xinetd और pathlib को निम्नानुसार स्थापित कर सकते हैं,
$ sudo yum install -y xinetd python-pathlib.noarch
यह भी सुनिश्चित करें कि आपके पास /etc/services में नीचे दिए गए तरीके से परिभाषित CMONhachk है:
[[email protected] ~]# grep 'CMONhachk' /etc/services
CMONhachk 9201/tcp
और बदलाव सुनिश्चित करें और xinetd को फिर से शुरू करें,
service xinetd restart
मैं Keepalived और HAProxy प्रक्रिया को छोड़ दूंगा और उम्मीद करता हूं कि आपने तदनुसार सेट अप किया है। इस सेटअप पर आपको एक विचार करना होगा कि यदि आप वीआईपी को ऑन-प्रिमाइसेस से सार्वजनिक क्लाउड नेटवर्क पर फैला रहे हैं तो Keepalived का उपयोग लागू नहीं हो सकता क्योंकि वे पूरी तरह से एक अलग नेटवर्क हैं।
अब, देखते हैं कि नोड्स डाउन होने पर CMON HA कैसे प्रतिक्रिया करता है। जैसा कि पहले दिखाया गया है, नोड 192.168.70.80 (नोड8), जैसा कि नीचे दिखाया गया है, एक नेता के रूप में कार्य कर रहा था:
जहां मास्टर नोड डेटाबेस यह भी दिखाता है कि नोड8 क्लस्टरकंट्रोल टोपोलॉजी व्यू से मास्टर है। . आइए node8 को खत्म करने की कोशिश करें और देखें कि CMON HA कैसे आगे बढ़ता है,
जैसा कि आप देख रहे हैं, gnode1 (GCP नोड) एक नेता के रूप में कार्यभार संभाल रहा है जैसे ही नोड 8 नीचे जाता है। निम्नलिखित के लिए HAProxy परिणामों की जाँच करना,
और हमारे ClusterControl नोड्स से पता चलता है कि नोड8 डाउन है, जबकि GCP नोड ले रहा है मास्टर के रूप में,
अंत में, मेरे HAProxy नोड तक पहुंचना जो 192.168.10.100 पर होस्ट पर चल रहा है पोर्ट 81 निम्न UI दिखाता है,
निष्कर्ष
हमारा ClusterControl CMON HA संस्करण 1.7.2 से है, लेकिन यह हमारे लिए एक चुनौती भी रहा है क्योंकि इसे कैसे लागू किया जाए जैसे विभिन्न प्रश्नों और प्राथमिकताओं जैसे कि गैलेरा क्लस्टर पर MySQL प्रतिकृति का उपयोग करना।
हमारा CMON HA अभी परिपक्व नहीं हुआ है लेकिन अब यह आपकी उच्च उपलब्धता आवश्यकताओं को पूरा करने के लिए तैयार है। अलग-अलग दृष्टिकोण तब तक लागू हो सकते हैं जब तक आपके चेक ऊपर और चल रहे सही नोड का निर्धारण करेंगे।
हम आपको CMON HA का उपयोग करके सेटअप और परिनियोजन के लिए प्रोत्साहित करते हैं और हमें बताएं कि आपकी आवश्यकताओं के लिए कितना उपयुक्त है या यदि समस्या बनी रहती है, तो कृपया हमें बताएं कि आपकी उच्च उपलब्धता आवश्यकताओं को पूरा करने में आपकी सहायता कैसे करें।