sql >> Databáze >  >> NoSQL >> MongoDB

Nasazení a údržba MongoDB pomocí Ansible

Technologie se den za dnem mění a moderní aplikace musí podstoupit vážné úpravy, aby splnily očekávání jejich organizací v oblasti rychlého dodání. To je bohužel činí složitějšími, sofistikovanějšími a obtížnějšími na údržbu.

Pokud jde o správu databází, datové struktury uvnitř MongoDB se v průběhu času mění v souladu s potřebami aplikace a to by mohlo být poměrně drahé (nebo spíše riskantní).

Z dlouhodobého hlediska potřebujeme mít efektivní databázi snadno nakonfigurovanou a zajistit kompetentní dodávku softwaru. Dosažení těchto všech manuálním způsobem s sebou nese řadu překážek, jako je

  1. Složitá koordinace mezi členy týmu.
  2. Vysoká šance na opakování úkolu
  3. Dochází k mnoha lidským chybám a chybám
  4. Není obtížné překonat složitost
  5. Snížená spolupráce a nespokojenost s prací
  6. Časově náročné
  7. Špatná odpovědnost a dodržování předpisů

Potíže se správou databáze se soustředí především na

  • Zavádění
  • Údržba
  • Upgrade, který může ovlivnit provozní režii až o 95% snížení.

Dosažení tohoto může MongoDB vyžadovat spoustu času a manuálního úsilí. Abyste zajistili úspěch, budete potřebovat jednoduchý systém, pomocí kterého zajistíte, že všechny výše uvedené neúspěchy lze včas řešit z jediné platformy, to znamená nějakým způsobem automatizovaný systém. Existuje celá řada možností, ale v tomto článku budeme diskutovat o tom, jak využít Ansible.

Co je Ansible

Ansible je prostě univerzální jazyk, který odhaluje tajemství, jak se pracuje. Jinými slovy, jde o nástroj pro orchestraci IT, který automatizuje nasazování aplikací, správu konfigurace a organizuje pokročilejší úlohy IT, jako je zajištění průběžných aktualizací s nulovými prostoji a nepřetržité nasazení.

Stroje lze snadno spravovat způsobem bez agentů s větším zaměřením na bezpečnost a spolehlivost pomocí jazyka navrženého pro „kontrolovatelnost“ lidmi.

I když nasazení MongoDB nemusí být tak obtížné, údržba, zálohování a monitorování se postupem času stávají stále důležitějšími faktory. Navíc to není tak snadné, když jste ve správě databází nováčkem. Díky tomu, že vývojáři Ansible mohou snadno nasazovat a konfigurovat aplikace, umožňuje také rychlé dodání na jakoukoli hostitelskou platformu.

Protože Ansible není součástí systému databázového clusteru, lze jej nainstalovat do libovolného vzdáleného počítače a provést konfiguraci na hostiteli vaší databáze. Zkontrolujte prosím instalační příručku, abyste věděli, která verze je vhodná pro váš operační systém.

Ansible se ve výchozím nastavení připojuje k hostiteli databáze prostřednictvím protokolu SSH.

Ansible Playbooks

Playbooks jsou šablony, kde je napsán kód Ansible, a tudíž přímo Ansible sám, co má provést, takovým způsobem, jako je to-do-list. Jsou napsány ve formátu YAML (Yet Another Markup Language). Každá obsahuje operace krok za krokem, které uživatel na konkrétním počítači následuje a které se spouštějí sekvenčně. Jejich struktura se skládá z jedné nebo více her. Play je v podstatě blok kódu, který mapuje sadu instrukcí definovaných vůči konkrétnímu hostiteli.

Běžně používané značky YAML v Ansible

  1. jméno

    Toto je značka, která definuje název Ansible playbooku. Je vhodné nastavit název, který přesně definuje, co bude dělat.

  2. hostitelé

    Toto definuje skupinu hostitelů nebo seznam hostitelů, proti kterým mají být spuštěny definované úlohy. Je to povinná značka, která říká Ansible, na kterých hostitelích má spouštět úlohy, které byly uvedeny. Vzhledem k tomu, že úlohy lze provádět na více strojích, ať už stejných nebo vzdálených, lze v této značce definovat skupinu hostitelů.

  3. vars

    Jako každý jiný programovací jazyk budete potřebovat proměnné. Pomocí této značky můžete definovat proměnné, které budete používat ve své příručce.

  4. úkoly

    Tato značka vám umožní vypsat sadu úloh, které mají být provedeny. Úkoly jsou vlastně činnosti, které je třeba provést. Pole úkolu definuje název úkolu, který v podstatě pomáhá s textem pro uživatele během ladění playbooku. Část kódu definovaná jako modul je interně propojena s každou úlohou a všechny argumenty, které mají být použity v rámci modulu, jsou předány přes značku tasks.

Jednoduchá struktura playbooku vypadá asi takto...

---
 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>

Napsání jednoduché příručky pro instalaci a spuštění MongoDB

  1. Povolení přístupu root SSH

    Některá nastavení spravovaných uzlů vás mohou odradit od přihlášení jako uživatel root, a proto je k vyřešení tohoto problému potřeba definovat playbook. Vytvoříme playbook enable-root-access.yml, který bude vypadat takto

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

    Když spustíte příkaz

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

    Měli byste vidět něco jako

    PLAY [ansible-test] ***********************************************************
    GATHERING FACTS ***************************************************************
    TASK: [Enable root login] *****************************************************
    PLAY RECAP ********************************************************************
  2. Výběr hostitelů a uživatelů v mongodbInstall.yaml

    ---
    - hosts: ansible-test
      remote_user: root
      become: yes
  3. Přidání úkolů, které mají být provedeny

    Úkoly se provádějí postupně, takže je musíme nastínit sekvenčním způsobem, tj.

    1. apt_key pro přidání klíčů úložiště. Veřejný klíč GPG MongoDB je třeba nejprve importovat
      - name: Import the public key used by the package management system
          apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
    2. Přidání úložiště MongoDB apt_repository
      - name: Add MongoDB repository
        apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
    3. Instalace balíčků a spuštění mongod, poté znovu načtení místní databáze balíčků
      - name: install mongodb
        apt: pkg=mongodb-org state=latest update_cache=yes
        notify:
        - start mongodb
    4. Správa služeb pomocí obslužné rutiny ke spouštění a restartování služeb
      handlers:
        - name: start mongodb
          service: name=mongod state=started
Somenines Staňte se MongoDB DBA – Uvedení MongoDB do produkce Zjistěte, co potřebujete vědět, abyste mohli nasadit, monitorovat, spravovat a škálovat MongoDBDdownload zdarma

Obecný kód příručky by měl vypadat takto

---
- 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

Tento soubor pak můžeme spustit pomocí ansible pomocí příkazu

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

Pokud byla příručka úspěšně spuštěna, měli byste to vidět ve svém terminálu

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

Pokud nyní spustíte mongo, budete přesměrováni na mongo shell

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

Závěr

Ansible je jednoduchý open source IT engine, který automatizuje nasazení aplikací, orchestraci služeb a poskytování cloudu.

Funguje to tak, že připojíte databázové uzly a vytlačíte jim definované instrukce známé jako moduly, standardně je provede přes SSH a po dokončení se jich zbaví. Neprovozuje žádné démony ani servery, a proto jej lze spustit z libovolného vzdáleného počítače. V dalším tutoriálu budeme diskutovat o tom, jak udržovat sadu replik MongoDB v cloudu pomocí Ansible.


  1. MongoDB:je bezpečné používat ID dokumentu na veřejnosti?

  2. Musím ručně zavřít připojení mongoose?

  3. Proč má Redis funkce Pub/Sub?

  4. Jaký je rozdíl mezi id a _id v mongoose?