मैन्युअल परिनियोजन सामान्य हैं, लेकिन वे धीमे और नीरस हो सकते हैं, यदि आपने कभी तीन से अधिक नोड्स पर डेटा गार्ड सेटअप के साथ Oracle RAC स्थापना की कोशिश की, तो आप जानते हैं कि मेरा क्या मतलब है। नोड्स की संख्या के आधार पर, परिनियोजन चरणों में समय समाप्त हो सकता है और त्रुटि की संभावना हो सकती है। बेशक, मैन्युअल डेटाबेस क्लस्टर सेटअप करने के तरीके के बारे में कई अच्छे "कैसे करें" हैं, हालांकि, पैमाने पर मैन्युअल दृष्टिकोण के साथ संबोधित करने के लिए कई अतिरिक्त प्रश्न हैं।
क्या मेरे पर्यावरण सेटअप में अन्य उदाहरण उसी तरह हैं? क्या वह क्यूए सिस्टम उत्पादन की तरह ही स्थापित किया गया था? क्या हमने अभी जो तैनात किया है वह उत्पादन के लिए तैयार है? उन सभी प्रश्नों को हल करने के लिए कॉन्फ़िगरेशन प्रबंधन टूल के माध्यम से परिनियोजन को स्वचालित रूप से स्वचालित किया जा रहा है।
संबंधित संसाधन कठपुतली के साथ डेटाबेस ऑटोमेशन:MySQL और MariaDB प्रतिकृति को तैनात करना S9s CLI और शेफ का उपयोग करके MySQL गैलेरा क्लस्टर की तैनाती को स्वचालित कैसे करें मारियाडीबी के लिए Ansible ClusterControl का उपयोग करके स्टैंडअलोन MySQL से गैलेरा क्लस्टर में माइग्रेशन को स्वचालित कैसे करेंकठपुतली, बावर्ची, और Ansible जैसे लोकप्रिय विन्यास प्रबंधन उपकरण विभिन्न आईटी सेवाओं को तैनात करने में सिद्ध प्रौद्योगिकियां हैं। वे मैनुअल काम को खत्म करने में मदद करते हैं, मानवीय त्रुटि के जोखिम को कम करते हैं, और इसे तेजी से तैनात करना संभव बनाते हैं। आज के ब्लॉग में, हम उनमें से एक पर एक नज़र डालेंगे।
Ansible कॉन्फ़िगरेशन प्रबंधन को केंद्रीकृत और स्वचालित करने के लिए एक ओपन सोर्स सिस्टम मैनेजमेंट टूल है। Ansible के साथ आप आसानी से विभिन्न डेटाबेस परिनियोजन को स्वचालित कर सकते हैं और सरल प्रशासन कार्य कर सकते हैं। हम प्रदर्शित करेंगे कि कैसे पुनरुत्पादित वातावरण में MySQL सर्वर जैसे सॉफ़्टवेयर को स्वचालित रूप से स्थापित और कॉन्फ़िगर किया जाए। इस ब्लॉग में, हम MariaDB प्रतिकृति पर ध्यान केंद्रित करने जा रहे हैं, लेकिन यदि आप अन्य कार्यों में रुचि रखते हैं, तो कृपया हमारे अन्य ब्लॉग देखें जहां हम Ansible के बारे में अधिक लिखते हैं।
Vagrant, Virtualbox, और Ansible
Ansible MySQL क्लस्टर को क्लाउड या ऑन-प्रिमाइसेस में परिनियोजित करने में मदद कर सकता है। इस ब्लॉग के उद्देश्य के लिए, हम वैग्रांट और वर्चुअलबॉक्स के साथ डेस्कटॉप मशीनों पर विभिन्न परीक्षण चलाने के लिए लोकप्रिय सेटअप का उपयोग करने जा रहे हैं।
वैग्रांट एक ऐसी प्रणाली है जो आपको विकास के वातावरण को एक मशीन से दूसरी मशीन में आसानी से बनाने और स्थानांतरित करने की अनुमति देती है। बस परिभाषित करें कि आप Vagrantfile नामक फ़ाइल में किस प्रकार का VM चाहते हैं और फिर उन्हें एक ही कमांड से फायर करें। यह VirtualBox, VMware और AWS जैसे वर्चुअल मशीन प्रदाताओं के साथ अच्छी तरह से एकीकृत है और हमारे कार्य के लिए जो महत्वपूर्ण है, उसे Ansible का बहुत अच्छा समर्थन प्राप्त है।
हमारा Vagrantfile वर्चुअलबॉक्स प्लेटफॉर्म पर 2 इंस्टेंस को तैनात करता है, एक मास्टर नोड के लिए और दूसरा स्लेव नोड के लिए। फिर हम Ansible का उपयोग आवश्यक संकुल संस्थापन को चलाने और मास्टर/दास के विन्यास को निष्पादित करने के लिए करेंगे। नीचे उन कार्यों की सूची दी गई है जिन्हें हम करने जा रहे हैं।
- वैग्रांट और वर्चुअलबॉक्स स्थापित करें
- योनि फ़ाइल और उत्तरदायी प्लेबुक कॉन्फ़िगर करें
- इंस्टेंस लॉन्च करें
- संबंधित Vagrant बॉक्स और Vagrantfile डाउनलोड करें (यह स्वचालित रूप से किया जाता है)
- Ansible playbook चलाएँ (यह अपने आप हो जाएगा)
- निगरानी और प्रबंधन कार्य (जैसे बैकअप, सुरक्षा, उपयोगकर्ता प्रबंधन, प्रदर्शन प्रबंधन और कई अन्य) के लिए क्लस्टर को ClusterControl में जोड़ें।
Vagrant, Virtualbox और Ubuntu पर Ansible इंस्टालेशन
पैकेज स्थापित करें
sudo apt-get install ansible vagrant virtualbox
Vagrant and Ansible के लिए कॉन्फ़िगरेशन फ़ाइलें बनाएं
$ mkdir mariadbtest
$ vi Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.provision "ansible" do |ansible|
ansible.playbook = "maria.yml"
ansible.sudo = true
end
config.vm.define "master" do |master|
master.vm.hostname = "master"
master.vm.network "forwarded_port", guest: 3306, host: 3336
master.vm.network "private_network", ip: "192.168.10.2"
end
config.vm.define "slave" do |slave|
slave.vm.hostname = "slave"
slave.vm.network "forwarded_port", guest: 3306, host: 3337
slave.vm.network "private_network", ip: "192.168.10.3"
end
config.vm.provider "virtualbox" do |v|
v.memory = 1024
v.cpus = 2
end
end
उपरोक्त आवारा फ़ाइल निम्नलिखित विन्यास के साथ दो मशीनें बनाएगी:
- मास्टर:2 CPU, 1GB RAM, निजी IP:192.168.10.2 पोर्ट फ़ॉरवर्ड:3336
- स्लेव:2CPU, 1GB RAM, निजी IP:192.168.10.3, पोर्ट फ़ॉरवर्ड:3337
प्लेबुक संरचना
इस चरण में, हम Ansible playbook को परिभाषित करेंगे। निर्देशों को परिभाषित करने के लिए Ansible YAML को एक आसान मार्कअप भाषा के रूप में उपयोग करता है। हम Mariadb द्वारा वितरित की गई Ansible फ़ाइल के आधार पर निम्नलिखित "maria.yml" बनाते हैं।
$vi maria.yml
- hosts: master:slave
user: vagrant
tasks:
- name: Install MariaDB repository
apt_repository: repo='deb http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.3/ubuntu trusty main' state=present
- name: Add repository key to the system
apt_key: keyserver=keyserver.ubuntu.com id=0xcbcb082a1bb943db
- name: Install MariaDB Server
apt: name=mariadb-server state=latest update_cache=yes
- name: Install python module
apt: name=python-mysqldb state=installed
- name: Create replication account
mysql_user: name=repl host="%" password=s3cr3tPaSSwordR priv=*.*:"REPLICATION SLAVE" state=present
- name: Create readwrite user
mysql_user: name=rwuser host="%" password=s3cr3tPaSSwordR priv=*.*:SELECT,INSERT,UPDATE,DELETE,CREATE,DROP state=present
- name: Modify configuration file to listen on all interfaces
lineinfile: dest=/etc/mysql/my.cnf regexp="^bind-address" line="bind-address=0.0.0.0"
- hosts: master
user: vagrant
tasks:
- name: Modify configuration file to setup server ID
lineinfile: dest=/etc/mysql/my.cnf regexp="^#server-id" line="server-id=1"
- name: Restart mysql service
service: name=mysql state=restarted
- name: Reset master binlog
command: /usr/bin/mysql -u root -e "RESET MASTER"
- hosts: slave
user: vagrant
tasks:
- name: Modify configuration file to setup server ID
lineinfile: dest=/etc/mysql/my.cnf regexp="^#server-id" line="server-id=2"
- name: Setup replication
command: /usr/bin/mysql -uroot -e "CHANGE MASTER TO master_host='192.168.10.2', master_user='repl', master_password='s3cr3tPaSSwordR', master_use_gtid=current_pos"
- name: Restart mysql service
service: name=mysql state=restarted
आपके संपूर्ण डेटाबेस इन्फ्रास्ट्रक्चर के लिए ClusterControlSingle कंसोल पता करें कि ClusterControl में और क्या नया है, ClusterControl को निःशुल्क स्थापित करें अब उदाहरणों का समय है। वैग्रांट अप प्लेबुक इंस्टॉलेशन को ट्रिगर करेगा।
$ vagrant up
DEPRECATION: The 'sudo' option for the Ansible provisioner is deprecated.
Please use the 'become' option instead.
The 'sudo' option will be removed in a future release of Vagrant.
==> vagrant: A new version of Vagrant is available: 2.2.4 (installed version: 2.2.3)!
==> vagrant: To upgrade visit: https://www.vagrantup.com/downloads.html
Bringing machine 'master' up with 'virtualbox' provider...
Bringing machine 'slave' up with 'virtualbox' provider...
==> master: Box 'ubuntu/trusty64' could not be found. Attempting to find and install...
master: Box Provider: virtualbox
master: Box Version: >= 0
==> master: Loading metadata for box 'ubuntu/trusty64'
master: URL: https://vagrantcloud.com/ubuntu/trusty64
==> master: Adding box 'ubuntu/trusty64' (v20190429.0.1) for provider: virtualbox
master: Downloading: https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20190429.0.1/providers/virtualbox.box
master: Download redirected to host: cloud-images.ubuntu.com
master: Progress: 7% (Rate: 551k/s, Estimated time remaining: 0:14:31)
Bringing machine 'master' up with 'virtualbox' provider...
Bringing machine 'slave' up with 'virtualbox' provider...
यदि आपके पास पहले से डाउनलोड किए गए वर्चुअलबॉक्स से ubuntu छवि नहीं है, तो आवारा इसे स्वचालित रूप से उपरोक्त उदाहरण की तरह डाउनलोड कर लेगा।
PLAY [master:slave] ************************************************************
TASK [Gathering Facts] *********************************************************
ok: [slave]
TASK [Install MariaDB repository] **********************************************
changed: [slave]
TASK [Add repository key to the system] ****************************************
changed: [slave]
TASK [Install MariaDB Server] **************************************************
सफल प्लेबुक इंस्टालेशन के बाद आप निम्न आउटपुट देखेंगे और आप पूर्वनिर्धारित क्रेडेंशियल्स (प्लेबुक देखें) के साथ डेटाबेस में लॉग इन करने में सक्षम होना चाहिए।
PLAY RECAP ********************************************************************
master : ok=12 changed=10 unreachable=0 failed=0
अगला चरण अपने मास्टर/स्लेव कॉन्फ़िगरेशन को ClusterControl में आयात करना है। ClusterControl को इंस्टाल करने का सबसे आसान और सबसे सुविधाजनक तरीका है कि कईनेइन्स द्वारा प्रदान की गई इंस्टॉलेशन स्क्रिप्ट का उपयोग करना। बस स्क्रिप्ट डाउनलोड करें और sudo root अनुमति के साथ रूट उपयोगकर्ता या उपयोगकर्ता के रूप में निष्पादित करें।
$ wget http://www.severalnines.com/downloads/cmon/install-cc
$ chmod +x install-cc
$ ./install-cc # as root or sudo user
यदि आप अपनी प्लेबुक में ClusterControl इंस्टालेशन जोड़ना चाहते हैं तो आप निम्न निर्देशों का उपयोग कर सकते हैं।
अगला कदम एक एसएसएच कुंजी उत्पन्न करना है जिसका उपयोग हम बाद में पासवर्ड रहित एसएसएच स्थापित करने के लिए करेंगे। यदि आपके पास एक कुंजी युग्म है जिसका आप उपयोग करना चाहते हैं, तो आप एक नया कुंजी युग्म बनाना छोड़ सकते हैं।
ClusterControl:मौजूदा क्लस्टर आयात करेंसफल स्थापना के बाद, आप अंततः अपने नए बनाए गए परीक्षण क्लस्टर को ClusterControl में आयात कर सकते हैं।
हमें उम्मीद है कि इस ब्लॉग पोस्ट ने आपको Ansible MariaDB मास्टर / स्लेव प्रतिकृति स्थापना और सेटअप के बारे में जानकारी दी है। कृपया हमारे अन्य ब्लॉग देखें जहां हम मारियाडीबी डेटाबेस और अन्य डेटाबेस क्लस्टर परिनियोजन के लिए शेफ, कठपुतली, डॉकर प्रस्तुत करते हैं।