MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Automatyzacja wdrażania bazy danych MongoDB

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.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Strumieniowanie danych w czasie rzeczywistym za pomocą strumieni zmian MongoDB

  2. 3 sposoby konwersji ciągu znaków na datę w MongoDB

  3. MongoDB:wyjątek w initAndListen:20 Próba utworzenia pliku blokady w katalogu tylko do odczytu:/data/db, zakończenie

  4. Jak wymusić klucze obce w bazach NoSql (MongoDB)?

  5. Jak dołączyć do zapytania w mongodb?