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

Ръководство за внедряване и поддръжка на MongoDB с помощта на Puppet:Част 1

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

Например, да приемем, че имате сървъри A, B, C и D, решавате да инсталирате MongoDB на всеки, но по-късно осъзнавате, че има нова версия, която е трябвало да използвате. Когато имате голям брой сървъри и трябва да актуализирате версията на MongoDB, ръчното им конфигуриране (един по един) има много неуспехи. Тези неуспехи могат да включват; преконфигурирането отнема твърде много време (следователно вашият сайт ще има дълъг престой) или прави вашата БД податлива на някои грешки в конфигурацията.

Освен това винаги има повтарящи се задачи, които искате да се изпълняват автоматично, вместо да се подлагате на едни и същи стъпки отново и отново, всеки път, когато искате да направите подобни промени. В даден момент също трябва да научим нови модули, що се отнася до технологичния напредък, които могат да ни помогнат да повишим производителността на клъстера

Казано по-просто, имаме нужда от системи за автоматизация, които могат да облекчат всички споменати начинания. Puppet е една от най-предпочитаните софтуерни системи за постигане на това, тъй като:

  • Лесно и по-бързо е да конфигурирате и разгръщате MongoDB клъстер.
  • Повтарящите се задачи могат лесно да бъдат автоматизирани, така че да се изпълняват автоматично по-късно.
  • Цялата клъстерна инфраструктура може да се управлява колективно от една платформа.
  • Лесно осигуряване за нови възли в облачна, хибридна или физическа среда.
  • Оркестрирайте промените и събитията в клъстер от възли.
  • Открийте ресурси за минути, които могат да ви помогнат да изпълнявате лесно различни задачи.
  • Мащатира добре от 1 до 200k възли.
  • Поддържа се от редица платформи

Какво е Puppet?

Puppet е език, който се използва за привеждане на машина в желано състояние или по-скоро е двигател, който се използва за интерпретиране и прилагане на определени инструкции към обслужваща система. Подобно на Ansible, Puppet също е инструмент за управление на конфигурацията, използван за автоматизиране и изпълнение на задачи от клъстер на база данни. Въпреки това, той е по-напреднал и добре установен, като се има предвид, че е най-старият, следователно много ново интегрирани функции, които биха го направили по-сложен от останалите. Една от основните причини да предпочитам Puppet лично е възможността, която ми дава да конфигурирам голям брой възли, свързани заедно с балансьори на натоварване, мрежови устройства или защитни стени. Puppet често се използва в големи предприятия със сложна среда.

Как работи Puppet

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

Идемпотентност

Работният процес на идемпотентност е показан по-долу:

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

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

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

Основни компоненти на куклите

  1. Ресурси за кукли

    Това са ключовите компоненти за моделиране на конкретна машина, чиито описания ще приведат машината в желаното състояние.

  2. Доставчици

    Доставчиците са конкретни ресурси, използвани за добавяне на пакети към системата, напр. yum и apt-get. Има доставчици по подразбиране, но човек може да добави още, когато има нужда от някои пакети.

  3. Манифест

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

    Структурата трябва да е

    resource:{‘module’:
    	attribute => value
    }

    Например, инсталирайки mongodb, можем да имаме файл на манифест, наречен Mongodb.pp със следното съдържание:

    package {‘mongodb’:
    		ensure => installed
         }
  4. Модули

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

  5. Шаблони

    Шаблоните се използват за дефиниране на персонализирано съдържание и въвеждане на променливи. Те използват синтаксиса на Ruby, т.е. ако искате да дефинирате порт, който да слушате:

    Listen <% [email protected]_number %>

    Променливата Port_number в този случай е дефинирана в манифеста, който препраща към този шаблон.

  6. Статични файлове

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

Инсталация на кукла

За целите на обучението ще инсталираме и конфигурираме марионетка във виртуална машина, която ще създадем в нашата локална машина. Преди всичко ще трябва да инсталирате virtualbox и vagrant. След като инсталирате, отворете нов терминал и създайте директория Puppet вероятно на вашия работен плот и изпълнете командата $ vagrant init. Това ще създаде виртуална машина и ще я обозначи като скитница. След това можем да влезем в тази машина с командата $ vagrant ssh.

Ако получите екран като този по-долу, вашата машина е готова и работи.

В противен случай, ако сте на сървърна машина, можете да игнорирате тази стъпка и да продължите с добавянето на марионетния пакет, както е по-долу.

Добавете марионетния пакет с командата

$ wget https://apt.puppetlabs.com/puppet5-release-xenial.deb

След това разопаковайте пакета и инсталирайте с

$ sudo dpkg -i puppet5-release-xenial.deb

Трябва да актуализираме нашите хранилища, за да стартираме

$ sudo apt-get update

Инсталирайте puppet-agent, като стартирате

$ sudo apt-get install puppet-agent

След като инсталацията приключи, можем да потвърдим, като проверим версията. Може да се наложи да излезете от вашата виртуална машина, за да може пътят на Puppet да бъде добавен към средата, след което изпълнете $ puppet --version или ако не сте излезли, изпълнете $ /opt/puppetlabs/bin/puppet --version. Ако получите номер на версия като 5.5.14, тогава инсталацията е била успешна.

След като инсталираме MongoDB с помощта на Mongodb.pp, който създадохме по-горе, можем просто да напишем някаква задача за настройка на продукти за база данни и също така да добавим потребител към тази db.

„Mongodb_database“ се използва за създаване и управление на бази данни в MongoDB

mongodb_database{‘products’:
	ensure => present,
            tries => 10
}

„Mongodb_user може да се използва за създаване и управление на потребители в база данни на MongoDB.“

За да добавите потребител към базата данни „продукти“

mongodb_user {userprod:
  username => ‘prodUser’,
  ensure => present,
  password_hash => mongodb_password(‘prodUser’, ‘passProdser’),
  database => prodUser,
  roles => [‘readWrite’, ‘dbAdmin’],
  tries  => 10
}

Заключение

В този блог научихме какво е Puppet, достойнствата, свързани с него, и неговата работна архитектура. Puppet е малко по-сложен от другите инструменти за управление (като Chef и Ansible), но има много модули, които могат да се използват за разрешаване на проблеми около управлението на база данни. В следващата част ще обсъдим как да свързваме отдалечени машини, така че да могат да бъдат преконфигурирани с помощта на дефинираните файлове на манифест.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb заявка с полета в същите документи

  2. Как да конвертирате изглед на MongoDB в колекция

  3. актуализация на MongoDB()

  4. Не можа да се свърже със сървър 127.0.0.1:27017

  5. Каква е разликата между запазване и вмъкване в Mongo DB?