इस ब्लॉग पोस्ट में, हम यह देखने जा रहे हैं कि एक बहु-क्लाउड वातावरण में मारियाडीबी प्रतिकृति सेटअप को कैसे तैनात किया जाए। मान लीजिए कि हमारा प्राथमिक एप्लिकेशन एडब्ल्यूएस पर स्थित है, एडब्ल्यूएस को मारियाडीबी मास्टर की मेजबानी करने वाले प्राथमिक डेटासेंटर के रूप में स्थापित करना सबसे अच्छा विचार है। मारियाडीबी दास को जीसीपी पर होस्ट किया जाएगा और क्लस्टरकंट्रोल कार्यालय में कंपनी के निजी क्लाउड इंफ्रास्ट्रक्चर के अंदर स्थित है। वे सभी 192.168.50.0/24 की आईपी रेंज में वायरगार्ड सरल और सुरक्षित वीपीएन सुरंग के माध्यम से जुड़े हुए हैं। ClusterControl इस वीपीएन इंटरफ़ेस का उपयोग दूरस्थ रूप से सभी डेटाबेस नोड्स पर परिनियोजन, प्रबंधन और निगरानी करने के लिए करेगा।
यहां हमारे मेजबान हैं:
- अमेज़न वेब सेवा (AWS):
- होस्ट:MariaDB मास्टर
- सार्वजनिक आईपी:54.151.183.93
- निजी आईपी:10.15.3.170/24 (वीपीसी)
- VPN IP:192.168.50.101
- OS:Ubuntu 18.04.4 LTS (बायोनिक)
- विशिष्टता:t2.medium (2 vCPU, 4 GB मेमोरी)
- Google क्लाउड प्लेटफ़ॉर्म (GCP):
- होस्ट:MariaDB स्लेव
- सार्वजनिक आईपी:35.247.147.95
- निजी आईपी:10.148.0.9/32
- VPN IP:192.168.50.102
- OS:Ubuntu 18.04.4 LTS (बायोनिक)
- विशिष्टता:n1-मानक-1 (1 वीसीपीयू, 3.75 जीबी मेमोरी)
- VMware Private Cloud (कार्यालय):
- होस्ट:ClusterControl
- सार्वजनिक आईपी:3.25.96.229
- निजी आईपी:192.168.55.138/24
- VPN IP:192.168.50.100
- OS:Ubuntu 18.04.4 LTS (बायोनिक)
- विशिष्टता:निजी क्लाउड VMWare (2 CPU, 2 GB RAM)
हमारा अंतिम आर्किटेक्चर कुछ इस तरह दिखेगा:
सभी नोड्स पर /etc/hosts के अंतर्गत होस्ट मैपिंग है:
3.25.96.229 cc क्लस्टरकंट्रोल ऑफिस.mydomain.com54.151.183.93 aws1 db1 mariadb1 db1.mydomain.com35.247.147.95 gcp2 db2 mariadb2 db2.mydomain.com
होस्ट मैपिंग सेट अप करने से मेजबानों के बीच हमारा नाम समाधान प्रबंधन सरल हो जाएगा, जहां हम वायरगार्ड साथियों को कॉन्फ़िगर करते समय आईपी पते के बजाय होस्टनाम का उपयोग करेंगे।
वीपीएन के लिए वायरगार्ड स्थापित करना
चूंकि सभी सर्वर तीन अलग-अलग स्थानों पर हैं, जो केवल सार्वजनिक नेटवर्क के माध्यम से जुड़े हुए हैं, हम वायरगार्ड का उपयोग करके सभी नोड्स के बीच वीपीएन टनलिंग स्थापित करने जा रहे हैं। हम निम्न आंतरिक आईपी कॉन्फ़िगरेशन के साथ इस संचार के लिए प्रत्येक नोड पर एक नया नेटवर्क इंटरफ़ेस जोड़ेंगे:
- 192.168.50.100 - ClusterControl (ऑफिस प्राइवेट क्लाउड)
- 192.168.50.101 - MariaDB मास्टर (AWS)
- 192.168.50.102 - MariaDB स्लेव (GCP)
इस पृष्ठ में दिखाए गए अनुसार तीनों नोड्स पर वायरगार्ड स्थापित करें:
$ sudo add-apt-repository ppa:wireguard/wireguard$ sudo apt-get upgrade$ sudo apt-get install wireguard
उबंटू मेजबानों के लिए, वायरगार्ड स्थापना के दौरान संकेत मिलने पर बस डिफ़ॉल्ट मान स्वीकार करें। ध्यान दें कि वायरगार्ड के काम करने के लिए OS को नवीनतम संस्करण में अपग्रेड करना बहुत महत्वपूर्ण है।
वायरगार्ड कर्नेल मॉड्यूल लोड करने के लिए होस्ट को रीबूट करें:
$ रीबूट
एक बार शुरू होने के बाद, हमारे होस्ट मैपिंग को /etc/hosts के अंदर सभी नोड्स पर कुछ इस तरह से कॉन्फ़िगर करें:
$ cat /etc/hosts3.25.96.229 cc क्लस्टरकंट्रोल ऑफिस.mydomain.com54.151.183.93 aws1 db1 mariadb1 db1.mydomain.com35.247.147.95 gcp2 db2 mariadb2 db2.mydomain.com127.0.0। 1 लोकलहोस्ट
वायरगार्ड सेट करना
** इस खंड के तहत सभी चरणों को सभी नोड्स पर निष्पादित किया जाना चाहिए, जब तक कि अन्यथा निर्दिष्ट न हो।
1) रूट उपयोगकर्ता के रूप में सभी नोड्स पर, एक निजी कुंजी उत्पन्न करें और एक सुरक्षित अनुमति प्रदान करें
$ umask 077$ wg genkey> /root/private
2) फिर, wg0 नामक एक नया इंटरफ़ेस जोड़ें:
$ ip लिंक wg0 टाइप वायरगार्ड जोड़ें
3) wg0 इंटरफ़ेस में संबंधित IP पता जोड़ें:
होस्ट "सीसी" के लिए:
$ ip addr add 192.168.50.100/32 dev wg0
होस्ट "aws1" के लिए:
$ ip addr add 192.168.50.101/32 dev wg0
होस्ट "gcp2" के लिए:
$ ip addr add 192.168.50.102/32 dev wg0
4) लिसनिंग पोर्ट को 55555 पर बनाएं और वायरगार्ड इंटरफ़ेस को जेनरेट की गई निजी कुंजी असाइन करें:
$ wg सेट wg0 लिने-पोर्ट 55555 प्राइवेट-की /रूट/प्राइवेट
5) नेटवर्क इंटरफेस लाओ:
$ ip link wg0 up सेट करें
6) एक बार इंटरफ़ेस चालू हो जाने पर, "wg" कमांड से सत्यापित करें:
(cc1)$ wginterface:wg0 सार्वजनिक कुंजी:sC91qhb5QI4FjBZPlwsTLNIlvuQqsALYt5LZomUFEh4=निजी कुंजी:(छिपा हुआ) लिसनिंग पोर्ट:55555
(aws1) $ wginterface:wg0 सार्वजनिक कुंजी:ZLdvYjJlaS56jhEBxWGFFGprvZhtgJKwsLVj3zGonXw=निजी कुंजी:(छिपा हुआ) लिसनिंग पोर्ट:55555
(gcp2) $wginterface:wg0 सार्वजनिक कुंजी:M6A18XobRFn7y7u6cg8XlEKy5Nf0ZWqNMOw/vVONhUY=निजी कुंजी:(छिपा हुआ) लिसनिंग पोर्ट:55555
अब हम उन सभी को जोड़ने के लिए तैयार हैं।
वायरगार्ड इंटरफ़ेस के माध्यम से होस्ट को कनेक्ट करना
अब हम सभी नोड्स को पीयर के रूप में जोड़ने जा रहे हैं और उन्हें एक दूसरे के साथ संवाद करने की अनुमति देते हैं। कमांड के लिए 4 महत्वपूर्ण मापदंडों की आवश्यकता होती है:
- साथी :लक्ष्य होस्ट के लिए सार्वजनिक कुंजी।
- अनुमत-ips :मेजबान का आईपी पता जिसके साथ संवाद करने की अनुमति है।
- समापन बिंदु :होस्ट और वायरगार्ड और लिसनिंग पोर्ट (यहां हम पोर्ट 55555 का उपयोग करने के लिए सभी नोड्स को कॉन्फ़िगर करते हैं)।
- लगातार रख-रखाव :क्योंकि NAT और स्टेटफुल फायरवॉल "कनेक्शन" का ट्रैक रखते हैं, यदि NAT या फ़ायरवॉल के पीछे कोई सहकर्मी आने वाले पैकेट प्राप्त करना चाहता है, तो उसे समय-समय पर कीपलाइव पैकेट भेजकर NAT/फ़ायरवॉल मैपिंग को वैध रखना चाहिए। डिफ़ॉल्ट मान 0 (अक्षम) है।
इसलिए, होस्ट cc पर, हमें "aws1" और "gcp2" जोड़ने की आवश्यकता है:
<यूआईपी> $ wg सेट wg0 पीयर ZLdvYjJlaS56jhEBxWGFFGprvZhtgJKwsLVj3zGonXw =अनुमत-ips 192.168.50.101/32 एंडपॉइंट aws1:55555 लगातार-रखने 25$ wg सेट wg0 सहकर्मी M6A18/Xob55gON8X5Nf0 लगातार रख-रखाव 25
होस्ट "aws1" पर, हमें cc और gcp2 जोड़ना होगा:
$ wg सेट wg0 पीयर sC91qhb5QI4FjBZPlwsTLNIlvuQqsALYt5LZomUFEh4=अनुमत-ips 192.168.50.100/32 एंडपॉइंट cc:55555 परसिस्टेंट-कीपलिव 25$ wg सेट wg0 पीयर M6A18uv325Wc5YW लगातार रख-रखाव 25
होस्ट "gcp2" पर, हमें cc और aws1 जोड़ने की आवश्यकता है:
$ wg सेट wg0 पीयर sC91qhb5QI4FjBZPlwsTLNIlvuQqsALYt5LZomUFEh4=अनुमत-ips 192.168.50.100/32 एंडपॉइंट gcp2:55555 परसिस्टेंट-कीपलिव 25$ wg सेट wg0 पीयर ZLdvh55J5KW. कीपलाइव 25
हर मेजबान से, एक दूसरे को पिंग करने का प्रयास करें और सुनिश्चित करें कि आपको कुछ उत्तर मिले:
(cc)$ पिंग 192.168.50.101 # aws1(cc)$ पिंग 192.168.50.102 # gcp2
(aws1)$ पिंग 192.168.50.101 # cc(aws1)$ पिंग 192.168.50.102 # gcp2
(gcp2)$ पिंग 192.168.50.100 # cc(gcp2)$ पिंग 192.168.50.101 # aws1
वर्तमान स्थिति को सत्यापित करने के लिए "wg" आउटपुट की जाँच करें। होस्ट cc पॉइंट-ऑफ़-व्यू का आउटपुट यहां दिया गया है:
इंटरफ़ेस:wg0 सार्वजनिक कुंजी:sC91qhb5QI4FjBZPlwsTLNIlvuQqsALYt5LZomUFEh4=निजी कुंजी:(छिपा हुआ) लिसनिंग पोर्ट:55555पीयर:M6A18XobRFn7y7u6cg8XlEKy5Nf055.50.YW स्थानांतरण:4.70 KiB प्राप्त, 6.62 KiB ने लगातार रख-रखाव भेजा:हर 25 सेकंड में सहकर्मी:ZLdvYjJlaS56jhEBxWGFFGprvZhtgJKwsLVj3zGonXw =समापन बिंदु:54.151.183.93:55555 अनुमत ips:192.168.50.101/32 नवीनतम हैंडशेक:3.12 KiB भेजा गया लगातार रखरखाव:3.12 :हर 25 सेकंड में
सभी स्टेटस अच्छे लगते हैं। हम नोड्स के बीच समापन बिंदु, हैंडशेक स्थिति और बैंडविड्थ स्थिति देख सकते हैं। इस कॉन्फ़िगरेशन को कॉन्फ़िगरेशन फ़ाइल में लगातार बनाने का समय आ गया है, इसलिए इसे वायरगार्ड द्वारा आसानी से लोड किया जा सकता है। हम इसे /etc/wireguard/wg0.conf पर स्थित फाइल में स्टोर करने जा रहे हैं। सबसे पहले फाइल बनाएं:
$ स्पर्श /etc/wireguard/wg0.conf
फिर, इंटरफ़ेस wg0 के लिए रनटाइम कॉन्फ़िगरेशन निर्यात करें और इसे "wg-quick" कमांड का उपयोग करके wg0.conf में सहेजें:
$ wg-quick save wg0
कॉन्फ़िगरेशन फ़ाइल की सामग्री सत्यापित करें (होस्ट "cc" के लिए उदाहरण):
(cc)$ cat /etc/wireguard/wg0.conf[Interface]Address =192.168.50.100/24ListenPort =55555PrivateKey =UHIkdA0ExCEpCOL/iD0AFaACE/9NdHYig6CyKb3i1Xo=[पीयर]PublicKey /32एंडपॉइंट =54.151.183.93:55555पर्सिस्टेंटकीपलिव =25[पीयर]पब्लिककी =M6A18XobRFn7y7u6cg8XlEKy5Nf0ZWqNMOw/vVONhUY=AllowedIPs =192.168.50.102/32Endpoint =35.2455Persist कमांड wg-quick वायरगार्ड इंटरफेस को प्रबंधित और कॉन्फ़िगर करने के लिए कुछ शानदार शॉर्टकट प्रदान करता है। नेटवर्क इंटरफ़ेस को ऊपर या नीचे लाने के लिए इस टूल का उपयोग करें:
(cc)$ wg-quick down wg0[#] ip link delete dev wg0(cc)$ wg-quick up wg0[#] ip link add wg0 type Wireguard[#] wg setconf wg0 /dev/ fd/63[#] ip -4 पता जोड़ें 192.168.50.100/24 dev wg0[#] ip लिंक सेट mtu 8921 up dev wg0
आखिरकार, हम systemd को स्टार्टअप के दौरान ही इस इंटरफ़ेस को लोड करने का निर्देश देते हैं:
$ systemctl enable [email protected] सिमलिंक /etc/systemd/system/multi-user.target.wants/[email protected] → /lib/systemd/system/[email protected] बनाया गया। कोड>
इस बिंदु पर, हमारा वीपीएन कॉन्फ़िगरेशन पूरा हो गया है और अब हम परिनियोजन शुरू कर सकते हैं।
MariaDB प्रतिकृति परिनियोजित करना
एक बार जब आर्किटेक्चर में प्रत्येक नोड एक दूसरे से बात कर सकता है, तो यह क्लस्टरकंट्रोल का उपयोग करके हमारे मारियाडीबी प्रतिकृति को परिनियोजित करने के लिए अंतिम चरण के साथ आगे बढ़ने का समय है।
cc पर ClusterControl स्थापित करें:
(cc)$ wget https://severalnines.com/downloads/cmon/install-cc(cc)$ chmod 755 install-cc(cc)$ ./install-cc
स्थापना पूर्ण होने तक निर्देशों का पालन करें। इसके बाद, हमें ClusterControl होस्ट से दोनों MariaDB नोड्स में एक पासवर्ड रहित SSH सेट करने की आवश्यकता है। सबसे पहले, उपयोगकर्ता रूट के लिए एक SSH कुंजी जनरेट करें:
(cc)$ whoamiroot(cc)$ ssh-keygen -t rsa # सभी संकेतों के लिए एंटर दबाएं
सार्वजनिक कुंजी सामग्री को /root/.ssh/id_rsa.pub पर /root/.ssh/authorized_keys के अंतर्गत MariaDB नोड्स पर कॉपी करें। यह मानता है कि मेजबान को एसएसएच को रूट की अनुमति है। अन्यथा, SSH डेमॉन को तदनुसार अनुमति देने के लिए कॉन्फ़िगर करें। सत्यापित करें कि पासवर्ड रहित SSH सही तरीके से सेट किया गया है। ClusterControl नोड पर, दूरस्थ SSH कमांड निष्पादित करें और सुनिश्चित करें कि आपको बिना किसी पासवर्ड संकेत के सही उत्तर मिलेगा:
(cc)$ ssh 192.168.50.101 "hostname"aws1(cc)$ ssh 192.168.50.102 "hostname"gcp2
अब हम अपने MariaDB प्रतिकृति को परिनियोजित कर सकते हैं। एक वेब ब्राउज़र खोलें और http://public_ip_of_CC/clustercontrol पर ClusterControl UI पर जाएं, एक सुपर व्यवस्थापक उपयोगकर्ता लॉगिन बनाएं। परिनियोजन -> MySQL प्रतिकृति पर जाएँ और निम्नलिखित निर्दिष्ट करें:
फिर, संस्करण 10.4 के साथ विक्रेता के रूप में "MariaDB" चुनें। मारियाडीबी रूट पासवर्ड भी निर्दिष्ट करें। "डिफाइन टोपोलॉजी" सेक्शन के तहत, मारियाडीबी नोड्स का वायरगार्ड आईपी एड्रेस (wg0) निर्दिष्ट करें, जो निम्न स्क्रीनशॉट के समान है:
परिनियोजन पर क्लिक करें और परिनियोजन पूर्ण होने तक प्रतीक्षा करें। एक बार हो जाने के बाद, आपको निम्नलिखित देखना चाहिए:
हमारा मारियाडीबी प्रतिकृति सेटअप अब तीन अलग-अलग स्थानों (कार्यालय, एडब्ल्यूएस और जीसीपी) पर चल रहा है, जो नोड्स के बीच एक सुरक्षित वीपीएन टनलिंग से जुड़ा है।