MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Разгръщане и поддръжка на MongoDB с помощта на Ansible

Технологията се променя всеки ден и съвременните приложения трябва да предприемат сериозни корекции, за да изпълнят очакванията за бърза доставка на техните организации. За съжаление, това ги прави по-сложни, по-сложни и по-трудни за поддръжка.

По отношение на управлението на база данни, структурите от данни в MongoDB се променят в съответствие с нуждите на приложението с течение на времето и това може да бъде доста скъпо (или по-скоро рисковано).

В дългосрочен план трябва да имаме ефективна база данни, конфигурирана лесно и да гарантираме компетентна доставка на софтуер. Постигането на всичко това по ръчен начин идва с редица пречки като

  1. Усложнена координация между членовете на екипа.
  2. Високи шансове за повторение на задачата
  3. Податливи на много човешки грешки и грешки
  4. Неудобно за преодоляване на сложността
  5. Намалено сътрудничество и недоволство от работата
  6. Отнема време
  7. Слаба отчетност и съответствие

Трудностите при администрирането на базата данни се съсредоточават главно върху

  • Внедряване
  • Поддръжка
  • Надстройване, което може да повлияе на оперативните разходи до 95% намаление.

Постигането на това може да отнеме много време и ръчни усилия за MongoDB. За да осигурите успех, ще трябва да имате проста система, с която можете да гарантирате, че всички изброени по-горе неуспехи могат да бъдат отстранени от една платформа своевременно, тоест по някакъв начин автоматизирана система. Има доста опции, но в тази статия ще обсъдим как да използваме Ansible.

Какво е Ansible

Ansible е просто универсален език, който разкрива мистерията за това как се извършва работата. С други думи, това е ИТ машина за оркестриране, която автоматизира внедряването на приложения, управлението на конфигурацията и организира по-усъвършенствани ИТ задачи, като осигуряване на нулеви престой на непрекъснати актуализации и непрекъснато внедряване.

Машините могат лесно да се управляват по начин без агенти с по-голям акцент върху сигурността и надеждността чрез използването на език, проектиран около „проверимост“ от хората.

Въпреки че разполагането на MongoDB може да не е толкова трудно, поддръжката, архивирането и наблюдението стават все по-загрижени фактори с течение на времето. Освен това не е толкова лесно, когато сте нов в управлението на база данни. С Ansible разработчиците могат да разгръщат и конфигурират приложения с лекота, също така позволява бърза доставка до всяка хостинг платформа.

Тъй като Ansible не е част от клъстерната система на базата данни, той може да бъде инсталиран на всеки отдалечен компютър и да се направи конфигурация на вашия хост на база данни. Моля, проверете ръководството за инсталиране, за да разберете коя версия е подходяща за вашата операционна система.

Ansible по подразбиране се свързва с хост на база данни чрез SSH протокол.

Ansible Playbooks

Playbooks са шаблони, където кодът на Ansible е написан, следователно насочва самия Ansible какво да изпълни по подобен начин на списък със задачи. Те са написани във формат YAML (Yet Another Markup Language). Всеки съдържа операции стъпка по стъпка, които се следват от потребителя на определена машина, които се изпълняват последователно. Тяхната структура се състои от една или повече пиеси. Play е основно кодов блок, който картографира набор от инструкции, дефинирани срещу конкретен хост.

Често използвани YAML маркери в Ansible

  1. име

    Това е маркерът, който дефинира името на Ansible playbook. Препоръчително е да зададете име, което точно определя какво ще прави.

  2. хостове

    Това дефинира хост група или списък от хостове, срещу които трябва да се изпълняват дефинираните задачи. Това е задължителен маркер, който казва на Ansible на кои хостове да изпълнява задачите, които са изброени. Тъй като задачите могат да се изпълняват на множество машини, същите или отдалечени машини, може да се дефинира група от запис на хостове в този маркер.

  3. vars

    Както всеки друг език за програмиране, ще ви трябват променливи. С този маркер можете да дефинирате променливи, които ще използвате във вашата книга.

  4. задачи

    Този маркер ще ви позволи да изброите набор от задачи, които трябва да бъдат изпълнени. Задачите всъщност са действия, които човек трябва да извърши. Поле за задача дефинира името на задачата, което по същество помага на текста за потребителя по време на отстраняване на грешки в книгата за игри. Част от кода, дефинирана като модул, се свързва вътрешно от всяка задача и всички аргументи, които трябва да се използват в модула, се предават през маркера tasks.

Една проста структура на книгата изглежда така...

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

Написване на прост Playbook за инсталиране и стартиране на MongoDB

  1. Разрешаване на Root SSH достъп

    Някои настройки на управлявани възли може да ви попречат да влезете като root потребител, следователно трябва да дефинирате книга за игри, за да разрешите това. Ще създадем playbook enable-root-access.yml, който ще изглежда така

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

    Когато изпълните командата

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

    Трябва да видите нещо като

    PLAY [ansible-test] ***********************************************************
    GATHERING FACTS ***************************************************************
    TASK: [Enable root login] *****************************************************
    PLAY RECAP ********************************************************************
  2. Избор на хостове и потребители в mongodbInstall.yaml

    ---
    - hosts: ansible-test
      remote_user: root
      become: yes
  3. Добавяне на задачи за изпълнение

    Задачите се изпълняват последователно, така че трябва да ги очертаем последователно, т.е.

    1. apt_key за добавяне на ключове за хранилище. Първо трябва да се импортира публичен GPG ключ на MongoDB
      - name: Import the public key used by the package management system
          apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
    2. Добавяне на MongoDB apt_repository
      - name: Add MongoDB repository
        apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
    3. Инсталиране на пакети и стартиране на mongod, след което презареждане на локалната база данни за пакети
      - name: install mongodb
        apt: pkg=mongodb-org state=latest update_cache=yes
        notify:
        - start mongodb
    4. Управление на услуги, използване на манипулатор за стартиране и рестартиране на услуги
      handlers:
        - name: start mongodb
          service: name=mongod state=started
Severalnines Станете DBA на MongoDB – Пренасяне на MongoDB в Производството Научете какво трябва да знаете, за да внедрите, наблюдавате, управлявате и мащабирате MongoDB Изтеглете безплатно

Общият код на книгата трябва да изглежда така

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

След това можем да стартираме този файл с ansible, като използваме командата

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

Ако книгата е изпълнена успешно, трябва да видите това във вашия терминал

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

Ако сега стартирате mongo, ще бъдете насочени към 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

Заключение

Ansible е проста ИТ машина с отворен код, която автоматизира внедряването на приложения, оркестрирането на услугите и предоставянето на облак.

Той работи чрез свързване на възли на база данни и изтласкването им дефинира инструкции, известни като модули, изпълнява ги чрез SSH по подразбиране и след това се отървава от тях, когато приключи. Той не изпълнява никакви демони или сървъри, следователно може да се стартира от всяка отдалечена машина. В следващия урок ще обсъдим как да поддържаме реплика на MongoDB, набор в облака, използвайки Ansible.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Местоположение в mongoose, mongoDB

  2. TypeError:ObjectId('') не може да се сериализира в JSON

  3. MongoDB $substrBytes

  4. MongoDB поле за преименуване на база данни в масива

  5. Многостепенна йерархия на данните на Ember с вградени винаги