Организациите използват инфраструктура в облака, защото предлага скорост, гъвкавост и мащабируемост. Можете да си представите, ако можем да завъртим нов екземпляр на база данни само с едно щракване и отнема няколко минути, докато бъде готов, ние също можем да разгърнем приложението по-бързо, отколкото в сравнение с локалната среда.
Освен ако не използвате собствената облачна услуга на MongoDB, основните доставчици на облак не предлагат управлявана услуга MongoDB, така че всъщност не е операция с едно щракване за разгръщане на един екземпляр или клъстер. Често срещаният начин е да се развъртят виртуални машини и след това да се разположат на тях. За внедряването трябва да се погрижим от А до Я – трябва да подготвим инстанцията, да инсталираме софтуера на базата данни, да настроим някои конфигурации и да защитим инстанцията. Тези задачи са от съществено значение, въпреки че не винаги се изпълняват правилно – с потенциално катастрофални последици.
Автоматизацията играе важна роля за гарантиране на всички задачи, като се започне от инсталацията, конфигурирането, втвърдяването и докато услугата на базата данни е готова. В този блог ще обсъдим автоматизацията на внедряването на MongoDB.
Софтуерен оркестратор
Има много нови софтуерни инструменти, които да помогнат на инженерите да внедрят и управляват своята инфраструктура. Управлението на конфигурацията помага на инженерите да внедряват по-бързо и ефективно, намалявайки времето за внедряване на нови услуги. Популярните опции включват Ansible, Saltstack, Chef и Puppet. Всеки продукт има предимства и недостатъци, но всички те работят много добре и са изключително популярни. Разгръщането на услуга с поддържане на състоянието като MongoDB ReplicaSet или Sharded 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
- 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 на целевия сървър.
Автоматизиране на внедряването на MongoDB с помощта на ClusterControl GUI
Има два начина за внедряване на MongoDB с помощта на ClusterControl. Можем да го използваме от таблото на ClusterControl, той е базиран на GUI и се нуждае само от 2 диалога, докато не задейства нова работа за ново внедряване на MongoDB.
Първо трябва да попълним SSH потребител и парола, да попълним името на клъстера, както е показано по-долу:
И след това изберете доставчика и версията на MongoDB, дефинирайте потребителя и парола, а последното е попълване на целевия IP адрес
Автоматизиране на внедряването на MongoDB с помощта на s9s CLI
От интерфейса на командния ред можете да използвате инструментите на s9s. Разгръщането на MongoDB с помощта на s9s е само команда от един ред, както е показано по-долу:
$ 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, независимо дали е ReplicaSet или Sharded Cluster, е много лесно и е напълно автоматизирано от ClusterControl.