कंटेनरों का उपयोग करके एप्लिकेशन बनाने, तैनात करने और चलाने के लिए डॉकर सबसे आम उपकरण बन गया है। यह हमें एक एप्लिकेशन को सभी आवश्यक भागों के साथ पैकेज करने की अनुमति देता है, जैसे कि पुस्तकालय और अन्य निर्भरता, और इसे एक पैकेज के रूप में बाहर भेजना। डॉकर को एक वर्चुअल मशीन के रूप में माना जा सकता है, लेकिन एक संपूर्ण वर्चुअल ऑपरेटिंग सिस्टम बनाने के बजाय, डॉकर अनुप्रयोगों को उसी लिनक्स कर्नेल का उपयोग करने की अनुमति देता है जिस पर वे चल रहे हैं और केवल उन चीजों के साथ अनुप्रयोगों को भेजने की आवश्यकता होती है जो पहले से नहीं चल रही हैं। मेजबान कंप्यूटर। यह एक महत्वपूर्ण प्रदर्शन को बढ़ावा देता है और एप्लिकेशन के आकार को कम करता है।
इस ब्लॉग में, हम देखेंगे कि कैसे हम डॉकर के माध्यम से एक पोस्टग्रेएसक्यूएल सेटअप को आसानी से तैनात कर सकते हैं, और क्लस्टरकंट्रोल का उपयोग करके अपने सेटअप को प्राथमिक/स्टैंडबाय प्रतिकृति सेटअप में कैसे चालू कर सकते हैं।
डॉकर के साथ PostgreSQL को कैसे परिनियोजित करें
सबसे पहले, आइए देखें कि PostgreSQL Docker Image का उपयोग करके मैन्युअल रूप से PostgreSQL को Docker के साथ कैसे परिनियोजित किया जाए।
छवि डॉकर हब पर उपलब्ध है और आप इसे कमांड लाइन से पा सकते हैं:
$ docker search postgres
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
postgres The PostgreSQL object-relational database sy… 6519 [OK]
हम पहला परिणाम लेंगे। आधिकारिक एक। इसलिए, हमें चित्र खींचने की आवश्यकता है:
$ docker pull postgres
और एक स्थानीय पोर्ट को डेटाबेस पोर्ट में कंटेनर में मैप करने वाले नोड कंटेनर चलाएं:
$ docker run -d --name node1 -p 6551:5432 postgres
$ docker run -d --name node2 -p 6552:5432 postgres
$ docker run -d --name node3 -p 6553:5432 postgres
इन आदेशों को चलाने के बाद, आपको यह डॉकर वातावरण बनाना चाहिए:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
51038dbe21f8 postgres "docker-entrypoint.s…" About an hour ago Up About an hour 0.0.0.0:6553->5432/tcp node3
b7a4211744e3 postgres "docker-entrypoint.s…" About an hour ago Up About an hour 0.0.0.0:6552->5432/tcp node2
229c6bd23ff4 postgres "docker-entrypoint.s…" About an hour ago Up About an hour 0.0.0.0:6551->5432/tcp node1
अब, आप प्रत्येक नोड को निम्न कमांड से एक्सेस कर सकते हैं:
$ docker exec -ti [db-container] bash
$ su postgres
$ psql
psql (11.2 (Debian 11.2-1.pgdg90+1))
Type "help" for help.
postgres=#
फिर, आप एक डेटाबेस उपयोगकर्ता बना सकते हैं, अपनी आवश्यकताओं के अनुसार कॉन्फ़िगरेशन बदल सकते हैं या मैन्युअल रूप से नोड्स के बीच प्रतिकृति को कॉन्फ़िगर कर सकते हैं।
अपने PostgreSQL कंटेनरों को ClusterControl में कैसे आयात करें
संबंधित संसाधन पोस्टग्रेएसक्यूएल के लिए क्लस्टरकंट्रोल डॉकर कंटेनर पर पोस्टग्रेएसक्यूएल की तैनाती पोस्टग्रेएसक्यूएल को तैनात करने के लिए कुबेरनेट्स का उपयोग करनाअब जब आपने अपना PostgreSQL क्लस्टर सेटअप कर लिया है, तब भी आपको इसकी निगरानी करने, प्रदर्शन समस्याओं के मामले में अलर्ट, बैकअप प्रबंधित करने, विफलताओं का पता लगाने और एक स्वस्थ सर्वर पर स्वचालित रूप से विफल होने की आवश्यकता है।
यदि आपके पास पहले से ही डॉकर पर एक पोस्टग्रेएसक्यूएल क्लस्टर चल रहा है और आप चाहते हैं कि क्लस्टरकंट्रोल इसे प्रबंधित करे, तो आप डेटाबेस कंटेनर के रूप में उसी डॉकर नेटवर्क में क्लस्टरकंट्रोल कंटेनर चला सकते हैं। एकमात्र आवश्यकता यह सुनिश्चित करने के लिए है कि लक्षित कंटेनरों में एसएसएच संबंधित पैकेज स्थापित हैं (ओपनश-सर्वर, ओपनश-क्लाइंट)। फिर ClusterControl से डेटाबेस कंटेनर में पासवर्ड रहित SSH की अनुमति दें। एक बार हो जाने के बाद, "मौजूदा सर्वर/क्लस्टर आयात करें" सुविधा का उपयोग करें और क्लस्टर को ClusterControl में आयात किया जाना चाहिए।
सबसे पहले, डेटाबेस कंटेनरों पर OpenSSH संबंधित पैकेज स्थापित करें, रूट लॉगिन की अनुमति दें, इसे शुरू करें और रूट पासवर्ड सेट करें:
$ docker exec -ti [db-container] apt-get update
$ docker exec -ti [db-container] apt-get install -y openssh-server openssh-client
$ docker exec -it [db-container] sed -i 's|^PermitRootLogin.*|PermitRootLogin yes|g' /etc/ssh/sshd_config
$ docker exec -it [db-container] sed -i 's|^#PermitRootLogin.*|PermitRootLogin yes|g' /etc/ssh/sshd_config
$ docker exec -ti [db-container] service ssh start
$ docker exec -it [db-container] passwd
ClusterControl कंटेनर को प्रारंभ करें (यदि यह प्रारंभ नहीं हुआ है) और कंटेनर पर पोर्ट 80 को होस्ट पर 5000 पोर्ट करने के लिए अग्रेषित करें:
$ docker run -d --name clustercontrol -p 5000:80 severalnines/clustercontrol
सत्यापित करें कि ClusterControl कंटेनर ऊपर है:
$ docker ps | grep clustercontrol
7eadb6bb72fb severalnines/clustercontrol "/entrypoint.sh" 4 hours ago Up 4 hours (healthy) 22/tcp, 443/tcp, 3306/tcp, 9500-9501/tcp, 9510-9511/tcp, 9999/tcp, 0.0.0.0:5000->80/tcp clustercontrol
वेब ब्राउज़र खोलें, http://[Docker_Host]:5000/clustercontrol पर जाएं और एक डिफ़ॉल्ट व्यवस्थापक उपयोगकर्ता और पासवर्ड बनाएं। अब आपको ClusterControl मुख्य पृष्ठ देखना चाहिए।
अंतिम चरण सभी डेटाबेस कंटेनरों में पासवर्ड रहित SSH स्थापित कर रहा है। इसके लिए हमें प्रत्येक डेटाबेस नोड के लिए आईपी पता जानना होगा। इसे जानने के लिए, हम प्रत्येक नोड के लिए निम्न कमांड चला सकते हैं:
$ docker inspect [db-container] |grep IPAddress
"IPAddress": "172.17.0.6",
फिर, ClusterControl कंटेनर इंटरेक्टिव कंसोल से अटैच करें:
$ docker exec -it clustercontrol bash
SSH कुंजी को सभी डेटाबेस कंटेनरों में कॉपी करें:
$ ssh-copy-id 172.17.0.6
$ ssh-copy-id 172.17.0.7
$ ssh-copy-id 172.17.0.8
अब, हम क्लस्टर को ClusterControl में आयात करना शुरू कर सकते हैं। एक वेब ब्राउज़र खोलें और मैप किए गए पोर्ट के साथ डॉकर के भौतिक होस्ट आईपी पते पर जाएं, जैसे http://192.168.100.150:5000/clustercontrol , "मौजूदा सर्वर/क्लस्टर आयात करें" पर क्लिक करें और फिर निम्नलिखित जानकारी जोड़ें।
SSH द्वारा अपने सर्वर से कनेक्ट करने के लिए हमें उपयोगकर्ता, कुंजी या पासवर्ड और पोर्ट निर्दिष्ट करना होगा। हमें अपने नए क्लस्टर के लिए भी एक नाम चाहिए।
एसएसएच एक्सेस जानकारी सेट करने के बाद, हमें प्रत्येक डेटाबेस नोड के लिए डेटाबेस उपयोगकर्ता, संस्करण, आधारित और आईपी पता या होस्टनाम को परिभाषित करना होगा।
सुनिश्चित करें कि होस्टनाम या आईपी पता दर्ज करते समय आपको हरे रंग की टिक मिलती है, यह दर्शाता है कि ClusterControl नोड के साथ संचार करने में सक्षम है। फिर, आयात बटन पर क्लिक करें और तब तक प्रतीक्षा करें जब तक ClusterControl अपना काम पूरा नहीं कर लेता। आप ClusterControl गतिविधि अनुभाग में प्रक्रिया की निगरानी कर सकते हैं।
एक बार आयात होने के बाद डेटाबेस क्लस्टर को ClusterControl डैशबोर्ड के अंतर्गत सूचीबद्ध किया जाएगा।
ध्यान दें, यदि आपके पास केवल PostgreSQL मास्टर नोड है, तो आप इसे ClusterControl में जोड़ सकते हैं। फिर आप ClusterControl UI से स्टैंडबाय नोड्स जोड़ सकते हैं ताकि ClusterControl उन्हें आपके लिए कॉन्फ़िगर कर सके।
आपके संपूर्ण डेटाबेस इन्फ्रास्ट्रक्चर के लिए ClusterControlSingle कंसोल पता करें कि ClusterControl में और क्या नया है, ClusterControl को निःशुल्क स्थापित करेंClusterControl के साथ अपने PostgreSQL कंटेनरों को कैसे परिनियोजित करें
अब, देखते हैं कि CentOS Docker Image (severalnines/centos-ssh) और ClusterControl Docker Image (severalnines/clustercontrol) का उपयोग करके Docker के साथ PostgreSQL को कैसे परिनियोजित किया जाए।
सबसे पहले, हम नवीनतम संस्करण का उपयोग करके एक क्लस्टरकंट्रोल डॉकर कंटेनर को तैनात करेंगे, इसलिए हमें कईनाइन/क्लस्टरकंट्रोल डॉकर इमेज खींचने की जरूरत है।
$ docker pull severalnines/clustercontrol
फिर, हम ClusterControl कंटेनर चलाएंगे और इसे एक्सेस करने के लिए पोर्ट 5000 प्रकाशित करेंगे।
$ docker run -d --name clustercontrol -p 5000:80 severalnines/clustercontrol
अब आप http://[Docker_Host]:5000/clustercontrol पर ClusterControl UI खोल सकते हैं। और एक डिफ़ॉल्ट व्यवस्थापक उपयोगकर्ता और पासवर्ड बनाएं।
एसएसएच सेवा सक्षम, एक ऑटो परिनियोजन सुविधा के अलावा, सेनीनाइन/सेंटोस-एसएसएच के साथ आता है, लेकिन यह केवल गैलेरा क्लस्टर के लिए मान्य है। PostgreSQL अभी तक समर्थित नहीं है। इसलिए, हम डेटाबेस नोड बनाने के लिए docker रन कमांड में AUTO_DEPLOYMENT वैरिएबल को 0 में सेट करेंगे।
$ docker run -d --name postgres1 -p 5551:5432 --link clustercontrol:clustercontrol -e AUTO_DEPLOYMENT=0 severalnines/centos-ssh
$ docker run -d --name postgres2 -p 5552:5432 --link clustercontrol:clustercontrol -e AUTO_DEPLOYMENT=0 severalnines/centos-ssh
$ docker run -d --name postgres3 -p 5553:5432 --link clustercontrol:clustercontrol -e AUTO_DEPLOYMENT=0 severalnines/centos-ssh
इन आदेशों को चलाने के बाद, हमारे पास निम्नलिखित डॉकर वातावरण होना चाहिए:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0df916b918a9 severalnines/centos-ssh "/entrypoint.sh" 4 seconds ago Up 3 seconds 22/tcp, 3306/tcp, 9999/tcp, 27107/tcp, 0.0.0.0:5553->5432/tcp postgres3
4c1829371b5e severalnines/centos-ssh "/entrypoint.sh" 11 seconds ago Up 10 seconds 22/tcp, 3306/tcp, 9999/tcp, 27107/tcp, 0.0.0.0:5552->5432/tcp postgres2
79d4263dd7a1 severalnines/centos-ssh "/entrypoint.sh" 32 seconds ago Up 31 seconds 22/tcp, 3306/tcp, 9999/tcp, 27107/tcp, 0.0.0.0:5551->5432/tcp postgres1
7eadb6bb72fb severalnines/clustercontrol "/entrypoint.sh" 38 minutes ago Up 38 minutes (healthy) 22/tcp, 443/tcp, 3306/tcp, 9500-9501/tcp, 9510-9511/tcp, 9999/tcp, 0.0.0.0:5000->80/tcp clustercontrol
हमें प्रत्येक डेटाबेस नोड के लिए आईपी पता जानने की जरूरत है। इसे जानने के लिए, हम प्रत्येक नोड के लिए निम्न कमांड चला सकते हैं:
$ docker inspect [db-container] |grep IPAddress
"IPAddress": "172.17.0.3",
अब हमारे पास सर्वर नोड्स ऊपर और चल रहे हैं, हमें अपने डेटाबेस क्लस्टर को तैनात करने की आवश्यकता है। इसे आसान तरीके से बनाने के लिए हम ClusterControl का उपयोग करेंगे।
ClusterControl से परिनियोजन करने के लिए, http://[Docker_Host]:5000/clustercontrol पर ClusterControl UI खोलें। , फिर "तैनाती" विकल्प चुनें और दिखाई देने वाले निर्देशों का पालन करें।
PostgreSQL का चयन करते समय, हमें SSH द्वारा अपने सर्वर से कनेक्ट करने के लिए उपयोगकर्ता, कुंजी या पासवर्ड और पोर्ट निर्दिष्ट करना होगा। हमें अपने नए क्लस्टर के लिए एक नाम की भी आवश्यकता है और यदि हम चाहते हैं कि ClusterControl हमारे लिए संबंधित सॉफ़्टवेयर और कॉन्फ़िगरेशन स्थापित करे।
एसएसएच एक्सेस जानकारी सेट करने के बाद, हमें डेटाबेस उपयोगकर्ता, संस्करण और डेटादिर (वैकल्पिक) को परिभाषित करना होगा। हम यह भी निर्दिष्ट कर सकते हैं कि किस भंडार का उपयोग करना है।
अगले चरण में, हमें अपने सर्वर को उस क्लस्टर में जोड़ना होगा जिसे हम बनाने जा रहे हैं।
अपने सर्वर जोड़ते समय, हम आईपी या होस्टनाम दर्ज कर सकते हैं। यहां हमें पहले प्रत्येक कंटेनर से प्राप्त आईपी पते का उपयोग करना चाहिए।
अंतिम चरण में, हम चुन सकते हैं कि हमारी प्रतिकृति सिंक्रोनस या एसिंक्रोनस होगी।
हम ClusterControl गतिविधि मॉनिटर से अपने नए क्लस्टर के निर्माण की स्थिति की निगरानी कर सकते हैं।
एक बार कार्य समाप्त हो जाने के बाद, हम अपने क्लस्टर को मुख्य ClusterControl स्क्रीन में देख सकते हैं।
निष्कर्ष
जैसा कि हम देख सकते हैं, शुरुआत में डॉकर के साथ पोस्टग्रेएसक्यूएल की तैनाती आसान हो सकती है लेकिन प्रतिकृति को कॉन्फ़िगर करने के लिए इसे थोड़ा और काम करने की आवश्यकता होगी। अंत में, आपको यह देखने के लिए अपने क्लस्टर की निगरानी करनी चाहिए कि क्या हो रहा है। ClusterControl के साथ, आप अपने PostgreSQL क्लस्टर को Docker के साथ आयात या परिनियोजित कर सकते हैं, साथ ही बैकअप और स्वचालित विफलता/पुनर्प्राप्ति जैसे निगरानी और प्रबंधन कार्यों को स्वचालित कर सकते हैं। इसे आज़माएं।