संगठन क्लाउड में बुनियादी ढांचे का उपयोग कर रहे हैं क्योंकि यह गति, लचीलापन और मापनीयता प्रदान करता है। आप कल्पना कर सकते हैं कि यदि हम केवल एक क्लिक के साथ एक नया डेटाबेस उदाहरण स्पिन कर सकते हैं, और इसके तैयार होने में कुछ मिनट लगते हैं, तो हम ऑन-प्रिमाइसेस परिवेश की तुलना में एप्लिकेशन को तेज़ी से परिनियोजित कर सकते हैं।
जब तक आप MongoDB की अपनी क्लाउड सेवा का उपयोग नहीं कर रहे हैं, तब तक प्रमुख क्लाउड प्रदाता प्रबंधित MongoDB सेवा प्रदान नहीं करते हैं, इसलिए यह वास्तव में एकल इंस्टेंस या क्लस्टर को परिनियोजित करने के लिए एक-क्लिक ऑपरेशन नहीं है। सामान्य तरीका वीएम को स्पिन करना और फिर उन्हें इन पर तैनात करना है। ए से जेड तक परिनियोजन का ध्यान रखने की आवश्यकता है - हमें उदाहरण तैयार करने, डेटाबेस सॉफ़्टवेयर स्थापित करने, कुछ कॉन्फ़िगरेशन को ट्यून करने और इंस्टेंस को सुरक्षित करने की आवश्यकता है। ये कार्य आवश्यक हैं, हालांकि इनका हमेशा ठीक से पालन नहीं किया जाता है - संभावित विनाशकारी परिणामों के साथ।
ऑटोमेशन यह सुनिश्चित करने में महत्वपूर्ण भूमिका निभाता है कि स्थापना, कॉन्फ़िगरेशन, हार्डनिंग से लेकर डेटाबेस सेवा के तैयार होने तक सभी कार्यों को सुनिश्चित किया जाए। इस ब्लॉग में, हम MongoDB के लिए परिनियोजन स्वचालन पर चर्चा करेंगे।
सॉफ़्टवेयर ऑर्केस्ट्रेटर
इंजीनियरों को उनके बुनियादी ढांचे को तैनात और प्रबंधित करने में मदद करने के लिए बहुत सारे नए सॉफ़्टवेयर टूलिंग हैं। कॉन्फ़िगरेशन प्रबंधन नई सेवाओं के लिए परिनियोजन समय को कम करते हुए, इंजीनियरों को तेजी से और प्रभावी ढंग से तैनात करने में मदद करता है। लोकप्रिय विकल्पों में Ansible, Saltstack, Chef और Puppet शामिल हैं। हर उत्पाद के फायदे और नुकसान होते हैं, लेकिन वे सभी बहुत अच्छी तरह से काम करते हैं और बेहद लोकप्रिय हैं। MongoDB ReplicaSet या Shared Cluster जैसी स्टेटफुल सर्विस को डिप्लॉय करना थोड़ा अधिक चुनौतीपूर्ण हो सकता है क्योंकि ये मल्टी-सर्वर सेटअप हैं और टूल्स में इंक्रीमेंटल और क्रॉस नोड कोऑर्डिनेशन के लिए खराब सपोर्ट है। परिनियोजन प्रक्रियाएं आमतौर पर एक विशिष्ट क्रम में किए गए कार्यों के साथ, नोड्स में ऑर्केस्ट्रेशन के लिए कॉल करती हैं।
स्वचालित करने के लिए MongoDB परिनियोजन कार्य
एक MongoDB सर्वर के परिनियोजन में कई चीज़ें शामिल होती हैं; स्थानीय में MongoDB रिपॉजिटरी जोड़ें, MongoDB पैकेज स्थापित करें, पोर्ट, उपयोगकर्ता नाम कॉन्फ़िगर करें और सेवा शुरू करें।
कार्य:MongoDB स्थापित करें
- name: install mongoDB
apt:
name: mongodb
state: present
update_cache: yes
कार्य:कॉन्फ़िगरेशन फ़ाइल से mongod.conf को कॉपी करें।
- name: copy config file
copy:
src: mongodb.conf
dest: /etc/mongodb.conf
owner: root
group: root
mode: 0644
notify:
- restart mongodb
कार्य:MongoDB सीमा कॉन्फ़िगरेशन बनाएं:
- name: create /etc/security/limits.d/mongodb.conf
copy:
src: security-mongodb.conf
dest: /etc/security/limits.d/mongodb.conf
owner: root
group: root
mode: 0644
notify:
- restart mongodb
कार्य:अदला-बदली को कॉन्फ़िगर करना
- name: config vm.swappiness
sysctl:
name: vm.swappiness
value: '10'
state: present
कार्य:TCP Keepalive समय कॉन्फ़िगर करें
- name: config net.ipv4.tcp_keepalive_time
sysctl:
name: net.ipv4.tcp_keepalive_time
value: '120'
state: present
कार्य:सुनिश्चित करें कि MongoDB स्वचालित रूप से प्रारंभ हो जाएगा
- name: Ensure mongodb is running and and start automatically on reboots
systemd:
name: mongodb
enabled: yes
state: started
हम इन सभी कार्यों को एक एकल प्लेबुक में जोड़ सकते हैं और परिनियोजन को स्वचालित करने के लिए प्लेबुक चला सकते हैं। अगर हम कंसोल से Ansible playbook चलाते हैं:
$ ansible-playbook -b mongoInstall.yml
हम अपनी Ansible स्क्रिप्ट से परिनियोजन की प्रगति देखेंगे, आउटपुट कुछ इस तरह होना चाहिए:
PLAY [ansible-mongo] **********************************************************
GATHERING FACTS ***************************************************************
ok: [10.10.10.11]
TASK: [install mongoDB] *******************************************************
ok: [10.10.10.11]
TASK: [copy config file] ******************************************************
ok: [10.10.10.11]
TASK: [create /etc/security/limits.d/mongodb.conf]*****************************
ok: [10.10.10.11]
TASK: [config vm.swappiness] **************************************************
ok: [10.10.10.11]
TASK: [config net.ipv4.tcp_keepalive_time]*************************************
ok: [10.10.10.11]
TASK: [config vm.swappiness] **********************************************
ok: [10.10.10.11]
PLAY RECAP ********************************************************************
[10.10.10.11] : ok=6 changed=1 unreachable=0 failed=0
तैनाती के बाद, हम लक्ष्य सर्वर पर MongoDB सेवा की जांच कर सकते हैं।
ClusterControl GUI का उपयोग करके MongoDB का परिनियोजन स्वचालन
ClusterControl का उपयोग करके MongoDB को परिनियोजित करने के दो तरीके हैं। हम इसे ClusterControl के डैशबोर्ड से उपयोग कर सकते हैं, यह GUI- आधारित है और जब तक यह MongoDB के नए परिनियोजन के लिए एक नया कार्य ट्रिगर नहीं करता, तब तक केवल 2 संवादों की आवश्यकता होती है।
सबसे पहले हमें SSH उपयोगकर्ता और पासवर्ड भरना होगा, नीचे दिखाए अनुसार क्लस्टर नाम भरें:
और फिर, MongoDB का विक्रेता और संस्करण चुनें, उपयोगकर्ता को परिभाषित करें और पासवर्ड, और अंतिम लक्ष्य आईपी पता भरना है
s9s CLI का उपयोग करके MongoDB का परिनियोजन स्वचालन
कमांड लाइन इंटरफेस से, कोई s9s टूल का उपयोग कर सकता है। S9s का उपयोग करते हुए MongoDB की तैनाती नीचे के रूप में सिर्फ एक लाइन कमांड है:
$ s9s cluster --create --cluster-type=mongodb --nodes="10.10.10.15" --vendor=percona --provider-version=4.2 --db-admin-passwd="12qwaszx" --os-user=vagrant --cluster-name="MongoDB" --wait
Create Mongo Cluster
/ Job 183 FINISHED [██████████] 100% Job finished.
इसलिए MongoDB को परिनियोजित करना, चाहे वह रेप्लिकासेट हो या साझा क्लस्टर, बहुत आसान है, और ClusterControl द्वारा पूरी तरह से स्वचालित है।