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

Průvodce nasazením a údržbou MongoDB pomocí loutky:Část 2

V předchozím blogu jsme vám ukázali, jak nastavit náš stroj pomocí Puppet a poté nainstalovat a nakonfigurovat MongoDB. Protože budeme konfigurovat řadu uzlů nebo spíše strojů, potřebujeme loutkáře. V našem případě však vytvoříme  repozitář git, kam vložíme naše manifesty a aplikujeme je na naše počítače.

Chcete-li vytvořit místní úložiště git, nejprve vyberte cestu, kterou chcete použít, tj. /opt/. Poté vytvořte úložiště git spuštěním repozitáře $sudo mkdir. Získejte oprávnění uživatele root ke změně obsahu tohoto adresáře vydáním příkazu  $sudo chown vagrant:vagrant repository. Chcete-li tento adresář inicializovat jako úložiště git po zadání příkazu $ cd repository, spusťte $ git init --bare --shared, pokud přejdete do tohoto adresáře, měli byste nyní vidět něco jako

[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

Toto je základní struktura git repozitáře a volby --bare a --share nám umožní vkládat a stahovat soubory z adresáře.

Musíme nastavit systém, který umožní komunikaci mezi zapojenými stroji a tímto vzdáleným hlavním serverem. Systém v tomto případě bude označován jako démon. Démon bude přijímat požadavky od vzdálených hostitelů na stahování nebo odesílání souborů do tohoto úložiště. Chcete-li to provést, zadejte příkaz $git daemon --reuseaddr --base-path=/opt/ --export-all --enable=receive-pack

Dobrým postupem však bude vytvořit soubor, ze kterého to budeme moci spouštět na pozadí. Službu tedy musíme  nastavit zadáním příkazu sudo vim /etc/systemd/system/gitd. servis. V novém souboru jej naplňte tímto obsahem

[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

Uložte soubor a ukončete jej stisknutím , poté zadejte :xa stiskněte . Pro spuštění serveru spusťte příkaz $ systemctl start gitd. Pro ověření použijte heslo, které jsme v tomto případě nastavili vagrant. Mělo by se vám zobrazit něco takového 

[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

Pokud nyní v kořenovém adresáři spustíme $ git clone git://198.168.1.100/repository (nezapomeňte změnit IP adresu podle síťové IP vašeho počítače), získáte nově vytvořenou složku úložiště . Nezapomeňte nakonfigurovat své přihlašovací údaje zrušením komentáře e-mailu a hesla v konfiguračním souboru. Spusťte $ git config --global --edit pro přístup k tomuto souboru.

Toto úložiště bude fungovat jako náš centrální server pro všechny manifesty a proměnné.

Nastavení prostředí

Nyní musíme nastavit prostředí, ze kterého budeme konfigurovat uzly. Nejprve se přepněte do adresáře vagrant a naklonujte úložiště, které jsme právě vytvořili, pomocí stejného příkazu jako výše.

 Odstraňte adresář manifestu ve složce vagrant spuštěním $rm -r manifest/.

Vytvořte novou produkční složku pomocí $ mkdir production a naklonujte stejné úložiště, které jsme vytvořili výše, pomocí $ git clone git://198.168.1.100/repository . (nezapomeňte na tečku na konci)

 Zkopírujte a vložte obsah produkčního prostředí puppetlabs do této produkční složky zadáním cp -pr /etc/puppetlabs/code/environments/production/* . Váš produkční adresář by nyní měl vypadat takto

[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

Tyto změny musíme odeslat do kořenového úložiště, abychom spustili 

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

Chceme-li otestovat, zda konfigurace git funguje, můžeme smazat obsah v adresáři /etc/puppetlabs/code/environments/production/ spuštěním $ sudo rm -r * v tomto adresáři a poté vytáhnout soubory z hlavního úložiště jako uživatel root, tj. $ git clone git://198.168.1.100/repository . (nezapomeňte na tečku na konci). V tomto případě se stahují pouze adresáře s obsahem, takže můžete přehlédnout složky manifestů a modulů. Tyto operace lze provádět na všech zařízeních, ať už jde o hlavní loutkové nebo klientské zařízení. Naším úkolem tedy bude stáhnout změny z hlavního serveru a aplikovat změny pomocí manifestů.

Manifest provedení

Toto je skript, který se chystáme napsat, aby nám pomohl stáhnout změny a automaticky je aplikovat na naše ostatní uzly. Nejen, že musíte používat produkční prostředí, můžete přidat co nejvíce prostředí a poté diktovat loutce, ze které chcete hledat. V kořenovém adresáři  production/manifests vytvoříme prováděcí manifest jako puppet_exec.pp a naplníme jej následujícím obsahem

 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'

}

Soubor je prostředek, který byl popsán pro spouštění loutkových manifestů. Přidejte vhodnou cestu k souboru, který vytváříme, a naplňte jej příkazy, které mají být vydány při jeho spuštění.

Příkazy jsou prováděny systematicky, to znamená, že nejprve přejdeme do produkčního prostředí, vytáhneme změny z úložiště a poté je aplikujeme na stroj.

Každému uzlu dodáváme adresář manifestů, ze kterého si může vybrat manifest, který je na něj směrován pro aplikaci.

Je také nastavena doba, po kterou má být spouštěcí soubor spuštěn. V tomto případě pro každou hodinu spusťte soubor 4krát.

Chcete-li to použít na náš aktuální stroj, $ cd /vagrant/production. Přidejte vše do git spuštěním $ git add *, poté $ git commit -m „přidejte konfigurace cronu“ a nakonec $ git push. Nyní přejděte na $ cd /etc/puppetlabs/code/environments/production/ a $ sudo git pull

Pokud nyní zkontrolujeme složku manifestů v tomto adresáři, měli byste vidět soubor puppet_exec.pp vytvořený tak, jak jsme právě definovali.

Pokud nyní spustíme $ sudo puppet aplikujte manifesty/ a zkontrolujeme, zda byly vytvořeny soubory exec-puppet $ cat /usr/local/bin/exec-puppet

Obsah tohoto souboru by měl být 

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

V tuto chvíli jsme viděli, jak můžeme stáhnout a odeslat změny do našeho hlavního počítače, které by měly být aplikovány na všechny ostatní uzly. Pokud spustíme $ sudo crontab -l, některá důležitá varování se zvýrazní ve vytvořeném souboru 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

Konfigurace počítačů

Řekněme, že náš soubor tuláků vypadá takto

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

V tomto případě máme loutkový stroj, kde jsme prováděli naše konfigurace, a poté db stroj. Nyní musíme automatizovat stroj tak, aby při každém spuštění db stroj měl již nainstalovanou loutku a soubor cron již dostupný pro stažení manifestů a jejich odpovídající použití. Budete muset restrukturalizovat obsah db stroje, aby vypadal následovně

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

Až do této fáze by struktura vašeho adresáře loutek měla vypadat nějak takto

Pokud nyní spustíte db stroj příkazem $ vagrant up db, nainstalují se některé prostředky a skript, který jsme právě definovali, lze nalézt v adresáři production/manifests. Je však vhodné použít loutkového mistra, který je omezen na pouze 10 uzlů pro bezplatnou verzi, jinak si budete muset předplatit plán. Puppet master nabízí více funkcí a distribuci manifestů do více uzlů, protokoly hlášení a větší kontrolu nad uzly.

Mongodb loutkový modul

Tento modul se používá při instalaci MongoDB, správě instalace serveru mongod, konfiguraci démona mongod a správě nastavení Ops Manager kromě démona MongoDB-mms.

Závěr

V příštím blogu vám ukážeme, jak nasadit MongoDB Replica Set a Shards pomocí Puppet.


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

  2. jak získat přístup k relaci soketu ve všech clusterech

  3. Jak mohu zkombinovat více kolekcí do jedné kolekce pomocí $lookup mongodb nebo nodejs mongodb?

  4. MongoDB Write Concern:3 Must Know Caveats