sql >> Database >  >> NoSQL >> MongoDB

Een gids voor implementatie en onderhoud van MongoDB met behulp van Puppet:deel 2

In de vorige blog hebben we je laten zien hoe je onze machine instelt met de Puppet en vervolgens MongoDB installeert en configureert. Aangezien we een aantal knooppunten of liever machines gaan configureren, hebben we een poppenspeler nodig. In ons geval zullen we echter een git-repository maken waar we onze manifesten zullen pushen en toepassen op onze machines.

Om een ​​lokale git-repository aan te maken, selecteert u eerst het pad dat u wilt gebruiken, d.w.z. /opt/. Maak vervolgens git-repository door $sudo mkdir-repository uit te voeren. Verkrijg toestemming van de rootgebruiker om de inhoud van deze map te wijzigen door de opdracht $sudo chown vagrant:vagrant repository uit te voeren. Om deze map te initialiseren als een git-repository na het geven van de opdracht $ cd repository, voer je $ git init --bare --shared uit als je naar deze map navigeert, zou je nu iets moeten zien als

[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

Dit is de basisstructuur van een git-repository en de opties --bare en --share stellen ons in staat om bestanden uit de map te pushen en eruit te halen.

We moeten een systeem opzetten dat communicatie tussen de betrokken machines en deze externe masterserver mogelijk maakt. Het systeem wordt in dit geval een daemon genoemd. De daemon accepteert verzoeken van externe hosts om bestanden naar deze repository te trekken of te pushen. Geef hiervoor het commando $git daemon --reuseaddr --base-path=/opt/ --export-all --enable=receive-pack

Het is echter een goede gewoonte om een ​​bestand te maken van waaruit we dit op de achtergrond kunnen uitvoeren. We moeten daarom de service instellen door de opdracht sudo vim /etc/systemd/system/gitd uit te geven. onderhoud. Vul het in het nieuwe bestand met deze inhoud

[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

Sla het bestand op en sluit af door op te drukken, typ vervolgens :x en druk op . Om de server te starten, voer je het commando $ systemctl start gitd uit. Gebruik voor de authenticatie het wachtwoord dat we in dit geval hebben ingesteld zwerver. U zou zoiets als dit te zien moeten krijgen 

[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

Als we nu $ git clone git://198.168.1.100/repository uitvoeren (vergeet niet om het IP-adres te wijzigen met het netwerk-IP van uw machine) in de hoofdmap, krijgt u een nieuw gemaakte repositorymap . Vergeet niet om uw inloggegevens te configureren door het e-mailadres en wachtwoord in het configuratiebestand te verwijderen. Voer $ git config --global --edit uit om dit bestand te openen.

Deze repository zal fungeren als onze centrale server voor alle manifesten en variabelen.

De omgeving instellen

We moeten nu de omgeving instellen van waaruit we de knooppunten gaan configureren. Schakel eerst over naar de zwervende map en kloon de repository die we zojuist hebben gemaakt met dezelfde opdracht als hierboven.

 Verwijder de manifest-map in de zwervende map door $rm -r manifest/ uit te voeren.

Maak een nieuwe productiemap met $ mkdir production en kloon dezelfde repository die we hierboven hebben gemaakt met $ git clone git://198.168.1.100/repository . (vergeet de punt aan het einde niet)

 Kopieer en plak de inhoud van de puppetlabs-productieomgeving in deze productiemap door cp -pr /etc/puppetlabs/code/environments/production/* op te geven. Uw productiedirectory zou er nu zo uit moeten zien

[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

We moeten deze wijzigingen naar de root-repository pushen, zodat we 

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

Om te testen of de git-configuratie werkt, kunnen we de inhoud in de map /etc/puppetlabs/code/environments/production/ verwijderen door $ sudo rm -r * in deze map uit te voeren en vervolgens te pullen de bestanden van de hoofdrepository als rootgebruiker, d.w.z. $ git clone git://198.168.1.100/repository . (vergeet de punt op het einde niet). Alleen mappen met inhoud worden in dit geval opgehaald, dus u kunt de mappen met manifesten en modules missen. Deze bewerkingen kunnen worden uitgevoerd op alle betrokken machines, ofwel de hoofdpop- of clientcomputer. Onze taken zullen dus zijn de wijzigingen van de hoofdserver te halen en de wijzigingen toe te passen met behulp van de manifesten.

Uitvoeringsmanifest

Dit is het script dat we gaan schrijven om ons te helpen wijzigingen door te voeren en deze automatisch toe te passen op onze andere knooppunten. U moet niet alleen de productieomgeving gebruiken, u kunt ook zoveel mogelijk omgevingen toevoegen en vervolgens de marionet dicteren waaruit u moet zoeken. In de hoofddirectory productie/manifesten maken we het uitvoeringsmanifest als puppet_exec.pp en vullen het met de volgende inhoud

 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'

}

Bestand is een hulpmiddel dat is beschreven om de marionettenmanifesten uit te voeren. Voeg een geschikt pad toe voor het bestand dat we maken en vul het met de opdrachten die moeten worden gegeven wanneer het wordt uitgevoerd.

De opdrachten worden systematisch uitgevoerd, dat wil zeggen dat we eerst naar de productieomgeving navigeren, de wijzigingen in de repository ophalen en ze vervolgens op de machine toepassen.

We leveren de manifestenmap aan elk knooppunt van waaruit het het manifest kan selecteren dat ernaartoe is gericht voor toepassing.

Een duur waarover het uitvoeringsbestand moet worden uitgevoerd, wordt ook ingesteld. Voer in dit geval voor elk uur het bestand 4 keer uit.

Om dit toe te passen op onze huidige machine, $ cd /vagrant/production. Voeg alles toe aan git door $ git add * uit te voeren, vervolgens $ git commit -m "voeg de cron-configuraties toe" en als laatste $ git push. Navigeer nu naar $ cd /etc/puppetlabs/code/environments/production/ en $ sudo git pull

Als we nu de map manifests in deze map controleren, zou je de puppet_exec.pp moeten zien die is gemaakt zoals we zojuist hadden gedefinieerd.

Als we nu $ sudo puppet toepassen manifests/ en controleren of de bestanden exec-puppet zijn aangemaakt $ cat /usr/local/bin/exec-puppet

De inhoud van dit bestand moet 

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

Op dit punt hebben we gezien hoe we wijzigingen in onze hoofdmachine kunnen aanbrengen en pushen, die op alle andere knooppunten moeten worden toegepast. Als we $ sudo crontab -l uitvoeren, worden enkele belangrijke waarschuwingen gemarkeerd in het gemaakte exec-poppenbestand.

# 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

De machines configureren

Laten we zeggen dat ons zwervende bestand eruitziet als

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

In dit geval hebben we de poppenmachine waar we onze configuraties hebben gedaan en dan de db-machine. Nu gaan we de machine automatiseren zodat wanneer de db-machine wordt gestart, deze al een marionet heeft geïnstalleerd en het cron-bestand al beschikbaar is om de manifesten op te halen en dienovereenkomstig toe te passen. U moet de inhoud van de db-machine als volgt herstructureren

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

Tot nu toe zou de structuur van uw poppenmap er ongeveer zo uit moeten zien

Als u nu de db-machine uitvoert met het commando $ vagrant up db, zullen enkele bronnen worden geïnstalleerd en de script dat we zojuist hebben gedefinieerd, kunt u vinden in de directory productie/manifesten. Het is echter raadzaam om de poppenspeler te gebruiken die beperkt is tot slechts 10 knooppunten voor de gratis versie, anders moet u zich abonneren op een abonnement. Puppet master biedt meer functies en het distribueren van manifesten naar meerdere knooppunten, rapportagelogboeken en meer controle over de knooppunten.

Mongodb-poppenmodule

Deze module wordt gebruikt bij de installatie van MongoDB, het beheren van de mongod-serverinstallatie, de configuratie van de mongod-daemon en het beheer van de Ops Manager-configuratie naast de MongoDB-mms-daemon.

Conclusie

In de volgende blog laten we je zien hoe je een MongoDB Replica Set en Shards implementeert met Puppet.


  1. maak snel een voorbeeld-hbase-tabel

  2. Redis-winkelsleutel zonder waarde

  3. Redis of Mongo om te bepalen of een getal binnen een bereik valt?

  4. Hoe kan ik slechts één database opslaan in Redis?