Organizacje korzystają z infrastruktury w chmurze, ponieważ zapewnia ona szybkość, elastyczność i skalowalność. Możesz sobie wyobrazić, że możemy uruchomić nową instancję bazy danych za pomocą jednego kliknięcia i zajmie to kilka minut, zanim będzie gotowa, możemy również wdrożyć aplikację szybciej niż w porównaniu ze środowiskiem lokalnym.
O ile nie korzystasz z własnej usługi w chmurze MongoDB, najwięksi dostawcy usług w chmurze nie oferują zarządzanej usługi MongoDB, więc wdrożenie pojedynczej instancji lub klastra nie wymaga tak naprawdę jednego kliknięcia. Typowym sposobem jest rozkręcenie maszyn wirtualnych, a następnie wdrożenie ich na nich. Wdrożeniem należy zająć się od A do Z - musimy przygotować instancję, zainstalować oprogramowanie bazodanowe, dostroić niektóre konfiguracje i zabezpieczyć instancję. Te zadania są niezbędne, chociaż nie zawsze są właściwie przestrzegane – z potencjalnie katastrofalnymi konsekwencjami.
Automatyzacja odgrywa ważną rolę w zapewnieniu, że wszystkie zadania, począwszy od instalacji, konfiguracji, utwardzenia, aż do gotowości usługi bazy danych. W tym blogu omówimy automatyzację wdrażania dla MongoDB.
Orkiestrator oprogramowania
Istnieje wiele nowych narzędzi programowych, które pomagają inżynierom we wdrażaniu infrastruktury i zarządzaniu nią. Zarządzanie konfiguracją pomaga inżynierom wdrażać szybciej i skuteczniej, skracając czas wdrażania nowych usług. Popularne opcje to Ansible, Saltstack, Chef i Puppet. Każdy produkt ma zalety i wady, ale wszystkie działają bardzo dobrze i cieszą się ogromną popularnością. Wdrożenie usługi stanowej, takiej jak MongoDB ReplicaSet lub Sharded Cluster, może być nieco trudniejsze, ponieważ są to konfiguracje wieloserwerowe, a narzędzia mają słabą obsługę koordynacji przyrostowej i międzywęzłowej. Procedury wdrażania zwykle wymagają orkiestracji między węzłami, z zadaniami wykonywanymi w określonej kolejności.
Zadania wdrażania MongoDB do automatyzacji
Wdrożenie serwera MongoDB obejmuje wiele rzeczy; dodaj repozytorium MongoDB do lokalnego, zainstaluj pakiet MongoDB, skonfiguruj port, nazwę użytkownika i uruchom usługę.
Zadanie:zainstaluj MongoDB
- name: install mongoDB
apt:
name: mongodb
state: present
update_cache: yes
Zadanie:skopiuj mongod.conf z pliku konfiguracyjnego.
- name: copy config file
copy:
src: mongodb.conf
dest: /etc/mongodb.conf
owner: root
group: root
mode: 0644
notify:
- restart mongodb
Zadanie:utwórz konfigurację limitu 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
Zadanie:konfiguracja zamiany
- name: config vm.swappiness
sysctl:
name: vm.swappiness
value: '10'
state: present
Zadanie:skonfiguruj czas podtrzymania TCP
- name: config net.ipv4.tcp_keepalive_time
sysctl:
name: net.ipv4.tcp_keepalive_time
value: '120'
state: present
Zadanie:upewnij się, że MongoDB uruchomi się automatycznie
- name: Ensure mongodb is running and and start automatically on reboots
systemd:
name: mongodb
enabled: yes
state: started
Możemy połączyć wszystkie te zadania w jeden podręcznik i uruchomić podręcznik, aby zautomatyzować wdrażanie. Jeśli uruchomimy podręcznik Ansible z konsoli:
$ ansible-playbook -b mongoInstall.yml
Zobaczymy postęp wdrażania z naszego skryptu Ansible, wynik powinien wyglądać jak poniżej:
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
Po wdrożeniu możemy sprawdzić usługę MongoDB na serwerze docelowym.
Automatyzacja wdrażania MongoDB przy użyciu GUI ClusterControl
Istnieją dwa sposoby wdrożenia MongoDB przy użyciu ClusterControl. Możemy go używać z pulpitu ClusterControl, jest on oparty na graficznym interfejsie użytkownika i potrzebuje tylko 2 okien dialogowych, dopóki nie uruchomi nowego zadania dla nowego wdrożenia MongoDB.
Najpierw musimy wprowadzić użytkownika SSH i hasło, wpisz nazwę klastra, jak pokazano poniżej:
Następnie wybierz dostawcę i wersję MongoDB, zdefiniuj użytkownika i hasło, a na końcu wpisz docelowy adres IP
Automatyzacja wdrażania MongoDB przy użyciu s9s CLI
Z interfejsu wiersza poleceń można korzystać z narzędzi s9s. Wdrożenie MongoDB przy użyciu s9s to tylko jednowierszowe polecenie, jak poniżej:
$ 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.
Wdrażanie MongoDB, niezależnie od tego, czy jest to zestaw replik, czy klaster dzielony, jest bardzo łatwe i całkowicie zautomatyzowane przez ClusterControl.