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

Wdrażanie i konserwacja MongoDB przy użyciu Ansible

Technologia zmienia się z dnia na dzień, a nowoczesne aplikacje muszą wprowadzić poważne zmiany, aby spełnić oczekiwania swoich organizacji w zakresie szybkiej dostawy. Niestety sprawia to, że są one bardziej złożone, bardziej wyrafinowane i trudniejsze w utrzymaniu.

Jeśli chodzi o zarządzanie bazą danych, struktury danych wewnątrz MongoDB zmieniają się z czasem zgodnie z potrzebami aplikacji i może to być dość kosztowne (lub raczej ryzykowne).

Na dłuższą metę musimy mieć wydajną bazę danych łatwo konfigurowaną i zapewnić kompetentne dostarczanie oprogramowania. Osiągnięcie tego wszystkiego w sposób ręczny wiąże się z szeregiem niepowodzeń, takich jak

  1. Skomplikowana koordynacja między członkami zespołu.
  2. Wysokie szanse na powtórzenie zadania
  3. Podatny na wiele ludzkich błędów i błędów
  4. Niełatwo przezwyciężyć złożoność
  5. Zmniejszona współpraca i niezadowolenie z pracy
  6. Czasochłonne
  7. Słaba odpowiedzialność i zgodność

Trudności w administrowaniu bazami danych koncentrują się głównie na

  • Wdrażanie
  • Konserwacja
  • Aktualizacja, która może wpłynąć na koszty operacyjne do 95% redukcji.

Osiągnięcie tego może zająć MongoDB dużo czasu i wysiłku ręcznego. Aby zapewnić sukces, będziesz potrzebować prostego systemu, dzięki któremu wszystkie wymienione powyżej niepowodzenia będą mogły zostać rozwiązane z jednej platformy w odpowiednim czasie, to znaczy w jakiś sposób zautomatyzowany system. Istnieje wiele opcji, ale w tym artykule omówimy, jak wykorzystać Ansible.

Co to jest Ansible

Ansible to po prostu uniwersalny język, który odkrywa tajemnicę wykonywania pracy. Innymi słowy, jest to silnik orkiestracji IT, który automatyzuje wdrażanie aplikacji, zarządzanie konfiguracją i koordynuje bardziej zaawansowane zadania IT, takie jak zapewnienie zerowych przestojów aktualizacji kroczących i ciągłych wdrożeń.

Maszynami można łatwo zarządzać bez użycia agentów, z większym naciskiem na bezpieczeństwo i niezawodność dzięki użyciu języka zaprojektowanego z myślą o „możliwości audytu” przez ludzi.

Chociaż wdrażanie MongoDB może nie być takie trudne, konserwacja, tworzenie kopii zapasowych i monitorowanie stają się z czasem coraz większymi problemami. Ponadto nie jest to takie proste, gdy jesteś nowicjuszem w zarządzaniu bazami danych. Dzięki temu, że programiści Ansible mogą z łatwością wdrażać i konfigurować aplikacje, umożliwia to również szybką dostawę na dowolną platformę hostingową.

Ponieważ Ansible nie jest częścią systemu klastra bazy danych, można go zainstalować na dowolnym zdalnym komputerze, a konfigurację przeprowadzić na hoście bazy danych. Sprawdź instrukcję instalacji, aby dowiedzieć się, która wersja jest odpowiednia dla Twojego systemu operacyjnego.

Ansible domyślnie łączy się z hostem bazy danych przez protokół SSH.

Poradniki Ansible

Playbooki to szablony, w których napisany jest kod Ansible, dlatego sam Ansible wskazuje, co ma wykonać w taki sposób, jak lista rzeczy do zrobienia. Są napisane w formacie YAML (Yet Another Markup Language). Każda zawiera operacje wykonywane krok po kroku przez użytkownika na określonej maszynie, które są uruchamiane sekwencyjnie. Na ich strukturę składa się jedna lub więcej sztuk. Play to w zasadzie blok kodu, który mapuje zestaw instrukcji zdefiniowanych dla konkretnego hosta.

Powszechnie używane tagi YAML w Ansible

  1. imię

    To jest tag, który definiuje nazwę podręcznika Ansible. Wskazane jest, aby ustawić nazwę, która dokładnie określa, co będzie robił.

  2. hosty

    Definiuje grupę hostów lub listę hostów, na których mają być uruchamiane zdefiniowane zadania. Jest to obowiązkowy znacznik, który informuje Ansible, na których hostach ma uruchamiać wymienione zadania. Ponieważ zadania mogą być wykonywane na wielu komputerach, zarówno tych samych, jak i zdalnych, w tym znaczniku można zdefiniować grupę hostów.

  3. różne

    Jak każdy inny język programowania, będziesz potrzebować zmiennych. Za pomocą tego tagu możesz zdefiniować zmienne, których będziesz używać w swoim podręczniku.

  4. zadania

    Ten tag pozwoli Ci wyświetlić listę zadań do wykonania. Zadania to właściwie czynności, które trzeba wykonać. Pole zadania definiuje nazwę zadania, które zasadniczo pomaga tekstowi użytkownikowi podczas debugowania podręcznika. Fragment kodu zdefiniowany jako moduł jest wewnętrznie połączony z każdym zadaniem, a wszelkie argumenty, które mają być użyte w module, są przekazywane przez tag zadań.

Prosta struktura podręcznika wygląda mniej więcej tak...

---
 name: install and configure DB
   hosts: testServer
   become: yes

   vars: 
      mongoDB_Port : 27017
   
   tasks:
   -name: Install the mongodb
      yum: <code to install the DB>
    
   -name: Ensure the installed service is enabled and running
   service:
      name: <your service name>

Pisanie prostego podręcznika, aby zainstalować i uruchomić MongoDB

  1. Włączanie głównego dostępu SSH

    Niektóre konfiguracje węzłów zarządzanych mogą zniechęcać do logowania się jako użytkownik root, dlatego należy zdefiniować podręcznik, aby rozwiązać ten problem. Stworzymy playbook enable-root-access.yml, który będzie wyglądał tak

    ---
    - hosts: ansible-test
      remote_user: ubuntu
      tasks:
        - name: Enable root login
          shell: sudo cp ~/.ssh/authorized_keys /root/.ssh/

    Po uruchomieniu polecenia

    $ ansible-playbook -i inventory.txt -c ssh enable-root-access.yaml 

    Powinieneś zobaczyć coś takiego

    PLAY [ansible-test] ***********************************************************
    GATHERING FACTS ***************************************************************
    TASK: [Enable root login] *****************************************************
    PLAY RECAP ********************************************************************
  2. Wybieranie hostów i użytkowników w mongodbInstall.yaml

    ---
    - hosts: ansible-test
      remote_user: root
      become: yes
  3. Dodawanie zadań do wykonania

    Zadania są wykonywane sekwencyjnie, więc musimy je opisać w sekwencyjny sposób, tj.

    1. apt_key, aby dodać klucze repozytorium. Publiczny klucz GPG MongoDB należy najpierw zaimportować
      - name: Import the public key used by the package management system
          apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
    2. Dodawanie MongoDB apt_repository
      - name: Add MongoDB repository
        apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
    3. Instalowanie pakietów i uruchamianie mongod, a następnie ponowne załadowanie lokalnej bazy danych pakietów
      - name: install mongodb
        apt: pkg=mongodb-org state=latest update_cache=yes
        notify:
        - start mongodb
    4. Zarządzanie usługami, używanie programu obsługi do uruchamiania i restartowania usług
      handlers:
        - name: start mongodb
          service: name=mongod state=started
Kilkadziesiąt — Zostań administratorem baz danych MongoDB — wprowadzenie MongoDB do produkcjiDowiedz się, co trzeba wiedzieć, aby wdrażać, monitorować, zarządzać i skalować MongoDB. Pobierz za darmo

Ogólny kod podręcznika powinien wyglądać tak

---
- hosts: ansible-test
  remote_user: root
  become: yes
  tasks:
  - name: Import the public key used by the package management system
    apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
  - name: Add MongoDB repository
    apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
  - name: install mongodb
    apt: pkg=mongodb-org state=latest update_cache=yes
    notify:
    - start mongodb
  handlers:
    - name: start mongodb
      service: name=mongod state=started

Następnie możemy uruchomić ten plik za pomocą ansible za pomocą polecenia

ansible-playbook -i inventory.txt -c ssh mongodbInstall.yaml

Jeśli Playbook został pomyślnie wykonany, powinieneś zobaczyć to w swoim terminalu

PLAY [ansible-test] ***********************************************************

GATHERING FACTS ***************************************************************
ok: [12.20.3.105]
ok: [12.20.3.106]

TASK: [Import the public key used by the package management system] ***********
changed: [12.20.3.105]
changed: [12.20.3.106]

TASK: [Add MongoDB repository] ************************************************
changed: [12.20.3.105]
changed: [12.20.3.106]

TASK: [install mongodb] *******************************************************
changed: [12.20.3.105]
changed: [12.20.3.106]

NOTIFIED: [start mongodb] *****************************************************
ok: [12.20.3.106]
ok: [12.20.3.105]

PLAY RECAP ********************************************************************
12.20.3.105                : ok=5    changed=3    unreachable=0    failed=0
12.20.3.106                : ok=5    changed=3    unreachable=0    failed=0

Jeśli teraz uruchomisz mongo, zostaniesz przekierowany do powłoki mongo

MongoDB shell version v4.0.3
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("07c88442-0352-4b23-8938-fdf6ac66f253") }
MongoDB server version: 4.0.3
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user

Wniosek

Ansible to prosty silnik IT typu open source, który automatyzuje wdrażanie aplikacji, orkiestrację usług i udostępnianie chmury.

Działa poprzez łączenie węzłów bazy danych i wypychanie do nich instrukcji znanych jako moduły, domyślnie wykonuje je przez SSH, a następnie pozbywa się ich po zakończeniu. Nie uruchamia żadnych demonów ani serwerów, dlatego można go uruchomić z dowolnej zdalnej maszyny. W następnym samouczku omówimy, jak utrzymywać replikę MongoDB w chmurze za pomocą Ansible.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wiele odniesień do schematów w pojedynczej tablicy schematów — mangusta

  2. serwer zwrócił błąd na etapie uwierzytelniania SASL:Uwierzytelnianie nie powiodło się

  3. MongoDB findOneAndReplace()

  4. Jak wydrukować więcej niż 20 pozycji (dokumentów) w powłoce MongoDB?

  5. Tworzenie interfejsów API REST za pomocą EVE