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

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

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

За да създадете локално git хранилище, първо изберете пътя, който искате да използвате, т.е. /opt/. След това създайте git хранилище, като стартирате  $sudo mkdir хранилище. Получете разрешение на root потребител за промяна на съдържанието на тази директория, като издадете командата  $sudo chown vagrant:vagrant repository. За да инициализирате тази директория като git хранилище след издаване на командата $ cd repository, изпълнете $ git init --bare --shared, ако отидете до тази директория, сега трябва да видите нещо като

[email protected]:/vagrant/repository$ ls -l

total 12

-rw-rw-r-- 1 vagrant vagrant  23 Jul 15 07:46 HEAD

drwxr-xr-x 1 vagrant vagrant  64 Jul 15 07:46 branches

-rw-rw-r-- 1 vagrant vagrant 145 Jul 15 07:46 config

-rw-rw-r-- 1 vagrant vagrant  73 Jul 15 07:46 description

drwxr-xr-x 1 vagrant vagrant 352 Jul 15 07:46 hooks

drwxr-xr-x 1 vagrant vagrant  96 Jul 15 07:46 info

drwxr-xr-x 1 vagrant vagrant 128 Jul 15 07:46 objects

drwxr-xr-x 1 vagrant vagrant 128 Jul 15 07:46 refs

-rw-r--r-- 1 vagrant vagrant   0 Jul 1 15:58 test.pp

Това е основната структура на git хранилище и опциите --bare и --share ще ни позволят да натискаме и изтегляме файлове от директорията.

Трябва да настроим система, която ще позволи комуникация между участващите машини и този отдалечен главен сървър. Системата в този случай ще се нарича демон. Демонът ще приема заявки от отдалечени хостове за изтегляне или пускане на файлове в това хранилище. За да направите това, издайте командата $git daemon --reuseaddr --base-path=/opt/ --export-all --enable=receive-pack

Въпреки това добрата практика ще бъде да създадем файл, от който можем да стартираме това във фонов режим. Следователно трябва  да настроим услугата, като издадем командата sudo vim /etc/systemd/system/gitd. обслужване. В новия файл го попълнете с това съдържание

[Unit]

Description=Git Repo Server Daemon

[Service]

ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/opt/ --export-all --enable=receive-pack

[Install]

WantedBy=getty.target

DefaultInstance=ttyl

Запазете файла и излезте, като натиснете , след това въведете :x и натиснете . За да стартирате сървъра, изпълнете командата $ systemctl start gitd. За удостоверяване използвайте паролата, която сме задали в този случай vagrant. Трябва да ви бъде представено нещо подобно 

[email protected]:/opt/repository$ systemctl start gitd

==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===

Authentication is required to start 'gitd.service'.

Authenticating as: vagrant,,, (vagrant)

Password: 

==== AUTHENTICATION COMPLETE ===

To check if the service is running $ ps -ef | grep git and you will get: 

[email protected]:/opt/repository$ ps -ef | grep git

root      1726 1  0 07:48 ?     00:00:00 /usr/bin/git daemon --reuseaddr --base-path=/opt/ --export-all --enable=receive-pack

root      1728 1726  0 07:48 ?     00:00:00 git-daemon --reuseaddr --base-path=/opt/ --export-all --enable=receive-pack

vagrant   1731 1700  0 07:48 pts/0    00:00:00 grep --color=auto git

Сега, ако стартираме $ git clone git://198.168.1.100/repository (не забравяйте да промените IP адреса с мрежовия IP на вашата машина) в основната директория, ще получите новосъздадена папка на хранилището . Не забравяйте да конфигурирате вашите идентификационни данни, като декомментирате имейла и паролата в конфигурационния файл. Изпълнете $ git config --global --edit за достъп до този файл.

Това хранилище ще действа като наш централен сървър за всички манифести и променливи.

Настройка на средата

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

 Премахнете директорията на манифеста в папката vagrant, като изпълните $rm -r manifest/.

Направете нова производствена папка с $ mkdir production и клонирайте същото хранилище, което създадохме по-горе, с $ git clone git://198.168.1.100/repository . (не забравяйте точката в края)

 Копирайте и поставете съдържанието на производствената среда puppetlabs в тази производствена папка, като издадете cp -pr /etc/puppetlabs/code/environments/production/*. Вашата производствена директория вече трябва да изглежда така

[email protected]:/vagrant/production$ ls -l

total 8

drwxr-xr-x 1 vagrant vagrant  64 Apr 26 18:50 data

-rw-r--r-- 1 vagrant vagrant 865 Apr 26 18:50 environment.conf

-rw-r--r-- 1 vagrant vagrant 518 Apr 26 18:50 hiera.yaml

drwxr-xr-x 1 vagrant vagrant  96 Jul 2 10:45 manifests

drwxr-xr-x 1 vagrant vagrant  64 Apr 26 18:50 modules

-rw-r--r-- 1 vagrant vagrant   0 Jul 1 16:13 test.pp

Трябва да изпратим тези промени в основното хранилище, за да стартираме 

$ git add * && git commit -m "adding production default files" && git push

За да тестваме дали конфигурацията на git работи, можем да изтрием съдържанието в директорията /etc/puppetlabs/code/environments/production/, като изпълним $ sudo rm -r * в тази директория и след това издърпаме файловете от главното хранилище като root потребител, т.е. $ git clone git://198.168.1.100/repository . (не забравяйте точката в края). В този случай се изтеглят само директории със съдържание, така че може да пропуснете папките с манифести и модули. Тези операции могат да се извършват  на всички участващи машини или главна кукла или клиентска машина. Така че нашите задачи ще бъдат изтегляне на промените от главния сървър и прилагане на промените с помощта на манифестите.

Манифест за изпълнение

Това е скриптът, който ще напишем, за да ни помогне да изтегляме промените и да ги прилагаме автоматично към другите ни възли. Не само трябва да използвате производствената среда,  можете да добавите възможно най-много среди, след което да диктувате марионетка от коя да търсите. В основната директория  production/manifests ще създадем манифеста за изпълнение като puppet_exec.pp и ще го попълним със следното съдържание

 file { "This script will be pulling and applying the puppet manifests":

path => '/usr/local/bin/exec-puppet',

content => 'cd /etc/puppetlabs/code/environments/production/ && git pull; /opt/puppetlabs/bin/puppet apply manifests/'

mode => "0755"

}

cron {'exec-puppet':

command => '/usr/local/bin/exec-puppet',

hour => '*',

minute => '*/15'

}

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

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

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

Задава се и продължителност, през която трябва да се изпълнява изпълнителният файл. В този случай за всеки час изпълнявайте файла 4 пъти.

За да приложите това към нашата текуща машина, $ cd /vagrant/production. Добавете всичко към git, като изпълните $ git add *, след това $ git commit -m „добавете конфигурациите на cron“ и накрая $ git push. Сега отидете до $ cd /etc/puppetlabs/code/environments/production/ и $ sudo git pull

Сега, ако проверим папката с манифести в тази директория, трябва да видите puppet_exec.pp, създаден, както току-що дефинирахме.

Сега, ако стартираме $ sudo puppet apply manifests/ и проверете дали файловете exec-puppet са създадени $ cat /usr/local/bin/exec-puppet

Съдържанието на този файл трябва да бъде 

cd /etc/puppetlabs/code/environments/production/ && git pull; /opt/puppetlabs/bin/puppet apply manifests/

На този етап видяхме как можем да изтегляме и натискаме промени в нашата главна машина, които трябва да бъдат приложени към всички останали възли. Ако изпълним $ sudo crontab -l, някои важни предупреждения се подчертават в създадения файл exec-puppet.

# HEADER: This file was autogenerated at 2019-07-02 11:50:56 +0000 by puppet.

# HEADER: While it can still be managed manually, it is definitely not recommended.

# HEADER: Note particularly that the comments starting with 'Puppet Name' should

# HEADER: not be deleted, as doing so could cause duplicate cron jobs.

# Puppet Name: exec-puppet

*/15 * * * * /usr/local/bin/exec-puppet

Конфигуриране на машините

Да кажем, че нашият скитнически файл изглежда така

Vagrant.configure("2") do |config|

  config.vm.define "puppet" do |puppet|

   puppet.vm.box = "bento/ubuntu-16.04"

   #puppet.vm.hostname = "puppet"

   #puppet.vm.network "private_network", ip: "192.168.1.10"

  end

  config.vm.define "db" do |db|

    db.vm.box = "bento/ubuntu-16.04"

  end

end

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

config.vm.define "db" do |db|

    db.vm.box = "bento/ubuntu-16.04"

    vm.provision "shell", inline: <<-SHELL

      cd /temp

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

      dpkg -i puppet5-release-xenial.deb

      apt-get update

      apt-get install -y puppet-agent

      apt-get install -y git

      rm -rf /etc/puppetlabs/code/environments/production/*

      cd /etc/puppetlabs/code/environments/production/

      git clone git://198.168.1.100/repository .

      /opt/puppetlabs/bin/puppet apply /etc/puppetlabs/code/environments/production/manifests/puppet_exec.pp

    SHELL

  End

До този етап структурата на вашата марионетна директория трябва да бъде нещо подобно

Ако сега стартирате db машината с команда $ vagrant up db, някои от ресурсите ще бъдат инсталирани и скриптът, който току-що дефинирахме, може да бъде намерен в директорията production/manifests. Въпреки това е препоръчително да използвате кукловода, който е ограничен само до 10 възела за безплатната версия, в противен случай ще трябва да се абонирате за план. Puppet master предлага повече функции и разпространение на манифести към множество възли, отчетни регистрационни файлове и повече контрол върху възлите.

Куклен модул Mongodb

Този модул се използва при инсталирането на MongoDB, управлението на инсталацията на mongod сървъра, конфигурирането на демона mongod и управлението на настройката на Ops Manager освен демона MongoDB-mms.

Заключение

В следващия блог ще ви покажем как да разположите MongoDB Replica Set и Shards с помощта на Puppet.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb групиране и сортиране

  2. Актуализирайте множество елементи в масив в mongodb

  3. Не може да се създаде/отваря файл за заключване:/data/mongod.lock errno:13 Отказано разрешение

  4. Импортирайте CSV файл в MongoDB с mongoimport

  5. Golang + MongoDB вграден тип (вграждане на структура в друга структура)